用lsof命令查看那些刪除了但是還打開著文件句柄的文件,然后kill -9 pid
lsof |grep deleted
以下參考: http://www.itdecent.cn/p/a3aa6b01b2e1
lsof是系統(tǒng)管理/安全的尤伯工具
顯示與指定目錄交互的所有一切: lsof /var/log/messages/
顯示與指定文件交互的所有一切: lsof /home/daniel/firewall_whitelist.txt
顯示daniel連接到1.1.1.1所做的一切: lsof -u daniel -i @1.1.1.1
lsof可以netstat和ps的全部工作
默認 : 沒有選項,lsof列出活躍進程的所有打開文件
組合 : 可以將選項組合到一起,如-abc,但要當(dāng)心哪些選項需要參數(shù)
-a : 結(jié)果進行“與”運算(而不是“或”)
-l : 在輸出顯示用戶ID而不是用戶名
-h : 獲得幫助
-t : 僅獲取進程ID
-U : 獲取UNIX套接口地址
-F : 格式化輸出結(jié)果,用于其它命令。可以通過多種方式格式化,如-F pcfn(用于進程id、命令名、文件描述符、文件名,并以空終止)
使用-i顯示所有連接: 語法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
lsof -i
使用-i 6僅獲取IPv6流量 :lsof -i 6
僅顯示TCP連接(同理可獲得UDP連接): lsof -iTCP
使用-i:port來顯示與指定端口相關(guān)的網(wǎng)絡(luò)信息: lsof -i :22
使用@host:port顯示基于主機與端口的連接: lsof -i@172.16.12.5:22
找出正等候連接的端口: lsof -i -sTCP:LISTEN , 可以grep “LISTEN”來完成該任務(wù): lsof -i | grep -i LISTEN
找出已建立的連接: lsof -i -sTCP:ESTABLISHED , 可以通過grep搜索“ESTABLISHED”來完成該任務(wù):lsof -i | grep -i ESTABLISHED
使用-u顯示指定用戶打開了什么: lsof -u daniel
使用-u user來顯示除指定用戶以外的其它所有用戶所做的事情: lsof -u ^daniel
殺死指定用戶所做的一切事情: kill -9 lsof -t -u daniel
命令和進程
使用-c查看指定的命令正在使用的文件和網(wǎng)絡(luò)連接: lsof -c syslog-ng
使用-p查看指定進程ID已打開的內(nèi)容: lsof -p 10075
-t選項只返回PID: lsof -t -c Mail
文件和目錄
通過查看指定文件或目錄,你可以看到系統(tǒng)上所有正與其交互的資源——包括用戶、進程等。
顯示與指定目錄交互的所有一切: lsof /var/log/messages/
顯示與指定文件交互的所有一切: lsof /home/daniel/firewall_whitelist.txt
顯示daniel連接到1.1.1.1所做的一切: lsof -u daniel -i @1.1.1.1
同時使用-t和-c選項以給進程發(fā)送 HUP 信號: kill -HUP `lsof -t -c sshd`
lsof +L1顯示所有打開的鏈接數(shù)小于1的文件 : lsof +L1(這通常(當(dāng)不總是)表示某個攻擊者正嘗試通過刪除文件入口來隱藏文件內(nèi)容。)
顯示某個端口范圍的打開的連接: lsof -i @fw.google.com:2150=2180
常用lsof 命令 案例
lsof指令的用法:
lsof abc.txt 顯示開啟文件abc.txt的進程
lsof -i :22 知道22端口現(xiàn)在運行什么程序
lsof -c abc 顯示abc進程現(xiàn)在打開的文件
lsof -g gid 顯示歸屬gid的進程情況
lsof +d /usr/local/ 顯示目錄下被進程開啟的文件
lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長
lsof -d 4 顯示使用fd為4的進程 [www.2cto.com](http://www.2cto.com)
lsof -i 用以顯示符合條件的進程情況
語法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4位置
service --> /etc/service中的 service name (可以不只一個)
port --> 端口號 (可以不只一個)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
[tcp@ohaha.ks.edu.tw](mailto:tcp@ohaha.ks.edu.tw):ftp - TCP protocol [hosthaha.ks.edu.tw](http://hosthaha.ks.edu.tw) service name:ftp
lsof -n 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)
例子: lsof -i [tcp@ohaha.ks.edu.tw](mailto:tcp@ohaha.ks.edu.tw):ftp -n
lsof -p 12 看進程號為12的進程打開了哪些文件
lsof +|-r [t] 控制lsof不斷重復(fù)執(zhí)行,缺省是15s刷新
-r,lsof會永遠不斷的執(zhí)行,直到收到中斷信號
+r,lsof會一直執(zhí)行,直到?jīng)]有檔案被顯示
例子:不斷查看目前ftp連接的情況:lsof -i [tcp@ohaha.ks.edu.tw](mailto:tcp@ohaha.ks.edu.tw):ftp -r
lsof -s 列出打開文件的大小,如果沒有大小,則留下空白
lsof -u username 以UID,列出打開的文件 [www.2cto.com](http://www.2cto.com)
其他:
進程調(diào)試命令:truss、strace和ltrace
進程無法啟動,軟件運行速度突然變慢,程序的"SegmentFault"等等都是讓每個Unix系統(tǒng)用戶頭痛的問題,而這些問題都可以通過使用truss、strace和ltrace這三個常用的調(diào)試工具來快速診斷軟件的"疑難雜癥"。