程式扎記: [Linux 小學堂] lsof ( 列出被程序所開啟的檔案檔名 )

標籤

2010年12月12日 星期日

[Linux 小學堂] lsof ( 列出被程序所開啟的檔案檔名 )

Source (VBird:鳥哥) 
相對於 fuser 是由檔案或者裝置去找出使用該檔案或裝置的程序,反過來說, 如何查出某個程序開啟或者使用的檔案與裝置呢?呼呼!那就是使用 lsof 囉~ 

[root@www ~]# lsof [-aUu] [+d]
選項與參數:
-a :多項資料需要『同時成立』才顯示出結果時!
-U :僅列出 Unix like 系統的 socket 檔案類型;
-u :後面接 username,列出該使用者相關程序所開啟的檔案;
+d :後面接目錄,亦即找出某個目錄底下已經被開啟的檔案!


範例一:僅列出關於 root 的所有程序開啟的 socket 檔案 
linux-7xud:~ # lsof -u root -a -U 
gnome-ses 3523 root 12u unix 0xd30ce200 9861 /tmp/orbit-root/linc-dc3-0-31e7d75dbff1e 
gnome-ses 3523 root 13u unix 0xd3df6e40 9862 /tmp/.ICE-unix/3523 
gnome-ses 3523 root 14u unix 0xd3df69c0 9888 socket 
gnome-ses 3523 root 16u unix 0xd3df6540 9891 /tmp/orbit-root/linc-dc3-0-31e7d75dbff1e 
gnome-ses 3523 root 18u unix 0xd390a3c0 10123 /tmp/.ICE-unix/3523 
gnome-ses 3523 root 19u unix 0xd1131980 10180 socket 
....(以下省略).... 

範例二:請列出目前系統上面所有的被啟動的周邊裝置 
linux-7xud:~ # lsof +d /dev/ 
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME 
init 1 root 10u FIFO 0,13 2146 /dev/initctl 
udevd 891 root 0u CHR 1,3 2195 /dev/null 
....(以下省略).... 

範例三:秀出屬於 root 的 bash 這支程式所開啟的檔案 
linux-7xud:~ # lsof -u root | grep bash 
bash 3734 root cwd DIR 8,2 8192 32833 /etc 
bash 3734 root rtd DIR 8,2 4096 2 / 
bash 3734 root txt REG 8,2 501804 1920682 /bin/bash 
....(以下省略).... 

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!