一、情景描述
节点磁盘空间告警,使用df -h查看发现是/var盘满了,cd进入/var目录下,du -sch log/ 发现是log目录占用空间大,cd切换到log目录下,du -dh *查看是因为maillog日志太大导致的,故需要清理maillog日志。
二、处理过程
我是想将maillog分割成几个小文件,再删除很久之前的数据,但是/var空间满了,我就将maillog移动到/tmp目录下进行分割。
①mv /var/log/maillog /tmp
②split -b 500M /tmp/maillog
分割完成后我就将/var/log/maillog文件和/tmp/maillog删除了,想要将分割好的小文件移动到/var/log下,但是还是提示没有空间,使用df -h查看发现/var使用率100%了,但是在/var下的各个目录都很小,然后查看delete进程。
③lsof | grep delete 找到了删除/var/log/maillog的进程。
④kill -9 PID 删除对应的进程。
至此空间告警恢复,再将之前分割好的小文件移动到/var/log下即可。
三、补充清空日志方法
查询打开/var/log/messages文件的进程的进程ID(PID):
lsof | grep messages
得到输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1455 root 4w REG 8,6 1299113404 2686 messages
abrt-dump 1932 root 4r REG 8,6 1299113404 2686 messages
结束生成messages的进程:
kill -9 1455
kill -9 1932
清空日志并重启:
cat /dev/null > /var/log/messages
reboot