fuser — 顯示哪些程序在使用指定的檔案或 socket

找出正在使用指定檔案、目錄或 port 的程序。

語法

fuser [選項] 名稱...

常用選項

選項 說明 範例
-k 對所有找到的程序傳送 SIGKILL fuser -k /path/to/file
-i 傳送訊號前先詢問確認 fuser -ki /path
-l 列出所有可用的訊號名稱 fuser -l
-m 目標是已掛載的檔案系統(找所有使用者) fuser -m /mnt/usb
-n 命名空間 指定命名空間(file/tcp/udp) fuser -n tcp 80
-v 詳細輸出(顯示使用者、PID、存取模式、指令) fuser -v /var/log/syslog

使用範例

範例 1:找出占用 80 port 的程序

查詢哪個程序正在使用 TCP 80 port。

$ fuser 80/tcp
80/tcp:               1234
範例 2:找出使用特定檔案的程序

查詢哪些程序開啟了 /var/log/nginx/access.log。

$ fuser -v /var/log/nginx/access.log
                     USER        PID ACCESS COMMAND
/var/log/nginx/access.log:
                     www-data   1234 F.... nginx
範例 3:解決裝置忙碌問題

找出是哪個程序佔用了 USB 磁碟,讓 umount 成功。

$ fuser -mv /mnt/usb/     # 找出佔用程序
fuser -k /mnt/usb/      # 終止所有佔用程序
umount /mnt/usb/        # 再次卸載
                     USER        PID ACCESS COMMAND
/mnt/usb:            alice      5678 ..c.. bash

延伸閱讀