atコマンド
問題
atコマンドとは?
答え
cronは「毎日x時に実行」などジョブのスケジュールを管理する感じになるが、
atは「(この後1度だけ)x時に実行」といった感じでジョブを管理、実行してくれる。
実行する処理は、atコマンドに標準入力でシェルスクリプトを渡すか、-fオプションでシェルスクリプトを書いたファイルを指定する。
例1) この後13時にこのコマンドを実行してください(ファイル指定)
$ at 13:00 -f script.sh
例2) この後13時にこのコマンドを実行してください(コマンド入力)
$ at 13:00 warning: commands will be executed using /bin/sh (← sh で実行しますよーとのこと) at> date > /tmp/at.log (← 時間になると at.log に日時が書きこまれる) at> <EOT> (← Ctrl+D で終了) job 6 at Sun Oct 16 13:00:00 2022
なお、時刻だけを指定する場合、今日の13時前なら今日の13時に実行。今日の13時を過ぎてから13時に実行するよう依頼すると、明日の13時の実行になる。
例3)2022年10月16日13時にこのコマンドを実行してください
$ at '13:00 2022-10-16' -f test.sh
年月日の指定の仕方は様々あるので、好みの書き方を覚えておくとよい。
$ at 9AM $ at 4pm + 3days $ at 3pm Mon $ at '20:00 10/16/22' $ at '20:00 2022-10-16'
確認、取り消し
atに依頼しているジョブの状況は以下のコマンドで確認できる。(at -l は atq と同じ)
$ atq 6 Sun Oct 16 13:00:00 2022 a username
各ジョブの詳細は以下のコマンドで確認できる。
$ at -c 6 #!/bin/sh …… (環境変数の設定等 略) …… (実行される内容が表示される)
ジョブを削除するのは以下のコマンドでできる。(at -r, at -d は atrm と同じ)
$ atrm 6
コメント