線上機器一直再報 磁盤使用率大於90%,發現/var/log/下邊有個mail文件,很大就直接清理掉>mail
但是這個問題反覆出現,感覺一個沒有什麼業務的機器怎麼磁盤使用率那麼大 就查了下mail日誌文件的形成
ps 發現有好多sendmail、postdrop進程
在網上查了下他們的關係才知道
crond在執行腳本的時候會將腳本輸出信息通過調用sendmail發郵件給系統用戶,sendmail有會調用postdrop發送郵件,由於postfile服務異常郵件沒有發送成功,造成sendmail postdrop無法正常退出
解決辦法:
刪除sendmail,postdrop進程,是內存降下來
ps -ef |grep 'mail'|awk -F" " '{print $2}'|xargs kill -9
ps -ef |grep 'postdrop'|awk -F" " '{print $2}'|xargs kill -9
關閉crond的郵件通知
修改/etc/crontab,/etc/cron.d/0hourly中MAILTO=root修改爲MAILTO=""
crontab -e第一行增加一段MAILTO=""
修改crontab -e 遇到No space left on device
df -h 發現磁盤使用沒有問題
df -i 發現/var下磁盤的inode使用量100%
find */ ! -type l | cut -d / -f 1 | uniq -c 發現/var/spool/postfix/maildrop有好多文件,這些文件就是sendmail發送失敗,堆積在maildrop中
清理掉這個目錄 發現sendmail,postdrop進程又出現了 然後重啓crond,觀察沒有再出現
df -h顯示磁盤佔用是沒有問題;但是df -i顯示磁盤inode資源佔用完。
inode譯成中文就是索引節點,每個存儲設備(例如硬盤)或存儲設備的分區被格式化爲文件系統後,應該有兩部份,一部份是inode,另一部份是Block,Block是用來存儲數據用的。而inode呢,就是用來存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。inode爲每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,能通過inode值最快的找到相對應的文件。
這種情況的原因通常是:儘管那個分區的磁盤佔用率未滿,但是inode已經用完,應該是該磁盤的某些目錄下存在大量的小文件導致。儘管小文件佔用的磁盤空間並不大,但是數量太多,inode用盡。