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