crontab의 다음 스크립트는
0 1 * * * (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +%Y%m%d_%H%M%S`.log
로그인 후 복사
실행할 수 없습니다. /var/log/messages 로그에 다음이 표시됩니다.
Sep 22 22:50:01 ebsapp CROND[13389]: (applprod) CMD ((cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +)
로그인 후 복사
명령이 다음과 같이 표시됩니다. 잘린 .
그래서 실행할 모든 명령을 스크립트로 캡슐화하고 이를 crontab에 넣어 실행했습니다.
그런데 나중에 crontab 맨페이지를 확인해보니 %가 crontab에서 특별한 의미를 갖고 있는 것을 발견했습니다.
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a new- line or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
로그인 후 복사
이제 문제는 crontab 명령이 잘린 것이 아니라 다른 의미를 갖고 있는 것으로 이해됩니다. 해결책 예, %를 탈출하면 수정된 스크립트는 다음과 같습니다:
03 23 * * * (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +\%Y\%m\%d_\%H\%M\%S`.log
로그인 후 복사