運行R 報錯R cannot R_TempDir, 繼而發現/dev/mapper/VG00-LV01 磁盤空間已滿


今天在運行R腳本的時候報了個錯:Fatal error: cannot create 'R_TempDir'。排除了是自己寫的代碼的問題,想着應該是某個沒見過的原因,google之,發現網上的說法是/tmp文件夾占滿了磁盤空間。

運行 df 命令:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VG00-LV01
                             50G   47G   16M 100% /

發現確實有個分區被占滿了。。。

第一次碰到這種情況,繼續google之,使用如下命令

du -sh /* | sort -nr

可以得到 / 目錄下所有文件和目錄的大小的排序結果。

從中找出最大的,在我的機器中/var文件占用了47個G的大小,應該就是它了,使用上面的命令繼續追蹤:

du -sh /var/* | sort -nr
du -sh /var/log/* | sort -nr
du -sh /var/log/httpd/* | sort -nr

一層一層往下追蹤,最后發現是 httpd/目錄下的ssl_error_log占據了超大磁盤空間,看了下文件內容,估計是某次鏈接導致了大量錯誤信息被一遍遍的循環寫入。

不多想,直接把這文件刪除。

運行 df -i:

Filesystem              Inodes  IUsed     IFree IUse% Mounted on
/dev/mapper/VG00-LV01
                       3276800 226882   3049918    7% /
tmpfs                  4069835      7   4069828    1% /dev/shm
/dev/md0                 51200     39     51161    1% /boot
/dev/mapper/VG00-LV02
                      56705024  11756  56693268    1% /opt

沒有太大使用量,這是因為-i查看inode節點情況,和文件大小是不同概念。

再次運行df -h命令:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VG00-LV01
                             50G   47G   16M 100% /

仍然還是100%,明明已經刪除了啊。。。 不解,繼續google之。。

結論是“在Linux中,當我們使用rm在linux上刪除了大文件,但是如果有進程打開了這個大文件,卻沒有關閉這個文件的句柄,那么linux內核還是不會釋放這個文件的磁盤空間,最后造成磁盤空間占用100%,整個系統無法正常運行。這種情況下,通過df和du命令查找的磁盤空間,兩者是無法匹配的,可能df顯示磁盤100%,而du查找目錄的磁盤容量占用卻很小。”

找出文件使用者,kill掉:

lsof -n | grep deleted

找到使用ssl_error_log文件的進程,kill掉,然后再次df -h,發現已經沒有100%的情況了。

處理完成~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM