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 基本要約推奨事項 (テキスト形式)

推薦する

MySQL トリガーの使用シナリオとメソッドの例

トリガー:トリガーの使用シナリオと対応するバージョン:トリガーは次の MySQL バージョンで使用で...

Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...

Dockerイメージ解析ツールのダイブ原理解析

今日は、Docker イメージ、各レイヤーの内容を調べ、Docker/OCI イメージのサイズを縮小...

ソースコードの観点からキープアライブコンポーネントのキャッシュ原理に答える

今日は、早速本題に入り、面接中に尋ねられた質問、つまりキープアライブ コンポーネントのキャッシュ原理...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

MySQL テーブルを返すとインデックスが無効になるケースの説明

導入MySQL InnoDB エンジンがレコードをクエリし、インデックス カバレッジを使用できない場...

Dockerコンテナに入る方法と出る方法

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

HTMLの基礎 HTMLの構造

HTML ファイルとは何ですか? HTML は Hyper Text Markup Language...

HTML での一般的なリダイレクト接続の例コード

コードをコピーコードは次のとおりです。 window.location.href="zcb...

Python で pymysql モジュールを使用して MySQL データベースに接続する

pymysqlをインストールするpip install pymysql 2|0pymysqlの使用2...

Jenkins でユーザー ロールの権限を設定する方法

Jenkinsのユーザーロール権限の設定には、ロール戦略プラグインのインストールが必要です。 1.ロ...

SQL効率を分析する方法を説明する

Explain コマンドは、データベースのパフォーマンス問題を解決するために最初に推奨されるコマンド...

js で虫眼鏡効果を実現するためのアイデアとコード

この記事の例では、虫眼鏡効果を実現するためのjsの具体的なコードを参考までに共有しています。具体的な...

HTML ウェブページでのアンカー(名前付きアンカー)の使用の概要

以下の情報はインターネットから収集したものです1. アンカーは、Web ページ作成におけるハイパーリ...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...