返回顶部
首页 > 资讯 > 操作系统 >解读crontab脚本错误日志和正确的输出写入到文件
  • 624
分享到

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

crontab日志crontab脚本错误日志crontab输出写入到文件 2023-04-07 15:04:16 624人浏览 泡泡鱼
摘要

目录crontab脚本错误日志和正确的输出写入到文件不输出内容将正确和错误日志都输出到 /tmp/load.log只输出正确日志到 /tmp/load.log只输出错误日志到 /tmp/load.log名词解释cront

目录
  • crontab脚本错误日志和正确的输出写入到文件
    • 不输出内容
    • 将正确和错误日志都输出到 /tmp/load.log
    • 只输出正确日志到 /tmp/load.log
    • 只输出错误日志到 /tmp/load.log
    • 名词解释
  • 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

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      --结束END--

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

      本文链接: https://lsjlt.com/news/201340.html(转载时请注明来源链接)

      有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

      猜你喜欢
      软考高级职称资格查询
      编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
      • 官方手机版

      • 微信公众号

      • 商务合作