atコマンド--指定時間にコマンドを1回実行する

初期起動デーモンを整理しているとき、気になるのはatdをどうするか。atdは、cronと同じような、指定した時間にコマンドを実行するデーモンであるが、指定時間に1回だけ実行して終了する。たとえば、夜中に重い処理を実行し次の日に確認するとか、設定を変えたので夜中の利用者がいないときに再起動するといった具合である。

とはいえ、シェルスクリプトのSLEEPで代用できてしまったりするので、atコマンドを普段から使いこなしていないと不要なものだろう。デーモンを起動しないようにしておくか、atコマンドをマスターしておくのどちらかになる。ということでatコマンドの使い方メモ。

インタラクティブにジョブセット

# at 00:00
warning: commands will be executed using /bin/sh
at> /etc/init.d/デーモン restart
at>        ← Ctrl+Dキーを押す
job 1 at xx xx xx 00:00:00 2014

スクリプトを指定してジョブを登録

# at -f ./script.sh 00:00

「-f」オプションでスクリプトを指定する。

キューに入ったジョブを確認

# at -l
1       xx xx xx 00:00:00 2014 a root

atqコマンドもまったく同じ動きになる(atqコマンドはatコマンドへのシンボリックリンク)。

ジョブの中身を確認

# at -c 1
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
	:
	:
/etc/init.d/デーモン restart

-cオプションにジョブ番号を指定する。ジョブが実行されるときのシェルスクリプトが表示される。いろいろと環境変数が設定されて(引き継いで)実行されるのがわかる。 

ジョブを削除

# at -d 1

atrmコマンドも同じ動き(こちらもatコマンドへのシンボリックリンク)