학교 과제를 위해 GFFS 백업 스크립트를 만들고 있는데 몇 가지 문제가 발생했습니다. 작동 방식은 다음과 같습니다.
/etc/backup/backup.sh PERIOD NUMBER
cron에 다음 줄을 추가했습니다.
# m h dom mon dow command
# Backup for fileserver:
#daily: 5 times/week
0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +%w)
#weekly: 5 times/month
10 23 * * 7 /etc/backup/backup.sh weekly $((($(date +%-d)-1)/7+1))
#monthly: 12 times/year
20 23 1 * * /etc/backup/backup.sh monthly $(date -d "-1 day" +%m)
#yearly: each year
0 3 1 1 * /etc/backup/backup.sh yearly $(date -d "-1 day" +%Y)
최종 계산은 이전 백업을 덮어쓰는지를 아는 것입니다. 수동으로 실행하면 완벽하게 작동하지만 cron으로 실행하면 이상한 일이 발생합니다. 주간 백업 항목에 대해 이야기하고 있습니다. 계산에서는 해당 월의 주 수를 제공해야 합니다. "grep CRON /var/log/syslog"를 실행하여 다음 줄을 찾았습니다.
Dec 19 14:33:01 BE-SV-04 CRON[5445]: (root) CMD (/etc/backup/backup.sh weekly $((($(date +)
cron이 계산을 올바르게 수행하지 않는 것 같습니다. 도움이 필요하세요?
답변1
"%" 기호를 피해야 한다고 생각합니다.
그래서 이거:
0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +\%w)
...작동해야 합니다. 어느 것을 이스케이프해야 할지 모르겠습니다. +와 %라고 생각합니다. 시도해 보세요. *cron에서 이 작업을 수행할 때 다음과 같이 더 보기 흉한 역따옴표 구문을 사용하여 명령을 실행하고 명령도 이스케이프해야 합니다. *
0 1 * * * something >> bla\`date \+\%Y_\%m_\%d\`.log
답변2
cronjob이 어떤 셸에서 실행되고 있는지 잘 모르겠지만 사용해야 할 계산을 구문 분석할 수 없는 것 같습니다.기원전.