fuser命令小結

来源:http://www.cnblogs.com/lizhilin/archive/2016/01/07/5111004.html
-Advertisement-
Play Games

前提linux環境下,當使用umount命令卸載掛載點時,會遇到“device is busy”提示,這時fuser就能查出誰在使用這個資源;當然umount –lf [掛載點] 也可以強制卸載功能fuser 可以顯示出當前哪個程式在使用磁碟上的某個文件、掛載點、甚至網路埠,並給出程式進程的詳細信...


前提

linux環境下,當使用umount命令卸載掛載點時,會遇到“device is busy”提示,這時fuser就能查出誰在使用這個資源;當然umount –lf  [掛載點] 也可以強制卸載

功能

fuser 可以顯示出當前哪個程式在使用磁碟上的某個文件、掛載點、甚至網路埠,並給出程式進程的詳細信息.

fuser只把PID輸出到標準輸出,其他的都輸出到標準錯誤輸出。

常用選項

-a 顯示所有命令行中指定的文件,預設情況下被訪問的文件才會被顯示。
-c 和-m一樣,用於POSIX相容。
-k 殺掉訪問文件的進程。如果沒有指定-signal就會發送SIGKILL信號。結合 –signal

-signal 使用指定的信號,而不是用SIGKILL來殺掉進程。可以通過名稱或者號碼來表示信號(例如-HUP,-1),這個選項要和-k一起使用,否則會被忽略。

-l 列出所有已知的信號名稱。
-i 殺掉進程之前詢問用戶,如果沒有-k這個選項會被忽略。
-m name 指定一個掛載文件系統上的文件或者被掛載的塊設備(名稱name)。這樣所有訪問這個文件或者文件系統的進程都會被列出來。如果指定的是一個目錄會自動轉換成"name/",並使用所有掛載在那個目錄下麵的文件系統。
-n space 指定一個不同的命名空間(space).這裡支持不同的空間文件(文件名,此處預設)、tcp(本地tcp埠)、udp(本地udp埠)。對於埠,可以指定埠號或者名稱,如果不會引起歧義那麼可以使用簡單表示的形式,例如:name/space (即形如:80/tcp之類的表示)。
-s 靜默模式,這時候-u,-v會被忽略。-a不能和-s一起使用。 
-u 在每個PID後面添加進程擁有者的用戶名稱。
-v 詳細模式。輸出似ps命令的輸出,包含PID,USER,COMMAND等許多域,如果是內核訪問的那麼PID為kernel.

 

案例

假設無法卸載的設備為/dev/sdb1
1)運行下麵命令看一下哪個用戶哪個進程占用著此設備
fuser -m -v /dev/sdb1

2)運行下麵命令殺掉占用此設備的進程
fuser -m -v -k /dev/sdb1
或者fuser -m -v -k -i  /dev/sdb1(每殺掉一下進程會讓你確認)
3)再umount

 

查看那些程式使用tcp的80埠:
$fuser -n tcp 80
或$fuser -v -n tcp 80
或$fuser -v 80/tcp
這裡,後兩種方式顯示的信息比較全,因為有了-v選項

# fuser -v 111/udp 111/tcp 
                     用戶     進程號 許可權   命令
111/udp:             rpc         968 F.... rpcbind
111/tcp:             rpc         968 F.... rpcbind

如上例子中第4列的許可權也成訪問類型,如下:

c 代表當前目錄                              F 打開的文件,用於寫操作。預設不顯示。

e 可執行的被運行                          m 映射文件或者共用庫。

f 打開的文件。預設不顯示。         r 根目錄。    

其它相同命令:

# netstat -lntup|grep 111
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      968/rpcbind         
tcp        0      0 :::111                      :::*                        LISTEN      968/rpcbind         
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               968/rpcbind         
udp        0      0 :::111                      :::*                                    968/rpcbind
# ss  -lntup|grep 111       
udp    UNCONN     0      0                      *:111                   *:*      users:(("rpcbind",968,6))
udp    UNCONN     0      0                     :::111                  :::*      users:(("rpcbind",968,9))
tcp    LISTEN     0      128                   :::111                  :::*      users:(("rpcbind",968,11))
tcp    LISTEN     0      128                    *:111                   *:*      users:(("rpcbind",968,8))
# lsof -i :111
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 968  rpc    6u  IPv4  11275      0t0  UDP *:sunrpc 
rpcbind 968  rpc    8u  IPv4  11278      0t0  TCP *:sunrpc (LISTEN)
rpcbind 968  rpc    9u  IPv6  11280      0t0  UDP *:sunrpc 
rpcbind 968  rpc   11u  IPv6  11283      0t0  TCP *:sunrpc (LISTEN)

 

signal列表

# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
詳細使用命令 man 7signal

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • //#include#include#includestruct Word //定義結構數組儲存單詞{ char w[20]; int num;}Word[10000];void main() ...
  • class FileUtils{ //文件目錄下文件總數目 public static int fileNumber(File dir) { int filenumber = 0; if(dir.exists()) { ...
  • 在 FMX 下的 TComboBox 下拉菜單字型修改有二種方法:使用 Style,需先設定好 Style 後,再指定預設項的 Style,方法如下:procedure TForm1.FormCreate(Sender: TObject);var i: Integer;begin Combo...
  • String和StringBuffer、StringBuilder的區別
  • 第一節 介面慨述 介面(interface)用來定義一種程式的協定。實現介面的類或者結構要與介面的定義嚴格一致。有了這個協定,就可以拋開編程語言的限制(理論上)。介面可以從多個基介面繼承,而類或結構可以實現多個介面。介面可以包含方法、屬性、事件和索引器。介面本身不提供它所定義的成員的實現。介面只指....
  • protected void btnSend_Click(object sender, EventArgs e) 2: { 3: int temp = -1; 4: int exhibitionID = int.Parse(Request.QueryString["Con...
  • 背景 在程式中,我們調試運行時信息,Log4Net是一個不錯的解決方案。不知道是我用的不好,用到最後反而都不想看日誌了。原因是因為我n個功能使用的預設的Logger來記錄日誌,這樣以來,所有功能記錄的信息都依賴同一個配置,於是所有的信息都在一個文件中,有時候查找起來,極其不方便。 我想,能不能按.....
  • C#中的很多關鍵詞用法比較容易混淆,var和dynamic就是其中一組,他們都可以申明動態類型的變數,但是本質上他們還是有不少區別的。var 在編譯階段已經確定類型,在初始化時候,必須提供初始化的值,而dynamic則可以不提供,它是在運行時才確定類型。
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...