Linuxで「at」コマンドを使用して特定の時間以降にタスクをスケジュールする方法


cronジョブスケジューラの代わりに、 at コマンドを使用すると、構成ファイルを編集せずに、特定の時間に1回実行するようにコマンドをスケジュールできます。

唯一の要件は、このユーティリティをインストールし、その実行を開始して有効にすることです。

# yum install at              [on CentOS based systems]
$ sudo apt-get install at     [on Debian and derivatives]

次に、起動時にサービスを開始して有効にします。

--------- On SystemD ---------
# systemctl start atd
# systemctl enable atd

--------- On SysVinit ---------
# service atd start
# chkconfig --level 35 atd on

atd が実行されると、次のように任意のコマンドまたはタスクをスケジュールできます。次の分が始まるときに4つのpingプローブを www.google.com に送信し(つまり、22:20:13の場合、コマンドは22:21:00に実行されます)、レポートします。コマンドを呼び出すユーザーへの電子メール( -m 、Postfixまたは同等のものが必要)による結果:

# echo "ping -c 4 www.google.com" | at -m now + 1 minute

-m オプションを使用しないことを選択した場合、コマンドは実行されますが、標準出力には何も出力されません。ただし、代わりに出力をファイルにリダイレクトすることを選択できます。

さらに、 at では、現在、正午(12:00)、深夜(00:00)の固定時刻だけでなく、カスタムの2桁(時間を表す)と4桁の時間(時と分)。

例えば、

今日の午後11時(または現在の日付が午後11時より大きい場合は明日)に updatedb を実行するには、次の手順を実行します。

# echo "updatedb" | at -m 23

今日23:55にシステムをシャットダウンするには(前の例と同じ基準が適用されます):

# echo "shutdown -h now" | at -m 23:55

最初の例のように、 + 記号と目的の時間指定を使用して、実行を分、時間、日、週、月、または年だけ遅らせることもできます。

時間仕様はPOSIX標準の対象となります。

概要

経験則として、コマンドを実行したり、明確に定義された時間に特定のタスクを1回だけ実行したりする場合は、cronジョブスケジューラの代わりにatを使用します。他のシナリオでは、cronを使用します。

次に、opensslを使用してtarアーカイブファイルを暗号化する方法について説明します。それまでは、Tecmintへの接続を維持します。