일일 크론 작업이 작동하지 않는 것 같습니다.

일일 크론 작업이 작동하지 않는 것 같습니다.

매일 오전 2시에 쉘 스크립트를 실행하도록 되어 있는 크론 작업이 있습니다.

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

그러나 전혀 작동하지 않습니다. 내가 무엇을 놓치고 있나요?

자세한 내용: 수동으로 실행하면 스크립트는 크론 예약 없이 정상적으로 실행되며 예상되는 작업을 수행합니다. 루트 사용자가 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, 여전히 작동하지 않는 경우 디버깅에 도움이 될 수 있습니다.

관련 정보