萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux fuser 指令詳解:查詢檔案/連接埠/檔案系統佔用進程並一鍵殺掉

fuser 能快速找出正在存取特定檔案、目錄、Socket 埠口、檔案系統的進程,**並可直接發送信號終止它們**,比 lsof 更適合「查詢+清理」一體化操作。本文詳細說明參數、輸出解讀、實戰場景與信號控制。

fuser 基本輸出

基本語法與常用參數


fuser [選項] 檔案|目錄|埠口|檔案系統
參數功能
-v詳細模式:顯示 PID、用戶、存取類型、指令
-k殺死存取進程 (預設 SIGKILL)
-i互動模式:殺死前逐一確認
-s靜默模式:不輸出資訊,僅回傳退出碼
-m指定檔案系統掛載點 (等同直接給掛載點)
-n space指定名稱空間:file (預設)、tcp/udp 埠口
-signal指定信號 (如 -TERM, -HUP),預設 -KILL

輸出欄位解讀 (搭配 -v)


$ fuser -v /root
                     USER        PID ACCESS COMMAND
/root                root       1234  ...c   bash

實戰場景範例

1. 查詢檔案/目錄佔用


fuser -v /var/log/syslog
fuser -v /home/user/project/

2. 查詢 TCP/UDP 埠口佔用


fuser -v -n tcp 80
fuser -v -n udp 53
# 等同 ss -ltnp 'sport = :80' / lsof -i :80

fuser 查詢埠口

3. 查詢檔案系統佔用 (umount 失敗 device busy 時)


fuser -v /mnt/data
# 或指定掛載點
fuser -mv /mnt/data

fuser 查詢檔案系統

4. 一鍵殺死佔用進程 (核心優勢)


# 發送 SIGKILL (-9)
fuser -k /mnt/data

# 發送 SIGTERM (-15) 優雅關閉
fuser -k -TERM /mnt/data

# 互動式確認
fuser -ki /home/user/important.db

fuser 信號選項

5. DRBD/叢集切換場景:強制釋放檔案系統


# 切換前確保無進程佔用
fuser -ck /data  # -c 同 -m,針對檔案系統
# 等同 fuser -km /data

fuser vs lsof 對照

ACCESS 字元含義
c當前工作目錄 (cwd)
e可執行檔 (exe)
f開啟的檔案 (預設不顯示)
F開啟且寫入的檔案 (預設不顯示)
r根目錄 (chroot)
m記憶體映射檔案/共享庫
特性fuserlsof
查詢速度極快 (核心介面)較慢 (掃描 /proc)
殺死進程內建 -k 一鍵完成需配合 kill 手動處理
資訊豐富度基本 (PID, 用戶, 存取類型, 指令)極詳盡 (FD, 偏移量, 節點, 連線狀態...)
埠口查詢支援 -n tcp/udp支援 -i :port 更直觀
適用場景快速清理、umount 前檢查深度除錯、取證分析

常見問題

  • fuser: command not found → sudo apt-get install psmisc (Debian/Ubuntu) 或 sudo yum install psmisc (RHEL/CentOS)
  • 需 root 權限查看其他用戶進程/殺死進程
  • 對網路命名空間 (netns) 內進程需加 -n 指定

掌握 fuser -v 查詢與 fuser -k 清理,讓「裝置忙碌無法卸載」、「埠口被佔用無法啟動」等常見運維難題迎刃而解。

copyright © 萬盛學電腦網 all rights reserved