Cron

如何在 cron 選項卡作業中執行“日期”?

  • January 11, 2021

我想為日誌文件名中包含目前小時的 cron 腳本創建一個日誌文件。這是我嘗試使用的命令:

0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log

不幸的是,我在執行時收到此消息:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file

我嘗試過date以各種方式逃避該部分,但沒有太多運氣。是否可以在 crontab 文件中內聯發生這種情況,或者我是否需要創建一個 shell 腳本來執行此操作?

簡短的回答:

轉義%\%

0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+\%d"`.log

長答案:

錯誤消息表明執行您的命令的 shell 看不到第二個反引號字元:

/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'

當您嘗試其他答案之一時,您收到的第二條錯誤消息也證實了這一點:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ')'

crontab 手冊頁確認該命令只讀到第一個非轉義%符號:

“第六”欄位(該行的其餘部分)指定要執行的命令。該行的整個命令部分,直到換行符或 %字元,將由cronfile /bin/sh的變數中指定的 shell 或由 shell執行。命令中的百分號 ( ) ,除非使用反斜杠 ( ) 進行轉義,否則將更改為****換行符,並且第一個之後的所有數據都將作為標準輸入發送到命令。SHELL% \ %

引用自:https://unix.stackexchange.com/questions/29578