Linux磁碟空間檢視及空間滿的處理

2021-09-05 12:19:03 字數 2900 閱讀 4422

如果要檢視磁碟還剩多少空間,當然是用df的命令了。

[root@localhost ~]# df -h 

檔案系統              容量 已用 可用 已用% 掛載點 

/dev/sda2              14g   11g 2.6g 82% / 

/dev/sda1              99m   14m   81m 14% /boot 

tmpfs                 442m 275m 168m 63% /dev/shm 

24m 1.3m   21m   6% /mnt/lvm 

[root@localhost ~]#

當然你可能並不關係磁碟還剩餘多少空間,你是需要知道當前的資料夾下的磁碟使用情況:

[root@localhost ~]# du --max-depth=1 -h 

24k     ./.gnome   www.2cto.com  

8.0k    ./.eggcups 

8.0k    ./.config 

136k    ./.gnome2 

16k     ./.chewing 

8.0k    ./.gnome2_private 

8.0k    ./.trash 

224k    ./.gstreamer-0.10 

28k     ./desktop 

48k     ./.nautilus 

48k     ./.metacity 

240k    ./.scim 

3.4m    ./.mozilla 

1012k   ./.kde 

12k     ./.superkaramba 

40k     ./.local 

8.0k    ./.qt 

272k    ./.gconf 

32k     ./.mcop 

16k     ./.redhat 

1.7m    ./.thumbnails 

8.0k    ./.gconfd 

7.5m    . 

[root@localhost ~]#

看上面使用了du --max-depth=1 -h的命令來查詢磁碟的使用情況,因為後面沒有跟路徑,它就預設是當前的路徑。這個命令的-h引數是為了方便你讀懂每個檔案的大小,如果沒有這個引數顯示的檔案大小就沒有k,m,g等。執行命令後,前面n-1行的是該目錄下每個資料夾的大小。最後一行顯示的是該目錄總的大小。

然後你會說不在乎該目錄下每個檔案的大小,你只想知道其中某乙個檔案(資料夾)的大小,那麼有沒有辦法呢?當然你應該記得,我一直強調的,方法總比問題多,這兒也不例外。

請看下面的例子:

[root@localhost ~]# du -sh 

7.5m    .   www.2cto.com  

[root@localhost ~]#

聰明的你一定發現了這裡顯示的大小和上面最後一行的大小是一樣的。這就是說這裡顯示的大小是該目錄的總大小。

我知道你心裡在冷笑,不是方法比問題多嗎?這裡說的也只有乙個答案。當然,我不會讓你失望的。另乙個方法比較土,但是還是可以解決問題的。

[root@localhost ~]# du -h --max-depth=0 

7.5m    . 

[root@localhost ~]#

我想告訴你的是man手冊裡面已經告訴了:--max-depth=0的功能和-s的功能是一樣的。

當然你也可以通過sed列印最後du -h --max-depth=1一行來解決問題,但我並不推薦。

這裡涉及到乙個原則,盡量使用命令提供選項的原始功能。如果命令沒有提供該功能,才需要我們自己使用grep,sed,awk來選取我們需要的行。

當然du命令後面可以跟檔案路徑,來檢視指定路徑的大小的。

[root@localhost ~]# du -sh /opt/oracle 

5.6g    /opt/oracle 

[root@localhost ~]#

如果磁碟過大,那麼檢視檔案大小就比較忙,請等一會,呵呵。

今天在執行r指令碼的時候報了個錯:fatal error: cannot create 『r_tempdir』。排除了是自己寫的**的問題,想著應該是某個沒見過的原因,google之,發現網上的說法是/tmp資料夾佔滿了磁碟空間。

執行 df 命令:

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

du -sh /* | sort -nr

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

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

一層一層往下追蹤,最後發現是 httpd/目錄下的ssl_error_log佔據了超大磁碟空間,看了下檔案內容,估計是某次鏈結導致了大量錯誤資訊被一遍遍的迴圈寫入。

不多想,直接把這檔案刪除。

執行 df -i:

再次執行df -h命令:

結論是「在linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序開啟了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間占用100%,整個系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟100%,而du查詢目錄的磁碟容量占用卻很小。」

找出檔案使用者,kill掉:

lsof -n | grep deleted

找到使用ssl_error_log檔案的程序,kill掉,然後再次df -h,發現已經沒有100%的情況了。

處理完成~~

Linux磁碟空間檢視及空間滿的處理

以下 今天在執行r指令碼的時候報了個錯 fatal error cannot create r tempdir 排除了是自己寫的 的問題,想著應該是某個沒見過的原因,google之,發現網上的說法是 tmp資料夾佔滿了磁碟空間。執行 df 命令 第一次碰到這種情況,繼續google之,使用如下命令 ...

linux檢視磁碟空間

如果要檢視磁碟還剩多少空間,當然是用df的命令了。root localhost df h 檔案 系統 容量 已用 可用 已用 掛載點 dev sda2 14g 11g 2.6g 82 dev sda1 99m 14m 81m 14 boot tmpfs 442m 275m 168m 63 dev s...

linux檢視磁碟空間

root localhost du max depth 1 h 24k gnome www.2cto.com 8.0k eggcups 8.0k config 136k gnome2 16k chewing 8.0k gnome2 private 8.0k trash 224k gstreamer ...