歡迎您光臨本站 註冊首頁

Linux 有用的命令之 - lsof

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

LSOF是針對Unix的診斷和分析工具,它能顯示出由系統里正在運行的進程所打開的文件,也能顯示出每一個進程的通訊socket。

Contents

* 查看對某個文件的使用情況
* 查看對文件系統的使用
o 查找打開,但是不能連接的文件

* 無法卸載
* 查看監聽socket
* 查看某個網路連接
* 識別 Netstat 連接
* 查找針對某個命令打開的文件
* 查看某個用戶的操作
* 更多信息
* Bibliography

查看對某個文件的使用情況

查看哪些進程對某個文件進行了調用:

$ lsof /etc/passwd

查看對文件系統的使用

/tmp目錄被垃圾文件塞滿了, 但是, 用ls 又看不到太大文件, 誰幹的?

$ lsof /tmp

查找打開,但是不能連接的文件

一個進程打開一個文件, 然後將其設為 unlinked 狀態, 則此文件資源仍能被進程使用, 但是其訪問路徑已經被刪除了. 因此, 使用ls不能將其列出. 只有當進程結束時, 才能釋放文件佔用的資源

查找unlinked 文件, 選項 +L, 作用: 列出打開文件的連接數

$lsof +L

指定連接數的上限 $lsof +L1

同時指定文件系統, 則需要使用 -a(AND) 選項

$ lsof -a +L1 /home

無法卸載

查看誰令mount的分區無法卸載

$ lsof

查看監聽socket
查看網路服務

$ lsof -i

查看某個網路連接

$ lsof -i@aaa.bbb.ccc

$ lsof -iTCP@aaa.bbb.ccc:ftp-data *指定協議*

$ lsof -i4 *指定IP版本*

$ lsof -i6

識別 Netstat 連接
例如: netstat -p -t -n 的輸出為:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 218.56.203.246:52634 202.109.72.72:7000 ESTABLISHED

則可以: tony@tony:~$ lsof -iTCP@202.109.72.72:7000

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

xchat 4505 tony 12u IPv4 5775 TCP 218.56.203.246:52634->202.109.72.72:afs3-fileserver (ESTABLISHED)

查找針對某個命令打開的文件

使用命令的PID

$ lsof -p

使用命令名稱

$ lsof -c

$ lsof -c sendmail

查看誰在使用設備文件

$ lsof /dev/hda6
查看某個用戶的操作

$ id -u tony

1000

$ lsof -u1000 or $ lsof -utony

$ lsof -u^tony * 則是取反的意思*

[火星人 ] Linux 有用的命令之 - lsof已經有482次圍觀

http://coctec.com/docs/linux/show-post-133844.html