Crontabとは
JOBを定期的に実行してくれるコマンドです。
登録方法
Cronの設定ファイルに記載することで実行してもらえます。
設定ファイルの起動は以下。
$ crontab -e
こちらを実行するとエディタが開かれるので、
一番下に実行したいコマンドを記載。
今回はShellScriptを記載し、それを定期実行するCronTabを設定しました。
なお、ShellScriptはchmodで権限を755にしておくこと。
*/5 * * * * ./home/vagrant/test.sh
Cron設定ファイルの記載方法
「時間 実行するコマンド」と記載します。
時間は左から「分 時間 日 月 曜日」で記載します。
時は24時間表記、曜日は0から6まで日曜日から土曜日までに対応し、さらに7はまた日曜に対応。
また、ワイルドカードの使用、間隔の指定が可能です。
書き方 | 意味 |
---|---|
00 8 1 * * | 毎月1日の8時に定期実行 |
*/1 * * * * | 毎分定期実行 |
00 12 * * * 1 | 毎週月曜日に定期実行 |
登録されているCrontabの確認
Crontab -l で設定されたcrontabを確認可能。
なお、ユーザー毎に設定するものであるため、
各ユーザーの設定値を確認する場合は、
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
で可能。
ほんとに実行されたよね?の確認。。
/var/log/cronに実行ログがある。
下に追記されているのでtailなどで見るのが手っ取り早い。
実行されてない場合の確認方法
ログ出力
Cron設定のコマンドにリダイレクトを書くだけです。
crontab -e
*/5 * * * * bash /home/vagrant/test.sh >> /home/vagrant/test.log 2>&1
>>でリダイレクトすれば追記してくれます。
なお、最後の2>&1は標準出力もエラー出力もする設定。
標準出力のみの場合はtest.sh 1> test.log
エラーのみでいい場合はtest.sh 2> error_test.log
とする。
結局は
Crontabに登録するコマンドを直叩きしてうまくいくかどうか確認して、
うまくいってからCrontabに登録するのが一番確実。
一行目のおまじない忘れとかスペース問題とかCrontabのログより気が付きやすいので。
bash /home/vagrant/test.sh >> /home/vagrant/test.log 2>&1
参考
crontabコマンドについてまとめました 【Linuxコマンド集】
cronのログを見よう
cronがうまく動かないときの調査