Cron

將 cron 輸出發送到名稱中帶有時間戳的文件

  • November 19, 2021

我在 LAMP 設置上有一個這樣的 crontab:

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1

這會將文件的輸出寫入cron.log。但是,當它再次執行時,它會覆蓋文件中以前的任何內容。

如何讓 cron輸出到文件名中帶有時間戳的文件?

範例文件名如下所示:2010-02-26-000000-cron.log

我並不關心格式,只要它有某種時間戳。

提前致謝。

嘗試:

0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1

如果您願意,可以使用日期格式;只要確保逃脫任何%like \%,如上所述。

我強烈建議您使用時間戳將所有內容保存到同一個文件中,如Abdullah Diab 的部落格中所述

消除

2>&1

…並在將其保存到日誌文件之前通過時間戳腳本執行它。

timestamp.sh腳本:

#!/bin/bash
while read x; do
   echo -n `date +%d/%m/%Y\ %H:%M:%S`;
   echo -n " ";
   echo $x;
done

請記住chmod +x timestamp.sh使其可執行。

然後使用如下方式編輯 cron 作業行crontab -e

/path/to/my/command.sh 2>&1 | /path/to/timestap.sh >> /var/log/cron/my_log.log

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