新聞中心
今天有個(gè)實(shí)習(xí)生問(wèn)了我一個(gè)詭異的問(wèn)題,“線(xiàn)下一臺(tái)磁盤(pán)大小32G的開(kāi)發(fā)機(jī)(虛擬機(jī))打不出日志”,把追查過(guò)程和大家分享一下。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括五臺(tái)網(wǎng)站建設(shè)、五臺(tái)網(wǎng)站制作、五臺(tái)網(wǎng)頁(yè)制作以及五臺(tái)網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,五臺(tái)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到五臺(tái)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
畫(huà)外音:貴司開(kāi)發(fā)機(jī)磁盤(pán)容量多大?
先du一下,查看磁盤(pán)空間:
- [shenjian@dev02 ~]# du -sch /
- 16G /
畫(huà)外音:似乎還有空間。
再試了一下df,發(fā)現(xiàn)結(jié)果不一樣:
- [shenjian@dev02 ~]$ df -h
- 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
- /dev/sda2 33G 33G 33G 100% /
- /dev/sda1 965M 30M 886M 4% /boot
畫(huà)外音:顯示32G都用完了。
du:disk usage
通過(guò)搜索文件來(lái)計(jì)算每個(gè)文件的大小然后累加得到的值。
df:disk free
通過(guò)文件系統(tǒng)來(lái)獲取空間大小的信息。
如果用戶(hù)刪除了一個(gè)正在運(yùn)行的應(yīng)用程序所打開(kāi)的某個(gè)目錄下的文件:
- du命令返回的值,顯示出減去了該文件后的總大小
- df命令返回的值,則不顯示減去該文件后的大小(文件句柄還在被使用),直到該運(yùn)行的應(yīng)用程序關(guān)閉了這個(gè)打開(kāi)的文件(才會(huì)真正釋放空間)
常見(jiàn)的場(chǎng)景是,刪除了一個(gè)很大的正在寫(xiě)入的tomcat的access日志,du顯示的結(jié)果會(huì)把日志大小減去,而df則仍會(huì)包含該日志的大小(實(shí)際上tomcat仍引用了該文件的句柄)。
對(duì)我們的啟示是,如果要?jiǎng)h除某個(gè)access日志,不要粗暴的rm,而要溫柔的:
- echo "" > access.log
畫(huà)外音:朋友們,有沒(méi)有rm過(guò)仍被引用的日志?
如何發(fā)現(xiàn)被應(yīng)用程序引用著“已刪除”文件呢?
lsof:list open files
使用lsof查看打開(kāi)的文件。
lsof | grep deleted
結(jié)果顯示,一個(gè)我的logsvr程序(跑了幾個(gè)月了),和實(shí)習(xí)生寫(xiě)的web-server程序(實(shí)習(xí)大作業(yè))呈現(xiàn)deleted狀態(tài),值得懷疑。
畫(huà)外音:請(qǐng)?jiān)谑謾C(jī)上把圖放大。
最終定位出,是web-server程序中的一個(gè):
- while(pid=fork())
手誤寫(xiě)成了:
- while(pid==fork())
導(dǎo)致while內(nèi)一直fork進(jìn)程,直到將系統(tǒng)資源吃干。并且該進(jìn)程已經(jīng)成了zombie進(jìn)程,無(wú)法kill掉,重啟開(kāi)發(fā)虛擬機(jī)后,問(wèn)題得到解決。
畫(huà)外音:我去,多了一個(gè)等號(hào),這個(gè)bug好真實(shí)。
一分鐘不長(zhǎng),希望大家有收獲:
- du:disk usage
- df:disk free
- lsof:list open files
- echo "" > access.log
【本文為專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
網(wǎng)站名稱(chēng):磁盤(pán)滿(mǎn)了,為啥du卻顯示還有很大空間?
文章位置:http://www.5511xx.com/article/copsihh.html


咨詢(xún)
建站咨詢(xún)
