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文件刪掉,並停止該腳本問題就解決了

ps:問題解決之后,運維哥哥還用netstat -utlpn|grep 2命令掃了下服務器開放的端口,建議改掉這些默認的,因為現在有很多黑客會掃描這些端口,存在安全隱患

總結

這次主要是自己搞的烏龍事件,測試完之后沒有及時停止該定時腳本,導致一直打印log占滿硬盤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM