Cron
如何在 cron 選項卡作業中執行“日期”?
我想為日誌文件名中包含目前小時的 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
%
\
%