天天看點

linux伺服器報No space left on device錯誤的解決過程記錄

起因

今天在本地送出了點代碼,但到伺服器上git pull的時候提示No space left on device,第一反應是猜想可能硬碟滿了(很有可能是log導緻的),不過想想又覺得不太可能,這台伺服器上隻部署了一個應用,檢視項目占用空間也不大。

解決過程

1、作為一個linux菜鳥,第一時間百度查關于檢視硬碟使用情況的指令

[root@iZ23nce0j6gZ ~]# df -h

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

/dev/hda1  20G     2.4G   18G   13%    /

tmpfs     1006M   0     1006M  0%    /dev/shm

上面顯示的内容是解決後的,因為終端關閉過,是以解決前的現象重制不出了,大緻就是隻顯示了第二行的内容,解決前是沒有中劃線那行的。當時就在想WTF

2、于是乎繼續查指令,無意間看到df /home這條指令,用之

[root@iZ23nce0j6gZ ~]# df /home

檔案系統   1K-塊    已用     可用   已用%   挂載點

/dev/hda1  20802016  20798393  3623   100%     /

阿西吧,終于發現這貨了,不出所料占用率達到100%,但是我還是不知道具體是哪些檔案引起的,于是找了公司的運維哥哥看了下

3、運維哥哥出馬,非同凡響,一下就找到了害群之馬

[root@iZ23nce0j6gZ ~]# ll -ah
-rw-r--r--  1 root root 20G 06-08 10:38 test.log      

哎喲卧槽,這什麼鬼占了20G,打開發現裡面百度的html代碼,難道是爬蟲打的日志

4、檢視該檔案是誰在寫入

[root@iZ23nce0j6gZ ~]# lsof test.log      

這指令隻能在檔案被寫入的時候才能顯示内容,最後雖然得到了個程序号,但是因為寫完程序就關閉了,是以還是查不到

5、突然我靈光一閃,隐約記起來之間自己寫了個測試的crontab定時腳本

[root@iZ23nce0j6gZ ~]# crontab -l*/1 * * * * /usr/bin/curl http://www.baidu.com >> /root/test.log 2>&1      

果然是它,是它,是它,就是它~

6、把test.log檔案删掉,并停止該腳本問題就解決了

總結

繼續閱讀