lsof詳解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html

lsof (list open files)是一個列出當前系統打開文件的工具。在linux系統環境下,任何事物都可以以文件形式存在,通過文件不僅可以訪問常規的數據,還可以訪問網絡連接和硬件。

適應條件:lsof訪問的是核心文件和各種文件,所以必須以root用戶的身份運行才能充分發揮其功能。

lsof [選項] [絕對路徑的文件名]
顯示示例

復制代碼
[root@localhost ~]# lsof /usr/sbin/httpd
COMMAND  PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
httpd   6279   root txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6281 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6282 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6283 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6284 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6285 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6286 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6287 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6288 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6546 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
復制代碼

?


每行顯示一個打開的文件,默認如果后面不跟任何東西,將打開系統打開的所有文件
COMMAND :進程名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別到該文件。如cwd、txt等
TYPE:文件類型,如DIR,REG
DEVICE:指定磁盤名稱
SIZE:文件大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

補充:FD列中的文件描述cwd值表示應用程序的當前工作目錄,這是該程序啟動的目錄,除非它本身對這個目錄進行更改。txt類型的是程序代碼,如應用程序二進制文件本身或者共享庫。其

次數值表示應用程序的文件描述符,這是打開文件時一個返回的一個整數。

復制代碼
lsof      6660      root    0u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    1u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    2u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    3r      DIR        0,3        0          1 /proc
lsof      6660      root    4r      DIR        0,3        0      36358 /proc/6660/fd
lsof      6660      root    5w     FIFO        0,8      0t0      36363 pipe
lsof      6660      root    6r     FIFO        0,8      0t0      36364 pipe
lsof      6661      root  cwd       DIR        8,2     4096     130562 /root
lsof      6661      root  rtd       DIR        8,2     4096          2 /
lsof      6661      root  txt       REG        8,2   154356     415242 /usr/sbin/lsof
lsof      6661      root  mem       REG        8,2  1907156     914957 /lib/libc-2.12.so
lsof      6661      root  mem       REG        8,2    17892     914963 /lib/libdl-2.12.so
lsof      6661      root  mem       REG        8,2   141080     914950 /lib/ld-2.12.so
lsof      6661      root  mem       REG        8,2   120780     915040 /lib/libselinux.so.1
lsof      6661      root  mem       REG        8,2 99154448     395123 /usr/lib/locale/locale-archive
lsof      6661      root    4r     FIFO        0,8      0t0      36363 pipe
lsof      6661      root    7w     FIFO        0,8      0t0      36364 pipe
復制代碼

?

其中u表示該文件被打開處于讀取\寫入模式,而不是只讀或只寫模式;
??? r 只讀 ; w 只寫 ;W表示該應用程序具有對整個文件的寫鎖(確保每次只能打開一次應用程序實例)
初始打開每個應用程序時,都具有三個文件描述符,從0到2,分別表示標準輸入、輸出和錯誤流。因此,大多數應用程序
所打開的FD都是從3開始

TYPE:REG、DIR、CHR、BLK、UNIX、FIFO、IPV4

(2)
查看端口現在運行的情況
ls -i:port? #某個端口
ls -i:port1-port2 #
ls -i:1-1024????? #查看端口1-1024運行情況

(3)恢復刪除文件
當系統中的某個文件被意外刪除了,只要這個時候系統中有進程正在訪問這個文件,那么可以通過lsof 從/proc目錄下恢復文件的內容
假如/var/log/messages文件被刪了,恢復這個文件的方法:
首先使用lsof 查看當前是否有進程打開/var/log/messages文件,
#lsof |grep /var/log/messages
[root@localhost ~]# rm /var/log/messages
rm:是否刪除普通文件 "/var/log/messages"?y
[root@localhost ~]# lsof |grep /var/log/messages
rsyslogd? 5925????? root??? 1w????? REG??????? 8,2???? 4369???? 266184 /var/log/messages (deleted)

從上面的信息可以看到PID 5925(syslogd)打開文件的文件描述符為1,同時發現/var/log/messages已經被刪除了。
因此可以通過/var/log/messages文件描述符來查看文件信息。

