一、情景描述
节点磁盘空间告警,使用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
不需要邮件系统,直接卸载干净。如下。
1. 查看是否安装了邮件服务
直接查安装的软件包:
如果输出有 postfix
或 sendmail
,说明安装了邮件系统。
2. 查看邮件服务是否在运行
查一下系统服务状态:
如果是
active (running)
,就说明邮件服务正在运行。如果是
inactive
或not found
,说明没在跑,甚至可能没安装。
3. 检查端口监听
邮件服务器一般监听端口 25(SMTP端口)。
你可以用:
或者:
如果看到有程序(比如 master
是 postfix 的主进程)监听 25端口,那就是有邮件服务在运行。
4. 直接测试 sendmail
命令
在终端输入:
或者:
如果有返回路径或版本号,说明系统上有
sendmail
(可能是 Postfix 的 sendmail 兼容接口)。
总结一下:
检查方法 | 结果含义 |
---|---|
rpm -qa 查软件包 | 判断是否安装 |
systemctl status 查服务 | 判断是否运行 |
ss / netstat 查端口 | 判断是否监听 SMTP |
sendmail 命令 | 检查邮件发送接口 |
不过,有没有运行还得继续确认一下。
你可以马上查一下 Postfix 的服务状态:
如果你看到是 active (running),那就是在运行;如果是 inactive 或 dead,说明虽然安装了,但没启用。
如果你不需要邮件服务,有两种选择:
方案一:仅禁用 + 停止 Postfix(保留安装)
命令如下:
这样做的效果是:
Postfix 停止运行
以后开机也不会自动启动
但系统上还保留了 postfix 软件包(占用一点磁盘空间)
方案二:彻底卸载掉 Postfix
如果你完全不需要邮件系统,可以卸载:
然后它就从你的系统上彻底干净地消失了。
小提醒
卸载 postfix 后,系统有些通知(比如 cron
计划任务失败通知邮件)可能会丢失掉,如果完全是自己用的服务器,基本没事。
评论