Centos

如何設置 DATE 變數以在日誌中用於 crontab 輸出?

  • August 12, 2021

我在玩一些日期的變化,比如

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

(在上述所有情況下,您當然可以為日誌路徑使用變數,而不是“硬編碼”它。)

引用自:https://serverfault.com/questions/339814