復制代碼
cat /pro/5925/fd/1
[root@localhost ~]# cat /proc/5925/fd/1
May 12 08:04:11 localhost kernel: hpet1: lost 3 rtc interrupts
May 12 08:04:11 localhost kernel: hpet1: lost 6 rtc interrupts
May 12 08:04:11 localhost kernel: hpet1: lost 1 rtc interrupts
May 12 09:25:33 localhost kernel: usb 2-2.1: USB disconnect, device number 10
May 12 09:25:33 localhost kernel: eth0: link down
May 12 09:25:33 localhost kernel: usb 2-2.1: new full speed USB device number 11 using uhci_hcd
May 12 09:25:33 localhost kernel: usb 2-2.1: New USB device found, idVendor=0e0f, idProduct=0008
May 12 09:25:33 localhost kernel: usb 2-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 12 09:25:33 localhost kernel: usb 2-2.1: Product: Virtual Bluetooth Adapter
May 12 09:25:33 localhost kernel: usb 2-2.1: Manufacturer: VMware
May 12 09:25:33 localhost kernel: usb 2-2.1: SerialNumber: 000650268328
May 12 09:25:33 localhost kernel: usb 2-2.1: configuration #1 chosen from 1 choice
復制代碼

?

最后通過重定向的方法恢復被刪除的/var/log/messages
cat /pro/5925/fd/1 >/var/log/messages

?

參考資料:http://baike.baidu.com/link?url=FsHZ0-as3vhzPOgTrHO8QyAmLQDPseHje2sYa0M-eZx-fiJe0vNjc4fi4d0fnc59MmooMh28Hmq2oEhnj4Vska

轉載于:https://www.cnblogs.com/the-tops/p/8515399.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252241.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252241.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252241.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu18.04上下載安裝使用sogou輸入法

下載地址:搜狗輸入法Linux官網-首頁 安裝設置網址:搜狗輸入法Linux官網-安裝指導 這樣Ubuntu下工作就更加方便了。

正則

(一)字符類 [...]  方括號內的任意字符 [^...]   不在方括號內的任意字符 .    除換行符和其它Unicode行終止符之外的任意字符 \w   任何ASCII字符組成的單詞,等價于[a-zA-Z0-9] \W   任何非ASCII字符組成的單詞,等價…

使用Cloud Studio寫python

1、進入【騰訊云開發者平臺】 2、點擊【進入工作空間】 3、點擊【新建工作空間】 4、點擊【從模版創建】 選擇你需要的空間環境,就可以開始啦!轉載于:https://juejin.im/post/5c75f79051882562962ef5d7

顯卡、顯卡驅動、顯存、GPU、CUDA、cuDNN

顯卡Video card,Graphics card,又叫顯示接口卡,是一個硬件概念(相似的還有網卡),執行計算機到顯示設備的數模信號轉換任務,安裝在計算機的主板上,將計算機的…

ros rviz顯示rosbag中的圖像和imu數據

一、rosbag相關的指令 1. rostopic list //列舉出系統中正在發布的ros 話題 2. rosbag record -a //錄制系統中所有正在發布的ros 話題 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相當于是中斷子程序,然后在queue的cycle里面要注意,不能在cycle函數里面用printf打印,在cycle里面printf函數是打印不出來的。 也不能在cycle里面用while(1),就是不能讓程序一直在queue里面執行,要想讓cycle執…

企業選擇 多云管理平臺 六大注意事項

企業選擇 多云管理平臺 六大注意事項 1、是否足夠簡單,學習曲線有多長 2、是否可實現自動化環境部署,日常運維作業等一系列操作? 3、是否可以管理全異構的云環境,支持主流公有云廠商的云資源? 4、是否能提供管理成本、…

面向接口編程

面向接口編程 一般在實現一個系統的時候,通常是將定義與實現合為一體,不加分離的,我認為最為理解的系統設計規范應該是所有的定義與實現分離,盡管這對于系統中某些復雜的情況有些繁煩。面向接口編程設計 使用面向接口編程思想將層與層之間通過接口依賴,下…

Java并發學習之一——線程的創建

