解读crontab脚本错误日志和正确的输出写入到文件

作者:o王o 时间:2023-10-16 04:36:12 

crontab脚本错误日志和正确的输出写入到文件

如果crontab不重定向输出,并且crontab所执行的命令有输出内容的话,是一件非常危险的事情。

因为该输出内容会以邮件的形式发送给用户,内容存储在邮件文件

/var/spool/mail/$user

如果命令执行比较频繁(如每分钟一次),或者命令输出内容较多,会使这个邮件文件不断追加内容,文件越来越大。

而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法登录服务器。

不输出内容

*/5 * * * * /root/XXXX.sh &>/dev/null 2>&1 

将正确和错误日志都输出到 /tmp/load.log

*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1 &

只输出正确日志到 /tmp/load.log

*/1 * * * * /root/XXXX.sh > /tmp/load.log &  等同于   */1 * * * * /root/XXXX.sh 1>/tmp/load.log &

只输出错误日志到 /tmp/load.log

*/1 * * * * /root/XXXX.sh 2> /tmp/load.log & 

名词解释

在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。所以这里2>&1的意思就是将标准错误也输出到标准输出当中。

> 就相当于 1> 也就是重定向标准输出,不包括标准错误。

通过2>&1,就将标准错误重定向到标准输出了(stderr已作为stdout的副本),那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。

如果只想重定向标准错误到文件中,则可以使用2> file。

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 | 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

来源:https://blog.csdn.net/u012129607/article/details/80418149

标签:crontab,输出,写入,文件
0
投稿

猜你喜欢

  • 优化Linux服务器硬盘性能的七个实用技巧

    2008-09-26 17:31:00
  • AdSens 广告新样式: 矩阵排列

    2007-12-19 13:05:00
  • shell判断一个变量是否为空方法总结

    2022-02-14 00:48:44
  • 如何配置Linux操作系统下的FTP服务器

    2009-02-10 16:02:00
  • widget将成为网络广告新宠 Google等巨头纷纷支持

    2007-12-24 17:20:00
  • Xtalk社区聊天插件1.2正式版 自定义版块上线

    2010-05-27 02:05:00
  • 基于服务器日志的可视化分析工具

    2009-10-11 08:39:00
  • Win 2003中为SMTP服务配置本地域

    2007-08-20 15:18:00
  • 百度与谷歌搜索质量与理念对比

    2009-02-19 13:13:00
  • 伪静态在iis下的规则和设置方法

    2009-10-18 07:28:00
  • 学习配置 Windows Server 2008 防火墙

    2008-08-19 17:08:00
  • 为什么国外站点访问慢,但下载快

    2010-01-20 15:57:00
  • apache返回Request header field is missing ':' separator

    2009-10-02 16:51:00
  • 中国PR、Alexa、Site分别之最排行

    2007-12-15 08:00:00
  • 传MySpace接近收购iMeem 谈判已到后期阶段

    2009-11-18 08:58:00
  • 微软新搜索技术用网民行为判断权重 Google批驳

    2008-07-28 13:23:00
  • 多Web服务器的备份

    2007-03-29 11:12:00
  • Linux内存泄漏检测shell脚本

    2023-11-02 15:53:25
  • Linux下nginx配置https协议访问的方法

    2022-05-05 19:10:45
  • DedeCMS如何SEO的探索(1)

    2007-10-29 17:23:00
  • asp之家 网站运营 m.aspxhome.com