一、情景描述
節點磁盤空間告警,使用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
計劃任務失敗通知郵件)可能會丟失掉,如果完全是自己用的服務器,基本沒事。
評論