與每個java語言中的元素一樣,線程是對象。在Java中,我們有兩種方式創建線程: 1、通過直接繼承thread類,然后覆蓋run方法。 2、構建一個實現Runnable接口的類,然后創建一個thread類對象并傳遞Runnable對象作為構造參數 …

day1||python

測試題: 0. Python 是什么類型的語言? Python是一種面向對象、解釋型、動態類型計算機程序設計語言解釋型:程序無需編譯成二進制代碼,而是在執行時對語句一條一條編譯動態類型:在程序執行過程中,可以改變變…

2.7萬字還原行業面貌,《2019 AI金融風控行業研究報告》正式上線!...

在金融科技領域,風險控制的重要性,從其關聯的金融業務和結合的技術維度可見一斑:風控涉及信用借貸、保險、支付、供應鏈金融等場景,并運用了包括生物特征識別、機器學習、自然語言處理、大數據、云計算等多項技術。 區別于美國有…

【原創】QT簡單計算器

代碼 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡壘機使用說明

一、堡壘機介紹 為了保證機房的網絡安全&#xff0c;IDC內所有服務器不被允許從辦公網直接ssh登錄&#xff0c;必須通過跳板機進行間接登錄。用戶通過跳板機執行的所有命令&#xff08;包括通過跳板機登錄的其他機器后的命令&#xff09;都會被保存并審計。 cs是我們登錄IDC服…

export和export default的區別

es6中export和export default的區別 export與export default均可用于導出常量、函數、文件、模塊&#xff1b;你可以在其它文件或模塊中通過import(常量 | 函數 | 文件 | 模塊)名的方式&#xff0c;將其導入&#xff0c;以便能夠對其進行使用&#xff1b;在一個文件或模塊中&am…

koa中間件機制詳解

轉自&#xff1a;https://cnodejs.org/topic/58fd8ec7523b9d0956dad945 koa是由express原班人馬打造的一個更小、更富有表現力、更健壯的web框架。 在我眼中&#xff0c;koa的確是比express輕量的多&#xff0c;koa給我的感覺更像是一個中間件框架&#xff0c;koa只是一個基礎的…

極度推薦的文章和網站

推薦文章---收錄中 因為是及時雨,這里就給他放在開頭啦&#xff1a;http://www.cnblogs.com/zhuzhenwei918/p/7241971.html webpack3.0配置指南&#xff1a;http://www.cnblogs.com/caideyipi/articles/7080010.html 超酷的偽元素網站&#xff1a;https://tympanus.net/Develop…

倍道而行:選擇排序

一、為什么學了之后過段時間又會忘記了&#xff1f; 因為沒有去運用它和認為面試需要而沒有真正的重視。現在給它賦予意義&#xff1a;1.那就是基礎牢固&#xff0c;才可觸類旁通2.真正記得和隨時可以拿出手&#xff0c;那么面試可以PK掉一大批人。不然看到一個精妙的算法就學一…

如何構建一個真實的推薦系統?

AI 前線導讀&#xff1a;隨著互聯網行業的井噴式發展&#xff0c;數據規模呈現爆炸式增長。大數據中蘊含了巨大的價值&#xff0c;但同時也來了很 “信息過載” 的問題。推薦系統作為一個廣泛應用的信息過濾系統&#xff0c;在很多領域取得了巨大的成功。在電子商務上&#xff…

volatile的適用場景

介紹 把代碼塊聲明為 synchronized&#xff0c;有兩個重要后果&#xff0c;通常是指該代碼具有 原子性&#xff08;atomicity&#xff09;和 可見性&#xff08;visibility&#xff09;。 原子性意味著個時刻&#xff0c;只有一個線程能夠執行一段代碼&#xff0c;這段代碼通過…

link和@import的區別

1、link屬于HTML標簽&#xff0c;import是css提供的 2、link是HTML標簽&#xff0c;沒有兼容問題&#xff0c;而import只在IE5以上才能識別 3、頁面被加載時&#xff0c;link會同時被加載&#xff0c;而import引用的css會等到頁面加載完再加載 4、link方式的樣式的權重高于impo…