RackShareRackShareラックを、シェアしよう

cronで定期実行|書き方とハマりどころ

ハク@インフラエンジニア ・ 公開 2026-08-02 ・ 更新 2026-09-04 ・ 閲覧 216
技術解説

バックアップやログ整理を自動で回すなら cron。書き方はシンプルですが、ハマりどころが決まっているので合わせてまとめます。

基本の書式

crontabは「いつ」「何を」を1行で書きます。

分 時 日 月 曜日 コマンド

例:

0 3 * * *     /usr/local/bin/backup.sh      … 毎日3:00
*/5 * * * *   /usr/local/bin/check.sh        … 5分ごと
0 9 * * 1     /usr/local/bin/weekly.sh       … 毎週月曜9:00

* は「毎」、*/5 は「5ごと」です。

編集と確認

crontab -e     … 編集
crontab -l     … 一覧確認

ハマりどころ1:PATHが違う

cronは、手動実行時とは環境変数(特にPATH)が異なります。手で打つと動くのにcronだと動かない、の大半はこれです。コマンドはフルパスで書くのが鉄則です。

0 3 * * * /usr/bin/php /var/www/app/artisan schedule:run

ハマりどころ2:ログを残していない

cronは黙って動くので、失敗しても気づけません。必ず出力をログへ流します。

0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

2>&1 でエラー出力もまとめてログへ。これがないと「動いてるつもりで動いていない」事故になります。

ハマりどころ3:多重起動

処理が前回分の実行中にまた起動して、二重に走ることがあります。flock で排他制御すると安全です。

0 * * * * /usr/bin/flock -n /tmp/job.lock /usr/local/bin/job.sh

ハマりどころ4:時刻とタイムゾーン

サーバの時刻・タイムゾーンがズレていると、意図しない時間に走ります。date で確認し、NTPで同期しておきます。

まとめ

  • コマンドはフルパス
  • 出力は必ずログへ(>> log 2>&1
  • 多重起動は flock で防ぐ

cronは「書いて終わり」ではなく、「ちゃんと動いているかログで確認する」までがセットです。ここを押さえるだけで、自動化がぐっと安定します。

♥ 0(いいねはログイン後)

コメント 0 件

コメントするにはログインしてください。