MeWrite Docs

cron: job not running

cronジョブが期待通りに実行されない場合の原因と対策

概要

cronに登録したジョブが期待した時間に実行されない、または実行されても正常に動作しない問題です。cron特有の環境(PATH、シェル、環境変数)が原因であることが多く、ターミナルでは動作するのにcronでは動かないケースが頻繁に発生します。

エラーメッセージ

cronジョブが実行されない場合、直接的なエラーメッセージは表示されないことが多いですが、以下のログで確認できます。

# /var/log/syslog または /var/log/cron
CRON[12345]: (myuser) CMD (/opt/app/backup.sh)
CRON[12345]: (CRON) error (grandchild #12346 failed with exit status 1)
/bin/sh: /opt/app/backup.sh: Permission denied
/opt/app/backup.sh: line 3: node: command not found

原因

  1. PATH環境変数が異なる: cronは最小限のPATH(/usr/bin:/bin)しか持たない
  2. crontab構文のエラー: スケジュール書式の間違い
  3. 実行権限がない: スクリプトにchmod +xしていない
  4. 環境変数が未設定: .bashrc.profile が読み込まれない
  5. cronデーモン自体が停止している: サービスが起動していない

解決策

1. cronデーモンの稼働確認

1
2
3
4
5
6
7
# cronサービスの状態確認
systemctl status cron        # Debian/Ubuntu
systemctl status crond       # RHEL/CentOS

# 起動していなければ開始
sudo systemctl start cron
sudo systemctl enable cron

2. crontab構文の確認

1
2
3
4
5
# 現在のcrontabを表示
crontab -l

# crontabを編集
crontab -e
# crontab書式
# 分 時 日 月 曜日 コマンド
# 0-59 0-23 1-31 1-12 0-7(0,7=日)

# 毎日午前3時に実行
0 3 * * * /opt/app/backup.sh

# 5分ごとに実行
*/5 * * * * /opt/app/healthcheck.sh

# 月〜金の9時に実行
0 9 * * 1-5 /opt/app/report.sh

3. フルパスを使用する

1
2
3
4
5
6
7
8
9
# 悪い例(PATHが通っていない)
* * * * * node /opt/app/job.js

# 良い例(フルパスを指定)
* * * * * /usr/local/bin/node /opt/app/job.js

# コマンドのフルパスを確認
which node
# /usr/local/bin/node

4. 環境変数とPATHを明示的に設定

# crontabの先頭で環境変数を定義
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
HOME=/home/myuser
NODE_ENV=production

0 3 * * * /opt/app/backup.sh

または、スクリプト内でPATHを設定:

1
2
3
4
5
6
#!/bin/bash
export PATH=/usr/local/bin:/usr/bin:/bin
export HOME=/home/myuser
source /home/myuser/.bashrc

/usr/local/bin/node /opt/app/job.js

5. ログ出力を設定して問題を特定

# 標準出力とエラー出力をファイルに記録
0 3 * * * /opt/app/backup.sh >> /var/log/backup.log 2>&1

# メール通知を抑制(出力が不要な場合)
0 3 * * * /opt/app/backup.sh > /dev/null 2>&1

# cronのメール送信先を設定
MAILTO=admin@example.com
0 3 * * * /opt/app/backup.sh

6. 手動でcron環境をシミュレーション

1
2
# cronと同じ最小限の環境でスクリプトをテスト
env -i SHELL=/bin/sh PATH=/usr/bin:/bin HOME=/home/myuser /opt/app/backup.sh

関連エラー

Linux の他のエラー

最終更新: 2026-02-03