*問題
我們在生產中有時候會遇到磁碟空間滿了,造成作業系統崩潰情況,這因為作業系統後台有很多程式在不停的工作,比如說日誌就不停的在寫。我們的通常做法是,臨時清空一些沒有用的檔案資料來減輕系統的壓力,如果這個時候又有一些程式正在訪問占用這個檔案,我們該如何處理呢?
試驗模擬
第一次實驗:無程式占用磁碟空間的情況下清理磁碟空間
# df -h
df -h命令可以檢視實驗環境的磁碟空間情況
如上圖用掛載到/boot資料夾下的磁碟a的分割槽1來做實驗,磁碟總空間大小為969m,已經使用35m,可用885m,使用率為4%,現在把磁碟空間使用率提高至80%。
使用dd命令從裝置檔案/dev下寫0到/boot/資料夾下的新建的test檔案裡,大小為700m。
從圖上可以看出,/boot分割槽的使用率公升至80%。
現在使用rm命令刪除test檔案
從圖上可以看出,磁碟空間的使用率降低到4%,說明用rm命令成功的刪除了test檔案,並釋放了磁碟空間。
第二次實驗:有應用程式占用磁碟空間的情況下釋放磁碟空間
重複上面的命令,使/boot分割槽的使用率提高至80%,然後在同一作業系統上另外開一終端,使用vim命令編輯test檔案,不要退出。
切換終端終端,執行命令rm刪除test檔案
從顯示的結果看出,執行rm命令後,空間使用率並沒降下來,還是80%,接著我們可以執行 ls 命令檢視 test檔案 是否存在。
從圖上可以看到,boot目錄下沒有test檔案,說明執行 rm 命令只是刪除了test檔案,但是沒有釋放磁碟空間。刪除失敗,說明在有程式占用磁碟空間的情況,只是執行 rm 命令可以刪除資料夾,但是不能夠釋放磁碟空間。
第三次實驗:釋放被程式占用的磁碟空間
分析:實驗二發現有程式占用了test檔案,從而出現不能用 rm 刪除檔案釋放磁碟空間的情況,同時在真實環境中,很可能有多個程式占用要清裡的磁碟空間,如果採用殺死程序的方法管理程式,雖然可行,但是效率較低,不能達到快速釋放磁碟空間的目的。
這裡可以使用lsof命令檢視誰正在占用磁碟空間。
從圖上可以清楚的看出,vim正在占用test檔案。
分析:我們既不能用直接刪除test檔案方法來釋放磁碟空間,關閉程式的方法也達不到我們需求,那麼我們該怎麼辦呢?
其實我們可以用覆蓋test檔案內容的方法來釋放磁碟空間。
繼續上面的操作,我們在/boot分割槽磁碟空間使用率在80%,並且不退出vim編輯的情況下,執行 > /boot/test 命令
> /boot/test 命令的意思是大於括號前面的內容覆蓋後面的檔案內容,大於括號前面沒有內容,就為空,覆蓋後,檔案即為空。
從圖上看出,/boot分割槽下的磁碟空間使用率在不退出vim編輯模式的狀態下很快又變回了4%,說明釋放磁碟空間成功,實驗三成功。
在/boot資料夾下執行 ll 命令
從圖上可以看到test檔案還在,不過檔案內容大小已經為0,說明覆蓋成功。再執行 rm 命令刪除test檔案即可。
總結:實驗一中,在沒有程式占用檔案或者磁碟空間的情況下,直接 執行rm -rf 命令刪除檔案,即可釋放磁碟空間。實驗二中,有程式占用磁碟空間,用 rm -rf 可以刪除檔案,但是不能釋放磁碟空間,除非關閉程式。實驗三中,在程式占用磁碟空間的情況下,用覆蓋的方法可以釋放磁碟空間,達到強行釋放被程式占用磁碟空間的目的!
最後,感謝認真用心的自己~~微笑
強行釋放被程式占用的磁碟空間
強行釋放被程式占用的磁碟空間問題。我們在生產中有時候會遇到磁碟空間滿了,造成作業系統崩潰情況,這因為作業系統後台有很多程式在不停的工作,比如說日誌就不停的在寫。我們的通常做法是,臨時清空一些沒有用的檔案資料來減輕系統的壓力,如果這個時候又有一些程式正在訪問占用這個檔案,我們該如何處理呢?試驗模擬 第...
Linux磁碟空間釋放
在近期的實際工作中,遇到過幾次因為磁碟空間滿而導致服務不可用的情況,所以免不了要對系統進行清理。在最開始的幾次清理過程中,通過刪除一些大日誌檔案可以得到立竿見影的效果,所以就沒怎麼注意 但是在最近一次的清理過程中,發現根目錄的使用率已經到達百分百,但是並沒有在根目錄下發現有什麼大檔案,所以無法僅通過...
檢視mysql占用磁碟空間
查詢所有資料庫占用磁碟空間大小的sql語句 select table schema,concat truncate sum data length 1024 1024,2 mb as data size,concat truncate sum index length 1024 1024,2 mb ...