crontab 重定向错误日志 加上时间

在开发中,我们避免不了写crontab脚本来异步执行一些东西,一般设置crontab用下面的方法

*/1 * * * * commond > /tmp/t.log 2>&1

后面的 2>&1 代表把标准错误输出指向标准输出,意思是当commond异常退出时,把异常退出时的日志也写到 /tmp/t.log 下面,这时记录的日志是没有时间信息的,就是说日志里的数据没有办法知道是什么时候打印出来的。
下面通过一个shell来解决这件事,代码如下

#!/bin/bash

if [ $# -gt 1 ]; then
	istring=''
	#去掉回车
	date=`date +%Y/%m/%d\ %H:%M:%S | tr -s ["\n"]`
	for (( i = 2; i <= $#; i++ ))
	do
		string=$string" "${!i}
	done	
	c=$date": "$string
	echo "" >> $1
	echo $c >> $1
fi

把上面的代码放到根目录下,保存为 datecrontalog.sh

然后在crontab -e用下面的脚本代替

*/1 * * * *  commond 2>&1 | xargs $HOME/datecrontalog.sh /tmp/t.log
此条目发表在Shell分类目录,贴了, 标签。将固定链接加入收藏夹。