值班室打电话过来,提醒说监控平台中某台TCU集群服务器告警,磁盘空间不足。

连上服务器,使用df -h查看当前磁盘使用情况,居然已经93%了。

通过查看目录大小命令

 du -sh *

 发现是Nginx服务的日志已经100多G了。

前期部署服务时,已经通过定时任务+sh命令分割了Nginx日志,并按时间进行清理,怎么会日志有这么大。

带着困惑,开始检查原因。

1、检查定时任务


centOS7 crontab两个小时 centos crontab日志_Centos

定时任务

2、检查服务是否执行


centOS7 crontab两个小时 centos crontab日志_Nginx_02

定时服务状态

看起来都是正常的,但是为什么执行不成功呢?首先考虑的是检查crontab执行的日志。

那么问题又来了,如何查看crontab的日志记录呢?

有两种方式可以查看定时任务日志:

1、通过查看系统日志目录下的定时任务日志

tail -300 /var/log/cron

 不同的安装方法、不同的系统版本,定时任务的日志目录可能不同,不能一概论之。

 2、通过查看当前用户mail

 tail -300  /var/spool/mail/root

 通过查看日志,发现定时任务执行时,报错如下:

/bin/sh: root: command not found

 怀疑是脚本有问题,执行脚本后却发现是正常的。那问题在哪里?为什么会提示root命令没找到?

按错误的关键词在网上搜索了下,没有找到答案,一时不知道该怎么办了。

难道是crontab配置问题?在网上搜索了下,发现了一个比较有趣的现象。

定时任务有两种配置方式:

1、在/etc/crontab下设置,需要指定用户名

2、直接用crontab -e,不需要指定用户

问题原因算是找到了,原来开发人员在部署时,在定时任务配置项中添加了root用户,导致命令执行时,把root当做命令来执行了。把配置中的root删除后,第二天检查时,定时任务正常执行完成。


centOS7 crontab两个小时 centos crontab日志_Nginx_03

定时任务情况

最后需要重点提醒的是:在定时任务(crond)中,最好把执行脚本或命令的全路径加上,否则经常出现执行失败,找不到指令文件的异常。如下图:

centOS7 crontab两个小时 centos crontab日志_Centos_04