crontabの書き方「シェルスクリプトのフルパスを設定する」

crontabの書き方「シェルスクリプトのフルパスを設定する」 サーバー

「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の悩みからの開放は、今回の作業をベースにして進めていきます。

タイトルとURLをコピーしました