Linux で 1 回限りのスケジュールされたタスクを実行するための at コマンドの使用に関する詳細な説明

Linux で 1 回限りのスケジュールされたタスクを実行するための at コマンドの使用に関する詳細な説明

序文

計画されたタスクとは、計画のあるタスクであり、計画に従ってタスクを自動的に実行することを意味します。

重要なポイントは2つあります。

1 つ目はスケジュールされ、2 つ目は自動です。

1. 一度限りの計画タスクの紹介

一度だけ計画されたタスクは、計画に従って 1 回だけ実行されるタスクです。

2. コマンド

Linux の at コマンドは、1 回限りのスケジュールされたタスクを作成するために使用されます。at コマンドには、バックグラウンド モードで実行され、現在の時刻をチェックして「プラン」を実行するかどうかを決定するサービス atd があります。

デフォルトでは、atd サービスは 60 秒ごとにディレクトリをチェックします。「スケジュール」がある場合は、「スケジュール」の実行時間をチェックします。「スケジュールの実行時間」が現在の時刻と一致する場合、この「スケジュール」を実行します。

3. 1回限りのスケジュールタスクを作成する

まず、at サービスをオンにする必要があります。

systemctl スタート atd

atd のステータス(アクティブかどうか)を確認します。

システムctlステータスatd

有効になっているかどうかを確認します。

systemctl はアクティブ atd

atd サービスを停止します (1 回限りのスケジュールされたタスクは実行されなくなります)。

システムctl停止atd

[root@localhost ~]# vim /root/backup-yum-repo.sh
[root@localhost ~]# cat /root/backup-yum-repo.sh 
#!/bin/bash
mkdir /opt/yum-repo-backup-dir -p
cp -r /etc/yum.repos.d /opt/yum-repo-backup-dir/yum.repos.d-`date +"%Y-%m-%d-%H:%M:%S"`.bak
[root@localhost ~]# chmod +x バックアップyum-repo.sh 

atコマンドを使用してyumリポジトリファイルの1回限りのバックアップを実行します。atの実行結果をスムーズに表示するには、次のコマンドを使用してntp同期をオフにし、現在の時刻を設定します。

#timedatectl set-ntp 0 コマンドは ntp 同期をオフにします [root@localhost ~]# timedatectl set-ntp 0
#date -s "2021-12-1 16:58:30" 日付と時刻を設定するコマンド [root@localhost ~]# date -s "2021-12-1 16:58:30"

例 1: 特定の時間に 1 回だけスケジュールされたタスク

午後5時、つまり17時に実行します(午後を過ぎた場合は翌日に延期されます)

# 次のコマンドの <EOT> は、at に送信されたスケジュールされたタスクです。ctrl+d を使用して [root@localhost ~]# を 5:00PM に表示します。
警告: コマンドは /bin/sh を使用して実行されます
> /root/backup-yum-repo.sh で
で> <EOT>
2021年12月1日水曜日17:00:00のジョブ5
# atq 1回限りのスケジュールされたタスクを表示する [root@localhost ~]# atq
5 水曜日 12月 1 17:00:00 2021 a ルート
[root@localhost ~]# date;atq;ls /opt/yum-repo-backup-dir/
2021年12月1日水曜日 16:59:50 CST
5 水曜日 12月 1 17:00:00 2021 a ルート
[root@localhost ~]# date;atq;ls /opt/yum-repo-backup-dir/
2021年12月1日水曜日 17:00:02 CST
yum.repos.d-2021-12-01-17:00:00.bak

例 2: 特定の日付に 1 回だけスケジュールされたタスク

2021 年 12 月 12 日の現時点でスクリプトを実行します。

時間が指定されていない場合は、カスタムスケジュールタスクの時間が実行時間として使用されます。 (指定された日付が今日の場合、スケジュールされたタスクは次の1分以内に実行されます)

