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

来源:互联网 发布:淮南大数据公司 编辑:程序博客网 时间:2024/04/30 15:03

http://blog.csdn.net/wang350/article/details/51558016


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


[plain] view plain copy print?
  1. */1 * * * * commond > /tmp/t.log 2>&1  



后面的 2>&1 代表把标准错误输出指向标准输出,意思是当commond异常退出时,把异常退出时的日志也写到 /tmp/t.log 下面,这时记录的日志是没有时间信息的,就是说日志里的数据没有办法知道是什么时候打印出来的。
下面通过一个shell来解决这件事,代码如下
[plain] view plain copy print?
  1. #!/bin/bash  
  2.   
  3.   
  4. if [ $# -gt 1 ]; then  
  5.     istring=''  
  6.     #去掉回车  
  7.     date=`date | tr -s ["\n"]`  
  8.     for (( i = 2; i <= $#; i++ ))  
  9.     do  
  10.         string=$string" "${!i}  
  11.     done      
  12.     c=$date": "$string  
  13.     echo "" >> $1  
  14.     echo $c >> $1  
  15. fi  




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


然后在crontab -e用下面的脚本代替
[plain] view plain copy print?
  1. */1 * * * *  commond 2>&1 | xargs $HOME/datecrontalog.sh /tmp/t.log 

原创粉丝点击