2011-03-11 5 views
17

crontab에서 이와 비슷한 작업을 수행 할 수 있습니까?% 어떻게 crontab에서 특별합니까?

* * * * * echo $(date +%F) >> /path/date.txt 
+1

mail this me me. /bin/sh -c " /bin/sh : -c : 줄 1 : 구문 오류 : 예기치 않은 EOF (예상치 못한 EOF) 파일의 끝 – JuanPablo

+0

그건 [echo'의 쓸모없는 사용이다] (http://www.iki.fi/era/unix/award.html#echo),'echo $ (foo)'와 비슷한 것은 쉘이 공백 문자를 정규화하고'foo '의 출력에서 ​​와일드 카드를 확장하도록하기 위해 따옴표로 묶지 않은 명령 대체를 사용하지 않는 한 – tripleee

답변

31

당신의 crontab 라인의 실제 문제는 $() 또는 역 인용 부호가 아닙니다. 문제는 백분율 기호 %입니다. crontab에는 특별한 의미가 있습니다. 맨 페이지에서

:

... 
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. 
... 

당신이 예상대로 작동합니다 \와 퍼센트 기호를 벗어날 경우

* * * * * echo $(date +\%F) >> /tmp/date.txt 

또는

* * * * * echo `date +\%F` >> /tmp/date2.txt 

내 사이트에서 모두 작동합니다.

+2

백 슬래시가 쉘로 전달된다는 점에 유의하십시오. 셸이 백 슬래시를 없애기 때문에 위의 코드가 작동하지만 http://www.hcidata.info/crontab.htm에 따라 셸에서 문자열 내에 백 슬래시가 남습니다. –

+1

나는 복수와 함께 cron을 싫어합니다. – Willem