温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2023-04-07 16:37:27 来源:亿速云 阅读:110 作者:iii 栏目:开发技术

这篇文章主要介绍“crontab脚本错误日志怎么正确的输出写入到文件”,在日常操作中,相信很多人在crontab脚本错误日志怎么正确的输出写入到文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”crontab脚本错误日志怎么正确的输出写入到文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    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

    到此,关于“crontab脚本错误日志怎么正确的输出写入到文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI