
매일 오전 2시에 쉘 스크립트를 실행하는 cron 작업이 있습니다.
0 2 * * * /root/bin/script.sh
그러나 전혀 작동하지 않습니다. 내가 무엇을 놓치고 있나요?
자세한 내용: 스크립트는 수동으로 실행될 때 크론 예약 없이 잘 실행되며 예상되는 작업을 수행합니다. 루트 사용자가 cron 작업을 실행 중입니다. cron 작업은 사용자 crontab -e
로 예약되었습니다 root
. pgrep cron
cron 서비스가 실행 중임을 의미하는 서비스 ID를 제공합니다. 파일 내용은 다음과 같습니다 /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
, 여전히 작동하지 않는 경우 디버깅에 도움이 될 수 있습니다.