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

推薦する

Alibaba Cloud イメージリポジトリを使用して外部 Docker イメージを構築する方法の詳細な説明

Alibaba Cloud Image Repositoryを使用して外部イメージをダウンロードする...

vue+elementui+vuex+sessionStorage を使用して履歴タグ メニューを実装するためのサンプル コード

一般的には、左側にメニューがあった後、ページの上部に履歴タブ メニューを追加する必要があります。他の...

ウェブデザイナーは適した人材

<br />この世に道はない。より多くの人が歩くようになると、それは道になります。最初は...

Vueプロジェクトをパッケージ化してリリースする手順

目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...

Nginx セッション共有問題の解決策の分析

この記事は主に、Nginx セッション共有の問題に対する解決策を紹介します。記事内のサンプル コード...

Mysql binlog ログファイルが大きすぎる場合の解決策

目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

Docker を使用した JMeter+Grafana+Influxdb 監視プラットフォームの構築に関する詳細なチュートリアル

Jmeter がネイティブの結果表示機能を提供していることは誰もが知っています。ネイティブの結果表示...

JavaScript オブジェクト (詳細)

目次JavaScript オブジェクト1. 定義2. オブジェクトの分類3. オブジェクトを定義する...

VueはGraphVisを使用して無限に拡張された関係グラフを開発します

1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...