您的位置:

深入了解crontab 日志

一、什么是crontab

crontab是一种计划任务管理器,它可以在指定的时间间隔内运行命令或脚本。这种工具的存在是极其必要的,因为我们无法保证所有的命令都能在正确的时间完成,特别是那些需要周期性和计划性地运行的任务。crontab提供了一个简单而强大的方式来管理这些任务。

在Linux和Unix系统中,crontab是一个非常常用的工具,我们可以通过它在指定的时间间隔内运行脚本、备份数据、定期清理缓存和日志等等。

二、crontab日志的作用及其记录方式

作为计划任务管理器,我们理所当然地需要查看任务的运行情况是否符合预期。为了实现这个目的,crontab提供了日志文件来记录任务的执行情况。在Linux系统中,cron会将所有任务的执行情况写入到/var/log/cron.log文件中。

    1. 开启cron日志记录
    在/var/log目录中有cron日志,不过开始默认并不开启cron日志记录,故要在/etc/syslog.conf中做些修改。
    
    打开/etc/syslog.conf,
    
    添加如下一个内容:
    
    cron.* 		/var/log/cron.log

这样就会将所有与cron相关的日志都记录在/var/log/cron.log文件中。

    2. 查看cron日志记录
    
    # less /var/log/cron.log
    
    在/var/log/cron.log文件中,cron输出的日志记录如下:
    
    Dec 09 15:48:53 centos CROND[4426]: (root) CMD (echo “hello cron” >> /var/log/cron.log)
    
    在cron日志中我们可以看到包括:
    
    时间 Dec 09 15:48:53
    任务是由哪个执行帐户执行的 centos
    任务的执行状态 SUCCESS
    任务的执行命令是:echo “hello cron” >> /var/log/cron.log

三、crontab日志的排错

在日常使用中,我们经常遇到计划任务执行失败或者没有被执行的情况,而这时我们需要使用日志排错功能来解决问题。

首先,我们需要明白crontab日志中包括了任务的执行情况,我们应该根据日志文件中的提示来解决问题。

例如,任务执行到一半时就停止了或者任务没有被执行,我们可以查找日志中的错误信息来判断问题的所在,然后修复相应的问题,使得任务能够正常运行。

同时,为了更加方便地查找错误信息,我们可以将日志文件保存到单独的文件中。这样做可以让我们更加专注于日志文件,并快速地对其中的错误进行排查和修复。

    3. 将cron日志保存到单独的文件中
    
    编辑/etc/syslog.conf文件,输入下面内容:
    
    cron.* /var/log/cron.log
    
    然后在命令行中,输入如下命令,重启rsyslog日志记录服务。
    
    # /etc/init.d/rsyslog restart
     
    这样,cron日志就会保存到/var/log/cron.log文件中,查找和定位问题就更为方便了。

四、crontab日志的自定义

除了默认的/var/log/cron.log之外,我们还可以根据自己的需要来配置crontab日志的输出位置和格式,使得在查看日志时更加方便。

我们可以通过在crontab的配置文件中添加指定的日志路径、名称、格式和存储策略来自定义日志输出方式。

    4. crontab日志文件配置实例
    
    * * * * * 【 -x /home/script/my.sh 】 && echo `date +\%Y-\%m-\%d \%H:\%M:\%S` >> /home/logs/mycron.log && /home/script/my.sh
    
    定义一个cron任务,每分钟检查/home/script/my.sh文件是否存在,如果存在则执行脚本并将输出结果保存到/home/logs/mycron.log文件中。
    
    [ -x /home/script/my.sh ] && (echo `date +\%Y-\%m-\%d \%H:\%M:\%S` && /home/script/my.sh) > /home/logs/mycron.log 2>&1
    
    可以将日志文件名、日志格式、存储位置和存储策略进行自定义,以实现更加个性化的日志记录方式。

五、crontab日志清理

在使用crontab的过程中,我们需要定期清理日志文件,以保证系统的稳定性和空间利用率。

在Linux系统中,我们可以借助logrotate工具来实现日志文件的自动清理和备份。这个工具可以扫描指定的日志文件,根据一定的规则来定期清除旧的日志文件,并进行备份。

    5. logrotate的配置参数
    
    /home/logs/mycron.log {
      missingok,
      rotate 20,
      daily,
      compress,
      delaycompress,
    }
    
    这个配置文件将自动为crontab的日志文件执行以下操作:
    
    missingok:如果日志文件为空则不报错
    rotate 20:保留20个日志备份
    daily:按照日常基础轮替日志
    compress:备份日志文件并压缩和清晰
    delaycompress:跟gzip类似,表示下一次压缩操作会对当前日志文件进行压缩,但是并没有进行压缩操作,用于防止压缩时意外导致数据丢失的情况。

六、小结

本文介绍了crontab日志的作用、记录方式、排错方法、自定义和清理方法。通过这些知识点的学习,我们可以更好地了解和使用crontab管理计划任务,并且可以根据自己的需求对日志文件进行个性化和定制化。