毎日午前2時にシェルスクリプトを実行するようになっているクローンジョブがあります。
0 2 * * * /root/bin/script.sh
しかし、まったく動作しません。私は何を見逃していますか?
詳細:手動で実行すると、スクリプトはクローン予約なしで正常に実行され、予想されるタスクを実行します。 rootユーザーがcronジョブを実行しています。 cronジョブはcrontab -e
ユーザーによってスケジュールされますroot
。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
私の考えでは、正しいshebangがないので、シェルはスクリプトを正しく理解していないようです。代わりにこれを試してくださいcrontab -e
:
0 2 * * * bash /root/bin/script.sh > /tmp/crontest.log 2>&1
bashを使って直接呼び出すと、スクリプトが正しく実行されます。すべての出力は最終的に記録する必要がありますが/tmp/crontest.log
、まだ機能していない場合はデバッグに役立ちます。