2011-08-22 19 views
2

bash腳本由cron運行日誌文件,標準錯誤重定向到一個日誌文件,這一切工作正常。 的代碼是:與日期重定向錯誤輸出到從cron

*/10 5-22 * * * /opt/scripts/sql_fetch 2>> /opt/scripts/logfile.txt 

我要在前面加上日期在日誌文件中的每一行,這不起作用,代碼:

*/10 5-22 * * * /opt/scripts/sql_fetch 2>> (/opt/scripts/predate.sh >> /opt/scripts/logfile.txt) 

約會前。 sh腳本如下:

#!/bin/bash 
while read line ; do 
    echo "$(date): ${line}" 
done 

所以第二個代碼不起作用,有人可以發光嗎? 謝謝。

+0

僅供參考那些讀這篇文章,有一個與我的系統上的cron的一個問題,這就是爲什麼我沒有得到結果,上面的代碼是實際可行的,但是從瑞安直接貼下面的解決方案要好得多。 – kingmilo

回答

5

我有一個小腳本cronlog.sh做到這一點。腳本代碼

#!/bin/sh 
echo "[`date`] Start executing $1" 
[email protected] 2>&1 | sed -e "s/\(.*\)/[`date`] \1/" 
echo "[`date`] End executing $1" 

那麼你可以做

cronlog.sh /opt/scripts/sql_fetch >> your_log_file 

結果示例

cronlog.sh echo 'hello world!' 

[Mon Aug 22 04:46:03 CDT 2011] Start executing echo 
[Mon Aug 22 04:46:03 CDT 2011] helloworld! 
[Mon Aug 22 04:46:03 CDT 2011] End executing echo 
+0

謝謝瑞恩,你的解決方案更清潔。 – kingmilo

1
*/10 5-22 * * * (/opt/scripts/predate.sh; /opt/scripts/sql_fetch 2>&1) >> /opt/scripts/logfile.txt 

應該是完全用自己的方式。