起因
今天在本地提交了點代碼,但到服務器上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占滿硬盤。