편집 후 크론 작업이 손상됨

편집 후 크론 작업이 손상됨

다음 cronjob이 더 이상 작동하지 않는 이유를 이해하는 데 약간의 어려움이 있습니다.

30 3 * * * /path/to/backup_script.sh && tar -czvf /path/to/archived/backups/retain_last_3_backups/backup-community_$(date '+%Y%m%dT%H%M%S').tar.gz -C /path/to/source/backup/folder/ .

crontab을 소유한 동일한 사용자를 사용하여 수동으로 실행하면 작동합니다. 며칠 전에 편집했는데 작동이 멈췄어요&& tar -czvf [...]

명령을 다르게 호출해야 합니까 date? 아니면 탈출 $(지금 테스트하려고 하는데 방금 알아차렸습니다)?

David Sánchez Martín 덕분에 다음 오류를 보고하는 특정 로그를 찾았습니다.

/bin/sh: 1: Syntax error: Unterminated quoted string

답변1

이러한 %기호는 항목 내에서 특별하므로 형식 문자열에서 직접 사용할 crontab수 없습니다 .date

man 5 crontab쓰다

여섯 번째 필드(줄의 나머지 부분)는 실행할 명령을 지정합니다. 행의 전체 명령 부분(개행 문자 또는 문자까지)은 cronfile 변수에 지정된 쉘에 의해 실행됩니다 %. 백슬래시( )로 이스케이프하지 않는 한 명령의 백분율 기호( )는 개행 문자로 변경되고 첫 번째 이후의 모든 데이터는 표준 입력으로 명령에 전송됩니다./bin/shSHELL%\%

답변2

먼저 이를 디버깅하고 모니터링하려면 경험적으로 MAILTO 변수를 crontab에 추가하면 표준 오류에서 문제가 발생하면 이메일을 받게 됩니다.

# crontab -e
[email protected]
30 3 * * * /usr/local/bin/blahblah.sh

또한 명령이 표준 출력으로 무언가를 출력하는 경우 메일로 출력되는 것을 원하지 않으면 null로 리디렉션할 수 있습니다.

30 3 * * * /usr/local/bin/blahblah.sh > /dev/null

그런 다음 명령이 확실하지 않은 경우 아래와 같이 날짜를 변수로 입력하십시오.

30 3 * * * /path/to/backup_script.sh && THEDATE=$(date +%Y%m%dT%H%M%S) tar -czvf /path/to/archived/backups/retain_last_3_backups/backup-community_$THEDATE).tar.gz -C /path/to/source/backup/folder/ .

나는 그것이 더 읽기 쉽고 주변에 숨어있는 변수가 없다고 생각합니다.

관련 정보