fuser 指令
用途
使用文件或文件結構識別進程。
語法
fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]文件 ...
說明
此 fuser 命令列出了本地進程的進程號,那些本地進程使用File 參數指定的本地或遠程文件。對於阻塞特別設備,此命令列出了使用該設備上任何文件的進程。
每個進程號後面都跟隨一個字母,該字母指示進程如何使用文件。
c 將此文件作爲當前目錄使用。
e 將此文件作爲程序的可執行對象使用。
r 將此文件作爲根目錄使用。
s 將此文件作爲共享庫(或其它可裝載對象)使用。
進程號被寫入標準輸出(在進程號之間有空格的行中)。一個換行符被寫入標準錯誤(在每個文件操作數的最後一個輸出之後)。其他所有輸出被寫入標準錯誤。
此 fuser 命令不會檢測有 mmap 區域的進程,其中相關的文件描述符已從此被關閉。
標記
-c 包含 File的文件系統中關於任何打開的文件的報告。
-d 暗示使用了 -c 和 -x 標誌。關於任何與文件系統(自父目錄刪除的)無鏈接的打開文件的報告。當與 -V 標誌一起使用時,它也會報告被刪除文件的節點號和大小。
-f 僅對文件的打開實例報告。
-k 將 SIGKILL 信號發送到每個本地進程。僅有根用戶能終止另一用戶的進程。
-u 爲進程號後圓括號中的本地進程提供登錄名。
-V 提供詳細輸出。
-x 與 -c 或 -f 連用,報告除標準 fuser 輸出以外的可執行的和可載入的對象。
示例
若要列出使用 /etc/passwd 文件的本地進程的進程號,請輸入:
fuser /etc/passwd要列出使用 /etc/filesystems 文件的進程的進程號和用戶登錄名,請輸入:
fuser -u /etc/filesystems要終止全部使用給定的文件系統的進程,請輸入:
fuser -k -x -u /dev/hd1 -OR-
fuser -kxuc /home任一命令都列出了進程號和用戶名,然後終止每個正在使用 /dev/hd1 (/home) 文件系統的進程。僅有根用戶能終止屬於另一用戶的進程。如果你正在試圖卸下 /dev/hd1 文件系統,而一個正在訪問 /dev/hd1 文件系統的進程不允許這樣,您可能希望使用此命令。
要列出正在使用文件(已從給定文件系統刪除的文件)的全部進程,請輸入:
fuser -d /usr文件
/dev/kmem 用於系統映象。
/dev/mem 也用於系統映象。
相關信息
killall 命令、mount 命令和 ps 命令。
LSOF:
2) lsof -i :22 知道22端口現在運行什麼程序
3) lsof -c nsd 顯示nsd進程現在打開的文件
4) lsof -g gid 顯示歸屬gid的進程情況
5) lsof +d /usr/local/ 顯示/usr/local目錄下被進程開啓的文件
6) lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長
7) lsof -d 4 顯示使用fd爲4的進程
8) lsof -i [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
[email protected]:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp
9) lsof -n 不將IP轉換爲hostname,缺省是不加上-n參數
例子: lsof -i [email protected]:ftp -n
10) lsof -p 12 看進程號爲12的進程打開了哪些文件
11) lsof +|-r [t] 控制lsof不斷重複執行,缺省是15s刷新
-r,lsof會永遠不斷的執行,直到收到中斷信號
+r,lsof會一直執行,直到沒有檔案被顯示
例子:不斷查看目前ftp連接的情況:lsof -i [email protected]:ftp -r
12) lsof -s 列出打開文件的大小,如果沒有大小,則留下空白
13) lsof -u username 以UID,列出打開的文件
lsof -i TCP:port -n
lsof -i UDP:port -n
lsof -i :port -n
# lsof -i tcp:1521 -n
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 <file_system_name>
查看監聽socket
查看網絡服務
$ lsof -i
查看某個網絡連接
$ lsof [email protected]
$ lsof [email protected]: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 [email protected]: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 <PID>
使用命令名稱
$ lsof -c <first_characters_of_command_name_that_interest_you>
$ lsof -c sendmail
查看誰在使用設備文件
$ lsof /dev/hda6
查看某個用戶的操作
$ id -u tony
1000
$ lsof -u1000 or $ lsof -utony
$ lsof -u^tony * 則是取反的意思*