メモ。
cronがあるからあんまり使わないけど。cronが定期的に実行するのに対して、atは指定した時刻に1回だけ実行する場合に適している。
過去の時間を指定すると拒否された。
at: refusing to create job destined in the past
webを見てると即座に実行された、という人もいたのでバージョンによるかもしれない。atdが止まっている場合は、キューに溜まるけど実行はされない。atd起動時に古い時刻のキューがあれば、即座に実行される
at: ジョブの追加
標準入力から実行するジョブを指定。-f fileを指定すると、fileからジョブを読み取る。
時刻を指定
時刻、曜日、月日も指定可能。
$ echo 'touch /tmp/test' | at 10:00 $ echo 'touch /tmp/test' | at 10:00 tomorrow $ echo 'touch /tmp/test' | at 10:00 wednesday $ echo 'touch /tmp/test' | at 10:00 June 10
日付の形式は
- MMDDYY
- MM/DD/YY
- DD.MM.YY
などでもいい。
現在時刻を基準に設定
今から10分後、1時間後など。now + count time-unitsで指定。time-unitsはminutes,hours,days,weeks,month,yearなど
$ echo 'touch /tmp/test' | at now + 10 minutes $ echo 'touch /tmp/test' | at now + 1 hours
atq: キューの確認
atrm: キューの削除
atqで確認できるキュー番号を指定。
$ atrm 10
使用可能ユーザの制限
cronと同じで、/etc/at.denyと/etc/at.allowファイルで制限。
- /etc/at.allowが存在する場合はリストされているユーザが使用可能
- /etc/at.denyが存在する場合はリストされていないユーザが使用可能