? ? ? ? 系統(tǒng)運行過程中發(fā)現(xiàn)無法上傳文件,第一反應(yīng)是磁盤空間不足導(dǎo)致,登錄服務(wù)器后查看文件存放的空間充足,但是無法上傳文件且命令行的tab鍵自動補充也提示空間不足。最后經(jīng)過搜索和分析發(fā)現(xiàn)是/tmp 文件夾占用100%導(dǎo)致。以下記錄分析和解決流程。
?問題分析
????????服務(wù)器環(huán)境
????????????????操作系統(tǒng):銀河麒麟V10
????????????????CPU:鯤鵬(ARM)
1. 通過 df -h 查看磁盤占用,發(fā)現(xiàn)/dev/vdb1 (文件存放路徑)占用42%,空間充足;但是/tmp 文件夾占用率100%;
df -h
?
????????這里已經(jīng)釋放了部分空間所以/tmp占用為91%。
2. 進(jìn)入/tmp路徑查看占用情況,發(fā)現(xiàn)文件占用才5.7M,實際總空間有16G。
cd /tmp
3. 由于tmp為臨時文件夾,文件使用結(jié)束后自動刪除,猜測存在文件被刪除但是空間未釋放的情況。通過 lsof? /tmp 查看文件情況,發(fā)現(xiàn)有大量的文件被刪除但是依舊被進(jìn)程占用,導(dǎo)致無法釋放空間。
lsof? /tmp
4. 通過以上截圖查看占用文件的進(jìn)程PID為3860289,此進(jìn)行未部署的springboot項目。正常情況下重啟項目即可釋放,但是當(dāng)前為線上項目,重啟會影響用戶使用。所以需要不通過重啟釋放空間。
解決問題
1. 查詢文件占用進(jìn)程的文件fd信息 ls -i /proc/{進(jìn)程PID}/fd 舉例如下:
?ls -i /proc/3860289/df
2. 通過 >/proc/{進(jìn)程pid}/fd/{文件fd} 解除空間占用(文件fd為上圖中紅色部分第一個數(shù)字),舉例如下:
>/proc/3860289/fd/999
3. 批量解除文件占用,可通過編寫shell腳本解決,舉例:刪除pid為3860289中fd為500到1000的文件占用。文章來源:http://www.zghlxwxcb.cn/news/detail-754656.html
#!/bin/bash
for i in {500..1000}
do
/proc/3860289/fd/$i
done
4. 以上為臨時刪除文件占用,最后可通過重啟應(yīng)用解決問題?kill -9 {PID}文章來源地址http://www.zghlxwxcb.cn/news/detail-754656.html
kill -9 3860289
到了這里,關(guān)于Linux顯示磁盤空間不足,/tmp文件夾占用100%問題分析和解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!