2011-08-22 51 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 

应该是完全用自己的方式。