crontab /bin/sh 구문

crontab /bin/sh 구문

이 질문에 대한 답을 스스로 찾을 수 없습니다.

cron은 /bin/sh를 사용하므로 구문 오류가 발생합니다. 다음 명령을 사용하는 cron 작업이 있습니다.

2,17,32,47 * * * * tar -czvf /opt/SOMEFILES /var/lib/$(date +"%Y/%m/%d")

또는

2,17,32,47 * * * * tar -czvf /opt/$(date +"%Y/%m/%d")/somefiles /var/lib/$(date +"%Y/%m/%d")

기본적으로 이는 단지 예일 뿐이며 실제 크론 작업은 약간 다릅니다. 어떤 유형의 예를 들어보려고 합니다.

$(date +"%Y/%m/%d")Cron에서 어떻게 사용하는지 모르는 부분입니다.

크론에서 어떻게 사용할 수 있나요? curdate는 해당 폴더가 될 수도 있습니다.

답변1

나는 당신이 받고있는 정확한 오류가 없지만 내 생각에는 이스케이프 문자 문제인 것 같습니다 (날짜에 백 슬래시 대신 슬래시를 사용하고 있습니다)

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

이와 유사한 형식을 더 사용해 보세요.

`date +\%Y\%m\%d\`

답변2

해결 방법 1:\백슬래시를 다음 으로 변환합니다 .date

2,17,32,47 * * * * tar -czvf /opt/SOMEFILES >> /var/lib/`date +\%Y\%m\%d\`

해결 방법 2:

명령을 쉘 파일에 넣은 다음 cron을 사용하여 쉘 파일을 실행할 수도 있습니다.

직업

tar -czvf /opt/SOMEFILES >> /var/lib/`date+\%Y\%m\%d\`

예약 된 일들

2,17,32,47 * * * * jobs.sh

관련 정보