Centos
如何設置 DATE 變數以在日誌中用於 crontab 輸出?
我在玩一些日期的變化,比如
DATE = $(date)
但這也沒有用
crontab -e
CRONLOG=/tmp/log/crontab.log DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S` * * * * * echo $DATEVAR >> /tmp/log/crontab.log */2 * * * * echo "$DATEVAR hello" >> ${CRONLOG} */1 * * * * echo 'every minute' >> ${CRONLOG}
這只是按原樣輸出文本……
我想在 crontab.log 中創建一個日誌條目,每次更新都有一個時間戳
我如何在 CentOS 6 上做到這一點?
更新
DATEVAR=date +20%y%m%d_%H%M%S */1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log
僅渲染
$$ CRON $$當我嘗試它時什麼都沒有=/
Cron 不是 shell - 它不像 shell 那樣解析命令。因此,您的變數被分配為靜態文本。
我知道這個問題的三種解決方案:
選項 1: 使用 shell 腳本生成您的命令,包括您想要的任何變數和邏輯 - 並從 cron 呼叫該 shell 腳本。
* * * * * /path/to/myscript.sh
哪裡
myscript.sh
:DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S` echo $DATEVAR >> /tmp/crontab.log
選項 2: 將 date 命令直接包含在您的命令中,並且由於將整個命令傳遞給 shell,日期將被處理並替換為實際日期。
* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log
選項 3: 在 cron 中設置字元串變數,並將其傳遞給要處理的命令(注意 - 百分號不需要轉義,變數本身包含在 $() 中以在單獨的 shell 中執行它 -反引號應該相同):
DATEVAR=date +20%y%m%d_%H%M%S * * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log
(在上述所有情況下,您當然可以為日誌路徑使用變數,而不是“硬編碼”它。)