cronで定期実行する基本|crontabの5つの欄の読み方、動かないときの原因と確かめ方
スクリプトにまとめて登録する手順
crontab には一行で何でも書けますが、処理が少しでも長くなるなら、スクリプトファイルにまとめて、crontab からはそれを呼び出すだけにするのがおすすめです。ここでは、毎日のバックアップを例に手順を紹介します。

- スクリプトを置く場所を決める。たとえばホームディレクトリの下に
binフォルダを作る。 - スクリプトファイルを作る。先頭行に
#!/bin/bashのように使うシェルを書き、ファイルは絶対パスで指定する。 chmod +xで実行権限を付ける。- ターミナルから絶対パスでスクリプトを実行し、手で動くことを確かめる。
- cron に近い環境で試す。
env -i /bin/sh -c '/home/user/bin/backup.sh'のように環境変数を空にして実行すると、PATH に頼った書き方が残っていないかを確かめられる。 crontab -eで、数分後の時刻を指定した行を一時的に登録し、実際に動くかを確認する。- 動作を確認できたら、本来の時刻に書き換える。

バックアップの考え方も合わせて
定期実行の用途として最も多いのがバックアップです。cron で自動化するときは、「何を」「どこへ」「何世代」残すかを先に決めておくと、スクリプトがシンプルになります。バックアップと同期の違いや世代管理の考え方は、バックアップと同期の違いとは?大切なデータを守る保存と復元の基本で紹介しています。
ログの残し方とメール通知
cron のジョブは画面のない場所で動くので、何が起きたかを後から確かめられるようにしておくことが大切です。
出力をファイルに残す
cron のジョブが標準出力やエラー出力に何かを書き出すと、多くの環境ではその内容が利用者宛てのメールとして送られます。メールを読む仕組みがない環境では、出力は気づかれないまま消えてしまいます。
出力をログファイルに残すには、コマンドのあとにリダイレクトを書きます。
30 3 * * * /home/user/bin/backup.sh >> /home/user/log/backup.log 2>&1
>> はファイルの末尾に追記する指定、2>&1 はエラー出力も同じファイルに書く指定です。2>&1 を付け忘れると、肝心のエラーメッセージがログに残りません。スクリプトの中で date を出力しておくと、いつの実行の記録なのかが分かりやすくなります。
MAILTO でメールの宛先を決める
crontab の先頭に MAILTO= の行を書くと、出力の送り先を指定できます。MAILTO="" と空にすると、メールを送らない設定になります。ただ、メールを止めるとエラーにも気づけなくなるので、ログファイルへの出力とセットで使います。
cron 自体のログを見る
ジョブが起動したかどうかは、cron のログで確かめられます。ログの場所はディストリビューションによって違い、Debian や Ubuntu 系ではシステムログ(/var/log/syslog など)に CRON という名前で記録され、journalctl -u cron で見られる環境もあります。Red Hat 系では /var/log/cron に記録されることが多いです。お使いの環境の資料で確かめてください。










