Linux命令--lsof

lhrbest發表於2019-05-08


Linux命令--lsof


一 前言

本文深入的學習命令lsof--列出開啟檔案(lists openfiles)。在linux系統中,我們可以通過 檔案 訪問文字資料,還可以訪問網路連線和硬體。我們通過 lsof 命令可以檢視程式開打了哪些檔案,開啟指定檔案的程式有哪些,程式開啟的埠(TCP、UDP)。找回/恢復刪除的檔案。

二 lsof 用法

許可權需求

因為lsof命令需要訪問核心記憶體和各種檔案,所以需要具有root許可權才能執行。

常用命令引數

usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

關鍵選項

預設:沒有選項,lsof 列出活躍程式的所有開啟檔案
組合:可以將選項組合到一起,如-a,但要當心哪些選項需要引數。
-a:結果進行"與"運算,比如 -abc 表示bc引數都必須滿足時才顯示結果。
-l:在輸出顯示使用者ID而不是使用者名稱。
-t:僅獲取活躍的程式ID
-U:獲取UNIX套介面地址
-F:格式化輸出結果,用於其它命令。可以通過多種方式格式化,如-F pcfn(用於程式id、命令名、檔案描述符、檔名,並以空終止)
-i:[46] [protocol][@hostname|hostaddr][:service|port]
            46 --> IPv4 or IPv6
            protocol --> TCP or UDP
            hostname --> 主機名
            hostaddr --> IPv4地址
            service --> /etc/service中的 service name (可以多個)
            port --> 埠號 (可以多個)
-c string   顯示COMMAND列中包含指定字元的程式所有開啟的檔案
-u username  顯示所屬user程式開啟的檔案
+d /DIR/ 顯示目錄下被程式開啟的檔案
+D /DIR/ 同上,但是會搜尋目錄下的所有目錄,時間相對較長
-d FD 顯示指定檔案描述符的程式
-n 不將IP轉換為hostname,預設是不加上-n引數

輸出解析

我們檢視 mysqld_safe 程式開啟的檔案。

Linux命令--lsof

COMMAND: 程式的名稱
PID: 程式識別符號
PPID: 父程式識別符號(需要指定-R引數)
USER: 程式所有者
FD: 檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd,txt等
TYPE: 檔案型別,DIR, REG
TYPE:檔案型別,如DIR、REG等,常見的檔案型別
SIZE: 檔案的大小,如果沒有則為空
NODE: 索引節點(檔案在磁碟上的標識)
NAME: 開啟檔案的具體名稱

其中 FD 檔案描述符:

cwd值表示應用程式的當前工作目錄。 txt 型別的檔案是程式程式碼,如應用程式二進位制檔案本身或共享庫 0:表示標準輸出 1:表示標準輸入 2:表示標準錯誤 一般在標準輸出、標準錯誤、標準輸入後還跟著檔案狀態模式:r、w、u等 u:表示該檔案被開啟並處於讀取/寫入模式 r:表示該檔案被開啟並處於只讀模式 w:表示該檔案被開啟並處於 空格:表示該檔案的狀態模式為unknow,且沒有鎖定 -:表示該檔案的狀態模式為unknow,且被鎖定

TYPE 型別的詳細介紹

DIR:表示目錄 CHR:表示字元型別 BLK:塊裝置型別 UNIX: UNIX 域套接字 FIFO:先進先出 (FIFO) 佇列 IPv4:網際協議 (IP) 套接字

三 常見用法

使用-u顯示指定使用者開啟了什麼(檔案和網路連線)

lsof -u mysql

找到某個使用者的所有網路連線

lsof -a -u mysql -i

使用-a將-u和-i選項組合可以讓lsof列出某個使用者的所有網路行為。

使用-i:port來顯示與指定埠相關的網路資訊

lsof -i:22

使用@host來顯示指定到指定主機的連線

lsof @10.215.20.13

僅顯示TCP連線(同理可獲得UDP連線)

lsof -iTCP

使用-c檢視指定的命令正在使用的檔案和網路連線

lsof -c mysqld_safe

顯示與指定目錄互動的所有一切

lsof sandboxes/msb 5 7_19/data

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
mysqld  30315 root  cwd DIR 8,1 4096 38684532 sandboxes/msb_5_7_19/data

恢復刪除的檔案

我們刪除 sandbox構造的資料庫的日誌檔案 msandbox.err 1.獲取哪些程式在使用

[root@r1db7 21:03:06 ~/sandboxes/msb_5_7_19/data]
# lsof  msandbox.err
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
mysqld  30315 root    1w   REG    8,1 25940690 38684533 msandbox.err
mysqld  30315 root    2w   REG    8,1 25940690 38684533 msandbox.err

2.刪除檔案

rm msandbox.err

3.再次檢視 該檔案已經被標記為 deleted 狀態

# lsof  | grep msandbox.err
mysqld 30315 root 2w REG 8,1 25940690 38684533 /root/sandboxes/msb_5_7_19/data/msandbox.err (deleted)

4.恢復

[root@r1db7 21:04:00 ~/sandboxes/msb_5_7_19/data]
# cat /proc/30315/fd/2 > msandbox.err

另外需要注意的是如果刪除的檔案不需要恢復而且佔用非常多的空間,那麼我們可以通過如下方法解決。

1 檢視佔用該檔案的程式,殺掉該程式,檔案控制程式碼被釋放,釋放空間。
2 遇到僵死程式時,kill或kill -9命令是無法結束該程式的,只有重啟伺服器,殺死程式,釋放空間。







About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● weixin群:可加我weixin,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2019-05-01 06:00 ~ 2019-05-30 24:00 在魔都完成

● 最新修改時間:2019-05-01 06:00 ~ 2019-05-30 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2643681/,如需轉載,請註明出處,否則將追究法律責任。

相關文章