[root@localhost ~]# 2021-12-12 に
警告: コマンドは /bin/sh を使用して実行されます
> /root/backup-yum-repo.sh で
で> <EOT>
2021年12月12日日曜日17:07:00のジョブ6
[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート

例 3: 特定の日時に 1 回だけスケジュールされたタスク

2021年12月13日12時12分に実行

[root@localhost ~]# 2021-12-13 12:12
警告: コマンドは /bin/sh を使用して実行されます
> /root/backup-yum-repo.sh で
で> <EOT>
2021年12月13日月曜日12:12:00のジョブ7
[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート

例4: 5日後の午前9時15分に実行

[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
[root@localhost ~]# 9:15 + 5日後
警告: コマンドは /bin/sh を使用して実行されます
> /root/backup-yum-repo.sh で
で> <EOT>
2021年12月6日月曜日09:15:00のジョブ8
[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
8 月曜日 12月 6 09:15:00 2021 a ルート

例5: 月曜日に実行

[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
8 月曜日 12月 6 09:15:00 2021 a ルート
[root@localhost ~]# 月曜日
警告: コマンドは /bin/sh を使用して実行されます
> /root/backup-yum-repo.sh で            
で> <EOT>
2021年12月6日月曜日17:18:00のジョブ9
[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
8 月曜日 12月 6 09:15:00 2021 a ルート
9 月曜日 12月 6 17:18:00 2021 a ルート

注意:過去と併用はできません。後悔する薬はありません。

4. 一度限りの計画タスク管理

4.1 1回限りのスケジュールされたタスクを表示する

アトク

[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
8 月曜日 12月 6 09:15:00 2021 a ルート
9 月曜日 12月 6 17:18:00 2021 a ルート

4.2 一度だけスケジュールされたタスクを削除する

気圧

[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
8 月曜日 12月 6 09:15:00 2021 a ルート
9 月曜日 12月 6 17:18:00 2021 a ルート
[root@localhost ~]# atrm 8
[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
9 月曜日 12月 6 17:18:00 2021 a ルート

4.3 1回限りのスケジュールされたタスクの詳細情報を表示する

-c ジョブID

[root@localhost ~]# atq
6 日曜日 12月 12 17:07:00 2021 a ルート
7 月曜日 12月 13 12:12:00 2021 a ルート
9 月曜日 12月 6 17:18:00 2021 a ルート
[root@localhost ~]# -c 7 で

5. 1回限りのスケジュールされたタスクの使用制御

at.allow (/etc/at.allow)

at.deny (/etc/at.deny)

ユーザーは、at コマンドを使用して 1 回限りのスケジュールされたタスクを設定でき、スケジュールされたタスクを使用できるユーザー (ホワイトリスト内) と使用できないユーザーを制御することもできます。

一度だけスケジュールされたタスクのホワイトリストは at.allow で、ブラックリストは at.deny です。ホワイトリストとブラックリストの両方を使用することはお勧めしません。

ホワイトリストを使用することをお勧めします。at.allow は at.deny よりも優先されます。つまり、wangがホワイトリストとブラックリストの両方に載っている場合、wangは

デフォルトでは、rhel8.0 システムには at.allow ファイルはありませんが、自分で作成することができます。

# ユーザー wang をブラックリストに追加 [root@localhost ~]# cat /etc/at.deny 
王
[root@localhost ~]# su - wang
[wang@localhost ~]$ で
を使用する権限がありません。
# ユーザー wang をブラックリストとホワイトリストの両方に追加します [root@localhost ~]# cat /etc/at.allow
王
[root@localhost ~]# cat /etc/at.deny 
王
[root@localhost ~]# su - wang
[wang@localhost ~]$ で
文字化けした時間

Linux のワンタイムスケジュールタスク at コマンドの詳細な使用法に関するこの記事はこれで終わりです。Linux のワンタイムスケジュールタスクに関する関連情報をさらに知りたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux で at および cron スケジュールタスクをカスタマイズする方法
  • Linux で cron スケジュールタスクを使用する方法の詳細な説明
  • 簡単な説明: Linux cron スケジュールタスクでよく使用されるシンボルの概要
  • Linux システムでのスケジュールされたタスクの紹介

<<:  404エラーページを作成する際に注意すべき問題の簡単な分析

>>:  HTML 基本要約推奨事項 (テキスト形式)

推薦する

カルーセル効果を実現するためのネイティブJavaScript+CSS

この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...

SQL GROUP BYの詳細な説明と簡単な例

GROUP BY ステートメントは、Aggregate 関数と組み合わせて使用​​され、1 つ以上の...

Vueはメニューナビゲーションを実装するためにelement-uiを使用します

この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

Vue シングルページ アプリケーションで Markdown レンダリングを実装する

以前、Markdown をレンダリングするときに、mavonEditor のプレビュー モードを使用...

ViteでReactプロジェクトを構築する方法

目次序文Viteプロジェクトを作成する改修プロジェクトディレクトリの規則その他の構成序文毎日鳩、火ば...

MySQLデータベースのパスワードを忘れた場合の解決策

先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...

CSS は Alibaba ベクター ライブラリを使用して、対応する位置に見栄えの良いアイコン効果をすばやく追加します (サンプル コード)

Alibaba ベクターアイコンライブラリにアクセスAlibaba ベクターアイコンライブラリ好き...

Mysql general_log をクリーンアップする方法の概要

方法1: グローバル general_log を 'OFF' に設定します。 テーブ...

mysqlを完全にアンインストールします。個人テストです!

MySQL をクリーンアンインストールします。個人的にテストしたところ、今回はようやくうまくいきま...

MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません

会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...

VMware IOInsight を使用して、仮想マシンのストレージ パフォーマンスの監視を改良する

例: VMware IOInsight は、VM のストレージ I/O 動作を理解するのに役立つツー...

Tomcat のセッションと Cookie の詳細な説明

序文HTTP はステートレスな通信プロトコルです。各リクエストは互いに独立しており、サーバーは以前の...

Vueプロジェクトのパッケージ化の詳細な説明

目次1. 関連構成ケース1(使用ツールはvue-cil)ケース2(使用するツールはwebpack) ...

MySQLデッドロック問題の詳細な分析

序文私たちのビジネスがまだ初期段階にあり、同時実行の度合いが比較的低い場合、数年間はデッドロックの問...