ウェブサイト検索

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


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

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

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

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

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

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

atd が実行されると、次のようにコマンドまたはタスクをスケジュールできます。次の 1 分が始まるとき (つまり、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 桁の時刻 (時と分)。

例えば、

updatedb を今日の 午後 11 時 (現在の日付が 午後 11 時 を超えている場合は明日) に実行するには、次のようにします。

echo "updatedb" | at -m 23

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

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

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

時間の指定は POSIX 標準に従います。

まとめ

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

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