「cronで設定したスクリプトが動かない!」
「cronの設定が指定時間に動いたか不安・・・」
cron関係で、こんな失敗や不安を経験したことはありませんか?
私は、両方あります。
でも、これって確認不足なだけなのですよね。
「もうcronで悩まない」
この記事では、cronで悩まないためのノウハウを説明します。
本記事の内容
- なぜcronで悩むのか?
- シェルスクリプトをcron設定する
それでは、上記に沿って解説していきます。
なぜcronで悩むのか?
なぜcronで悩むのでしょうか?
それは、相手が見えない敵だからです。
悩まないためには、見えるようにします。
可視化というヤツです。
これで、cronに関する悩みはほぼ解決します。
cronの動きを見える化するためには、以下の3つのルールが重要です。
- シェルスクリプトをcron設定する
- 実際にcron設定したシェルスクリプトを手動で動かす
- cron設定したシェルスクリプトの実行ログを出力する
この3つのルールに対応することにより、cronの悩みから開放されます。
慣れれば簡単なことです。
少し頑張るだけで、ミスや不安ともサヨナラできます。
この記事では、「シェルスクリプトをcron設定する」を解説していきます。
シェルスクリプトをcron設定する
決して以下のように書かないことです。
0 * * * * ls -l /tmp | wc -l
実際、cronで起動させる処理はこんな単純ではないでしょう。
仮に単純であっても、シェルスクリプトにすることをルールにします。
なお、crontabの書き方については、次の記事で解説しています。
では、実際にどうするのか?
/home/my_sh/count.sh
#!/bin/sh ls -l /tmp | wc -l
コマンドの内容をシェルスクリプトに記述します。
もちろん、実行権限も付与してください。
# chmod +x /home/my_sh/count.sh
そして、作成したシェルスクリプトのフルパスをcrontabに書きます。
0 * * * * /home/my_sh/count.sh
これは、cronで悩まないためのスタートです。
こうすることによって、cronの闇が解明されていきます。
また、このようにしておけばcrontabを都度変更する必要がありません。
処理を変更する場合、シェルスクリプトを変更するだけで済みます。
プログラムにおける関数、クラスなどの考え方に近いかもしれません。
簡単に言うと、ワンクッション挟むということです。
以上、今回はこれで終わりとします。
cronの悩みからの開放は、今回の作業をベースにして進めていきます。