linux的瑞士軍刀:lsof/fuser/pkill/pgrep

來源:互聯網
上載者:User

linux的瑞士軍刀:lsof/fuser/pkill/pgrep lsof命令詳解:lsof命令的原始功能是列出開啟的檔案的進程,但LINUX下,所有的裝置都是以檔案的行式存在的,所以,lsof的功能很強大.一般root使用者才能執行lsof命令,普通使用者可以看見/usr/sbin/lsof命令,但是普通使用者執行會顯示“permission denied”sof指令的用法如下:lsof abc.txt 顯示開啟檔案abc.txt的進程lsof -i :22 知道22連接埠現在運行什麼程式lsof -c abc 顯示abc進程現在開啟的檔案lsof -g gid 顯示歸屬gid的進程情況lsof +d /usr/local/ 顯示目錄下被進程開啟的檔案lsof +D /usr/local/ 同上,但是會搜尋目錄下的目錄,時間較長lsof -d 4 顯示使用fd為4的進程 lsof -i 用以顯示合格進程情況文法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]46 –> IPv4 or IPv6protocol –> TCP or UDPhostname –> Internet host namehostaddr –> IPv4位置service –> /etc/service中的 service name (可以不只一個)port –> 連接埠號碼 (可以不只一個)例子: TCP:25 – TCP and port 25@1.2.3.4 – Internet IPv4 host address 1.2.3.4tcp@www.linuxidc.com:ftp – TCP protocol hosthaha.ks.edu.tw service name:ftplsof -n 不將IP轉換為hostname,預設是不加上-n參數例子: lsof -i tcp@www.linuxidc.com:ftp -nlsof -p 12 看進程號為12的進程開啟了哪些檔案lsof +|-r [t] 控制lsof不斷重複執行,預設是15s重新整理-r,lsof會永遠不斷的執行,直到收到中斷訊號+r,lsof會一直執行,直到沒有檔案被顯樣本子:不斷查看目前ftp串連的情況:lsof -i tcp@www.linuxidc.com:ftp -rlsof -s 列出開啟檔案的大小,如果沒有大小,則留下空白lsof -u username 以UID,列出開啟的檔案 fuser 命令用途使用檔案或檔案結構識別進程。文法fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]檔案 …描述此 fuser 命令列出了本地進程的進程號,那些本地進程使用File 參數指定的本地或遠程檔案。對於阻塞特別裝置,此命令列出了使用該裝置上任何檔案的進程。每個進程號後面都跟隨一個字母,該字母指示進程如何使用檔案。c 將此檔案作為目前的目錄使用。e 將此檔案作為程式的可執行對象使用。r 將此檔案作為根目錄使用。s 將此檔案作為共用庫(或其它可裝載對象)使用。 進程號被寫入標準輸出(在進程號之間有空格的行中)。一個分行符號被寫入標準錯誤(在每個檔案運算元的最後一個輸出之後)。其他所有輸出被寫入標準錯誤。此 fuser 命令不會檢測有 mmap 地區的進程,其中相關的檔案描述符已從此被關閉。標誌-c 包含 File的檔案系統中關於任何開啟的檔案的報告。-d 暗示使用了 -c 和 -x 標誌。關於任何與檔案系統(自父目錄刪除的)無連結的開啟檔案的報告。當與 -V 標誌一起使用時,它也會報告被刪除檔案的節點號和大小。-f 僅對檔案的開啟執行個體報告。-k 將 SIGKILL 訊號發送到每個本地進程。僅有 root 使用者能終止另一使用者的進程。-u 為進程號後圓括弧中的本地進程提供登入名稱。-V 提供詳細輸出。-x 與 -c 或 -f 連用,報告除標準 fuser 輸出以外的可執行檔和可載入的對象。樣本要列出使用 /etc/passwd 檔案的本地進程的進程號,請輸入:fuser /etc/passwd要列出使用 /etc/filesystems 檔案的進程的進程號和使用者登入名稱,請輸入:fuser -u /etc/filesystems要終止使用給定檔案系統的所有進程,請輸入:fuser -k -x -u -c /dev/hd1 或者fuser -kxuc /home任一命令都列出了進程號和使用者名稱,然後終止每個正在使用 /dev/hd1 (/home) 檔案系統的進程。僅有 root 使用者能終止屬於另一使用者的進程。如果您正在試圖卸下 /dev/hd1 檔案系統,而一個正在訪問 /dev/hd1 檔案系統的進程不允許這樣,您可能希望使用此命令。要列出正在使用已從給定檔案系統刪除的檔案的全部進程,請輸入:fuser -d /usr檔案/dev/kmem 用於系統映像。/dev/mem 也用於系統映像 名稱pgrep, pkill – 尋找或者發訊號給進程通過名稱和其它屬性。文法pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern] 說明  pgrep程式檢查在系統的中活動進程,報告進程屬性匹配命令列上指定條件的進程的ID。每一個進程ID以一個十進位數表示,通過一個分割字串和下一個ID分開,預設的分割字串是一個新行。對於每個屬性選項,使用者可以在命令列上指定一個以逗號分割的可能值的集合。例如,  pgrep -G other,daemon  匹配真實組ID是other或者是daemon的進程。如果多個條件被指派,這些匹配條件按邏輯與”AND”規則運算。例如,  pgrep -G other,daemon -U root,daemon  匹配進程它的屬性是:  (真實的組ID是other或者是daemon) 與 (真實的使用者ID是root或者是daemon)  pkill函數和pgrep相同,除了匹配的進程被訊號通知就像用kill(1)替代了pgrep的進程ID的輸出。一個訊號名稱或者數字可以作為pkill的第一個命令列選項。選項  支援下面的選項:The following options are supported:  -c ctidlist 僅匹配列表中列出的ID的進程。  -d delim 指定每一個匹配的進程ID之間分割字串。如果沒有 -d 選項指定,預設的是新行字元。-d 選項僅在pgrep命令中有效。  -fRegex模式將執行與完全進程參數字串 (從/proc/nnnnn/psinfo檔案的pr_psargs欄位獲得)匹配。如果沒有 -f 選項,運算式僅對執行檔案名稱(從/proc/nnnnn/psinfo檔案pr_fname欄位獲得)匹配。  -g pgrplist僅匹配進程組ID在給定列表中的進程。如果組0包括在列表中,這個被解釋為pgrep或者pkill進程的組ID。  -G gidlist僅匹配真實組ID在給定列表中的進程。每一個組ID可以使用組名稱或者數位組ID指定。  -J projidlist匹配項目ID在給定列表中的進程。每一個項目ID可以使用項目的名稱或者數字項目ID來指定。  -l長格式輸出。輸出每一個匹配進程的名稱連同進程ID。進程名稱從pr_psargs 或者 pr_fname欄位獲得,依賴於-f選項是否指定。-l選項僅在pgrep命令中有效。  -n匹配最新(最近產生的)符合所有其它匹配條件的進程。不能和-o選項一起使用。  -o匹配最舊(最早產生的)符合所有其它匹配條件的進程。不能和-n選項一起使用。  -P ppidlist 僅匹配給定列表中父進程ID的進程。  -s sidlist 僅匹配進程會話ID在給定列表中的進程。如果ID 0在列表中,這個解釋為pgrep或者pikill進程的會話ID。  -t termlist 僅匹配與給定列表中終端關聯的進程。每一個終端指定為在/dev中終端裝置路徑名稱的尾碼。例如term/a 或者 pts/0。  -T taskidlist 僅匹配在給定列表中任務ID的進程。如果ID 0包括在列表中,這個解釋為pgrep或者pikill進程的會話ID。  -u euidlist 僅匹配有效使用者ID在給定列表中的進程。每個使用者ID可以通過一個登入名稱稱或者數位使用者ID指定。  -U uidlist 僅匹配真實的使用者ID在給定列表中的進程。每個使用者ID可以通過一個登入名稱稱或者數位使用者ID指定。  -v 反向匹配。匹配所有的進程除了符合匹配條件的。  -x 僅認為進程其參數字串或者執行檔案名稱正確匹配規定模式是匹配的進程。模式被認為是準確的當所有在進程參數字串或者可執行檔名稱的字元匹配模式。  -z zoneidlist 僅匹配地區ID在給定列表中的進程。每一個地區ID可以使用一個地區名稱或者一個數位地區ID指定。這個選項僅在全域地區中執行有效。如果pkill程式用來往其它地區的進程發訊號,進城必須宣稱{PRIV_PROC_ZONE}特權。  -signal 指定發往每一個匹配進程的訊號。如果沒有指定,SIGTERM 是預設的訊號。-signal僅在pkill命令中作為第一個選項有效。訊號可以是在signal.h中定義的沒有SIG首碼的一個符號名字,也可是一個相應的訊號數值。操作支援如下操作:pattern    指定一個擴充Regex(Extended Regular Expression (ERE))模式來匹配可執行檔名稱或者完整的進程參數字串。ERE文法的完整描述參看regex(5)。例子例子1 獲得一個進程ID獲得sendmail的進程ID:example% pgrep -x -u root sendmail283例子2 終止一個進程終止最近產生的xterm:example% pkill -n xtermExit Status  如下退出值被返回:  0 一個或者多個進程被匹配。  1 沒有進程被匹配。  2 指定了無效的命令列參數。  3 出現一個致命的錯誤。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.