fuser (Unix)

Unix命令fuser用於顯示哪些進程正在使用給定的文件文件系統unix套接字。例如,要查看訪問USB驅動器的進程ID及其用戶:

$ fuser -m -u /mnt/usb1
/mnt/usb1:   1347c(root)  1348c(guido)  1349c(guido)

該命令顯示使用指定文件或文件系統進程的進程標識符。在默認的顯示模式下,每個文件名後跟一個字母,表示訪問類型:

c
當前目錄。
e
正在運行的可執行文件。
f
打開的文件。
F
打開的寫入文件。
r
根目錄。
m
mmap的文件或共享庫

該命令還可以用來檢查哪些進程正在使用網絡端口:

$ fuser -v -n tcp 80
                     USER        PID ACCESS COMMAND
80/tcp:              root       3067 F.... (root)httpd
                     apache     3096 F.... (apache)httpd
                     apache     3097 F.... (apache)httpd

如果沒有訪問任何文件或發生致命錯誤,該命令將返回非零代碼。如果至少有一次訪問成功,則返回零。「fuser」的輸出可能有助於診斷嘗試卸載文件系統時產生的「資源繁忙」消息。

選項

-k
殺死所有訪問文件的進程。例如,fuser -k /path/to/your/filename會殺死所有訪問此目錄的進程而無需確認。使用-i在操作前進行確認
-i
交互模式。殺死進程前提示
-v
詳細模式
-u
顯示用戶名
-a
顯示所有文件
-m
name指定已掛載的文件系統或塊設備上的文件。列出所有訪問該文件系統上文件的進程。如果指定了目錄文件,將自動更改為name/.,即是可能掛載在此目錄中的任何文件系統。

另外,請注意-k將向進程發送SIGKILL。使用-signal發送不同的信號。有關fuser支持的信號列表,運行「fuser -l」。

相關命令

  • 所有打開的文件及其打開的進程列表都可以通過lsof命令獲得。
  • BSD操作系統上的等價命令是fstat(1)

外部連結

fuser – 命令與工具(Commands & Utilities)參考,單一UNIX®規範第7期,由國際開放標準組織發布