毎日の cron ジョブが機能していないようです

毎日の cron ジョブが機能していないようです

毎日午前 2 時にシェル スクリプトをトリガーする cron ジョブがあります。

0 2 * * * /root/bin/script.sh

しかし、まったく機能しません。何が足りないのでしょうか?

詳細: スクリプトは、手動で実行すると cron スケジュールなしで正常に実行され、想定どおりに動作します。root ユーザーが cron ジョブを実行しています。cron ジョブはcrontab -easrootユーザーによってスケジュールされました。pgrep cronサービス ID が与えられ、これは cron サービスが実行中であることを意味します。ファイルの内容は次のとおりです/root/bin/script.sh

BACKUP_LOG=/var/log/backup.log
exec 1> >(while IFS= read -r line; do echo "$(date --rfc-3339 ns) $line"; done | tee -a ${BACKUP_LOG}) 2>&1

# Back up the etc directory
mkdir /home/directory1/backup/etc_backup
cp -Lrp /etc /home/data/backup/etc_backup
tar czf /home/data/backup/etc_backup.tgz
/home/data/backup/etc_backup
rm -rf /home/data/backup/etc_backup

実は、スクリプトを から に移動しました/etc/cron.daily/。スクリプトは、毎日の実行のためだけに に/root/binあるはずですか?/etc/cron.daily

答え1

私の推測では、スクリプトには適切なシェバンがないため、シェルによってスクリプトが適切に理解されていないようです。crontab -e代わりに、次のように使用してみてください:

0 2 * * * bash /root/bin/script.sh > /tmp/crontest.log 2>&1

bash を使用してスクリプトを直接呼び出すと、スクリプトは正常に実行されるはずです。出力もすべてログに記録されるので/tmp/crontest.log、まだ動作しない場合はデバッグに少し役立つかもしれません。

関連情報