linux中crontab定时任务导致磁盘满和云监控未报警的的坑

一个后台开发者,兼职运维工作中,配置linux中crontab定时任务,导致磁盘满和云监控未报警的问题的坑。

1.磁盘满

使用命令

df -h

2.问题排查

2.1排查日志 命令

cat /var/log/messages

日志文件的默认路径是:/var/log

下面是几个重要的日志文件的路径及其包含的信息:

/var/log/syslog:它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息。

/var/log/messages:包括整体系统信息,其中也包含系统启动期间的日志。此外,还包括mail,cron,daemon,kern和auth等内容。

/var/log/cron 用来记录任务计划的运行日志,如下,分别表示:
任务运行的日期与时间 、在哪台主机上运行 、运行任务的程序[进程号] 、任务运行的具体信息

/var/log/user.log:记录所有等级用户信息的日志。

/var/log/auth.log:包含系统授权信息,包括用户登录和使用的权限机制等。

/var/log/daemon.log:包含各种系统后台守护进程日志信息。

/var/log/kern.log:包含内核产生的日志,有助于在定制内核时解决问题。

一直有提示错误提示:No configuration file found at /root/.esmtprc or /etc/esmtprc

2.2 进入根目录查看目录大小

cd /
du -sh *

使用这个命令,可以查看隐藏的  ls -la

linux中crontab定时任务导致磁盘满和云监控未报警的的坑_第1张图片

2.3在进入磁盘大的目录

linux中crontab定时任务导致磁盘满和云监控未报警的的坑_第2张图片

2.4结果

cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了root/.esmtp_queue/ 目录下的那些文件,日积月累可能撑破磁盘。

3.解决方法

3.1 删除不用的文件

可以参考已这个文档:Linux服务器清理磁盘

3.2 永久解决

设置MAILTO参数为空
方法一:

vim /etc/crontab
将 MAILTO=root 替换成  MAILTO=""

service crond restart

方法二:

crontab -e 
 第一行加上MAILTO=""(指定邮箱发送位置)

然后 重启 service crond restart

另外一个坑:开了磁盘报警功能,达到预警值了。结果没有消息通知。
linux中crontab定时任务导致磁盘满和云监控未报警的的坑_第3张图片
后面阿里云排查,说需要主机监控这里要是运行中才行。
linux中crontab定时任务导致磁盘满和云监控未报警的的坑_第4张图片

打工不易,业余时间捣鼓了一个小程序,欢迎访问和点评!
linux中crontab定时任务导致磁盘满和云监控未报警的的坑_第5张图片

你可能感兴趣的:(Nginx,linux,运维,服务器)