發表於 程式分享

linux 遇到inode不夠的原因

在使用MySQL查詢時出現錯誤訊息:

Can’t create/write to file ‘/var/lib/mysql/#sql_ .MYI’ (Errcode: 28)

(後來重啟Mysql竟啟動失敗,因/var/lib/mysql/mysql.sock無法產生)

於Linux執行指令確認是disk space不足,

1

但執行指令df -h卻是尚有20%空間,

後來google發現有可能是inode不足,

執行df -i 果然inode不夠,

disk內有65萬個檔案;

後來找到路徑/var/spool/clientmqueue內共有50萬個檔案,

這個路徑的檔案是因為當cron執行時 會將相關結果以mail傳送給執行身份的帳號,

可是當sendmail 沒有啟動 那麼所有信件就會暫存在這個目錄,

因此就大膽的先刪除檔案,

檔案太多建議執行以下指令ls | xargs rm -rf刪檔,

刪除後DB就正常了。

建議若不需要傳送cron執行結果的排程最後方要加上:

1

即標準輸出、錯誤輸出均導至/dev/null刪除。