Linuxのcron
は指定した日付にジョブの自動実行を行うスケジューラです。
cronはアプリケーションやシステムの定期的なジョブ実行、監視などの用途で使われます。
🎂 crontabについて
cron
の設定はcrontab
(cron table)というテキストファイルに保存されます。
Red Hat系のLinuxでは、/var/spool/cron/[username]
に保存されます。
crontabの基本的な書式は次のとおりです。
分 時 日 月 曜日 実行コマンド |
要素 | 説明 |
---|---|
分 時 日 月 |
ジョブを実行する日時をペース区切りで数値(記号)で指定 |
曜日 |
月曜日には0が日曜で6が土曜日の数字(記号)で指定 |
各フィールドには数値以外に次の記号を使うことができます。
記号 | 意味 |
---|---|
- |
範囲を指定。時間なら1-10 なら1時から10時までの毎時間 |
* |
全範囲を指定。時間なら0-23時までの毎時間 |
/ |
インターバルを指定。時間が*/4 なら4時間おき |
, |
区切り指定。時間が1,4,7 なら1時、4時、7時 |
😸 crontabの設定例
ターミナルでcrontab -e
を実行するとcrontabを編集できます。PATHは適切なパスを読み込むように設定しておきましょう。
MAIL_TO=hoge@example.com |
上記のように設定した場合、5月1日20時30分にコマンドecho hoge
が実行されます。
コマンドの標準出力とエラー出力は、MAIL_TOで指定したアドレスに送られます。
🍣 crontabの設定手順
cronのプロセスの確認
# cronのプロセスが起動しているかの確認 |
cron設定ファイルの権限確認
# root は任意のユーザー名に変更 |
cronの実行ログの確認
vi /var/log/cron |
cronの実行時にログを出力するようにする
標準出力を/tmp/cron-log.log
に、標準エラーを/tmp/cron-err.log
に出力するようにすることで実行結果を確認できます。
*/5 * * * * /bin/sh /home/user/hoge.sh >>/tmp/cron-log.log 2>>/tmp/cron-err.log |
😀 /etc/cron.d/
の注意点
/etc/cron.d/
にcronの設定を記述したファイルを置くと、cronタスクを定期実行してくれます。ファイル所有者をroot
にする必要があるので注意してください。(任意のユーザーを許可すると勝手なコマンドが実行できてしまうため)
😎 参考リンク
- 第25回 cron周りのベストプラクティス
- crontabを設定しても実行されない時の確認ポイント
- linux - How to get CRON to call in the correct PATHs