Linuxで指定した時刻にジョブを実行するatコマンドについて紹介します。
atコマンドの使い方
atコマンドの書式は以下の通りです。
1 |
at [オプション] 時刻 |
atコマンドは引数に指定した時刻に、標準入力や指定したファイルを実行します。ただし、過去の時刻を入力することはできません。
オプション
-q | ジョブの優先順位をa~z・A~Zで指定する(優先度はa~Zの順で高くなる) |
-m | ジョブが完了したとき、ユーザーに完了通知メールを送る |
-f | 標準入力からではなく、ファイルからジョブを読み込む |
-l | 実行予定のジョブ一覧を表示する |
-d, -r | 指定したジョブ番号のジョブを削除する |
-v | ジョブが実行される時刻を表示する |
-c | コマンドラインで入力したジョブを標準出力に表示する |
指定した時刻にコマンドを実行する
以下は、「touch a.txt」を当日の20:00に実行する例です。ただし、20:00を過ぎている場合は翌日の20:00にジョブが実行されます。
1 2 3 4 |
$ at 20:00 at> touch a.txt at> <EOT> job 7 at 2016-10-14 20:00 |
atコマンドを実行すると入力が求められるので、そこに実行したいジョブを入力します。入力を終了するときは「Ctrl+D」を入力します。
ファイルを指定する
「-f」オプションを使用してファイルを指定します。以下は、a.shというファイルを実行する例です。
1 2 |
$ at -f a.sh 20:00 job 8 at 2016-10-14 20:00 |
実行時刻の指定方法
時刻の指定方法はいくつか存在し、その方法について説明します。
相対的に時間を指定する
現在の時刻から相対的に時間を指定する場合は、指定時刻に「+」を付けて指定します。また、「now」は現在の時刻を表します。
1 2 3 4 5 6 7 8 9 10 11 |
# 5分後にコマンドを実行する $ at now +5minutes # 4:00の5時間後(9:00)にジョブを実行する $ at 4:00 +5hours # 5日後の午前4:00にジョブを実行する $ at 4am +5days # 12月24日午後7:00の4週間後のにジョブを実行する $ at 7pm Dec 24 +4weeks |
日付を指定する
日付はMMDDYY、MM/DD/YY、DD.MM.YYなどの形式で指定できます。以下の例は、すべて「2016年9月25日の4:00」にジョブが実行されます。
1 2 3 4 5 |
$ at 04:00 092516 $ at 04:00 09/25/16 $ at 04:00 09:25:16 |
特殊な時刻を指定する
いくつか特殊な意味をもつ文字列もあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 0:00(真夜中)に実行する $ at midnight # 12:00(正午)に実行する $ at noon # 16:00(お茶の時間)に実行する $ at teatime # 当日の5分後に実行する $ at today +5minutes # 翌日の20:00に実行する $ at 20:00 tomorrow |
実行予定のジョブ一覧を表示
実行予定のジョブを表示する場合は、「-l」オプションを指定します。
1 2 3 |
$ at -l 17 Sun Sep 25 14:51:00 2016 a root 18 Sun Sep 25 04:50:00 2016 a root |
表示される内容は、左側からジョブ番号、実行日時、キュー名、ユーザー名となります。
実行予定のジョブを削除
実行予定のジョブを削除する場合は、「-d」オプションの後にジョブ番号を指定します。
1 |
$ at -d 1 |
実行予定のジョブ内容を表示
実行予定のジョブ内容を表示する場合は、「-c」オプションの後にジョブ番号を指定します。
1 |
$ at -c 2 |