謹記: 大多數服務在運行時,是不能刪除對應的服務正在寫入的日誌文件,會帶來意料以外的結果!!!spa
Linux是經過link的數量來控制文件刪除的,link包括被調用的數量和硬連接數量。rest
真正的刪除一個文件,只有在文件未被進程調用的狀況下,刪除該文件的全部硬連接數便可。日誌
若是在進程調用時,經過rm命令刪除一個文件,是沒法完全刪除的,該文件依然存在,只不過經過ls命令沒法看到而已!code
案例: 刪除進程正在調用的/var/log/secure文件進程
[root@t-c6 ~]# ls /var/log/secure /var/log/secure [root@t-c6 ~]# \rm -rf /var/log/secure [root@t-c6 ~]# ls /var/log/secure ls: 沒法訪問/var/log/secure: 沒有那個文件或目錄經過命令lsof能夠看到,該文件並未完全刪除,由於系統進程正在寫入數據到該文件中,進程調用數不爲零致使的!it
[root@t-c6 ~]# lsof | grep deleted rsyslogd 917 root 2w REG 252,1 5573745 41014 /var/log/secure (deleted)如何解決該問題?grep
重啓對應的服務數據
[root@t-c6 ~]# /etc/init.d/rsyslog restart 關閉系統日誌記錄器: [肯定] 啓動系統日誌記錄器: [肯定]
未來有一天發現磁盤block滿了,經過du -sh /* | grep G,並未發現太大的文件,多是刪除了不應刪除的文件,致使文件大小一直增加,致使block滿了,可經過 # lsof | grep deleted 查看 文件
只有進程調用數爲0而且硬連接數爲0,該文件才能完全刪除! co
注:我使用的系統爲:CentOS release 6.9 (Final)