最近,有几台线上服务器突然先后Nagios告警,/tmp目录使用率100%.
立即上/tmp目录查看哪些文件占了空间,使用du -sh命令查看/tmp文件占用情况,发现占用很小。
这是怎么回事呢?df -h命令明明显示 /tmp占满了。
使用 lsof /tmp命令查看文件打开情况,如下所示:
原来都被打开的文件占满了,而这些文件都是deleted状态。
看起来和puppet有关,puppet上次更新时间刚好为20130108.
但上次puppet更新完之后,只有部分进程有这个临时文件,部分进程是没有这个临时文件的。
通过一番推测,最后发现是用puppet脚本启动这些进程时,这些进程的启动脚本会往控制台输出大量日志信息。
这些日志信息最后写到了临时文件中,越积越多,最后占满了/tmp目录。
修改方法,就是将启动脚本中需要输出的信息输入到/dev/null中。
经验:任何脚本,不要随意往控制台输出信息。如果确实不需要这些信息,可以输入到/dev/null中