IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁操作系統(tǒng)LINUX → Linux下lsof命令深度剖析

Linux下lsof命令深度剖析

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(1)

  lsof簡介lsof(list open files)是一個(gè)列出當(dāng)前系統(tǒng)打開文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以如傳輸控制協(xié)議 (TCP) 和用戶數(shù)據(jù)報(bào)協(xié)議 (UDP) 套接字等,系統(tǒng)在后臺(tái)都為該應(yīng)用程序分配了一個(gè)文件描述符,無論這個(gè)文件的本質(zhì)如何,該文件描述符為應(yīng)用程序與基礎(chǔ)操作系統(tǒng)之間的交互提供了通用接口。因?yàn)閼?yīng)用程序打開文件的描述符列表提供了大量關(guān)于這個(gè)應(yīng)用程序本身的信息,因此通過lsof工具能夠查看這個(gè)列表對系統(tǒng)監(jiān)測以及排錯(cuò)將是很有幫助的。 lsof使用 lsof輸出信息含義在終端下輸入lsof即可顯示系統(tǒng)打開的文件,因?yàn)?lsof 需要訪問核心內(nèi)存和各種文件,所以必須以 root 用戶的身份運(yùn)行它才能夠充分地發(fā)揮其功能。 COMMAND??? PID????? USER FD????? TYPE??? DEVICE??? SIZE????? NODE????? NAME

  init????? 1? root cwd????? DIR????? 3,3????? 1024????? 2? /

  init????? 1? root rtd????? DIR????? 3,3????? 1024????? 2? /

  init????? 1? root txt????? REG????? 3,3????? 38432????? 1763452 /sbin/init

  init????? 1? root mem????? REG????? 3,3????? 106114??? 1091620 /lib/libdl-2.6.so

  init????? 1? root mem????? REG????? 3,3????? 7560696??? 1091614 /lib/libc-2.6.so

  init????? 1? root mem????? REG????? 3,3????? 79460????? 1091669 /lib/libselinux.so.1

  init????? 1? root mem????? REG????? 3,3????? 223280??? 1091668 /lib/libsepol.so.1

  init????? 1? root mem????? REG????? 3,3????? 564136??? 1091607 /lib/ld-2.6.so

  init????? 1? root 10u????? FIFO????? 0,15????? 1309??? /dev/initctl

  每行顯示一個(gè)打開的文件,若不指定條件默認(rèn)將顯示所有進(jìn)程打開的所有文件。lsof輸出各列信息的意義如下: COMMAND:進(jìn)程的名稱

  PID:進(jìn)程標(biāo)識符

  USER:進(jìn)程所有者

  FD:文件描述符,應(yīng)用程序通過文件描述符識別該文件。如cwd、txt等

  TYPE:文件類型,如DIR、REG等

  DEVICE:指定磁盤的名稱

  SIZE:文件的大小

  NODE:索引節(jié)點(diǎn)(文件在磁盤上的標(biāo)識)

  NAME:打開文件的確切名稱

  其中FD 列中的文件描述符cwd 值表示應(yīng)用程序的當(dāng)前工作目錄,這是該應(yīng)用程序啟動(dòng)的目錄,除非它本身對這個(gè)目錄進(jìn)行更改。txt 類型的文件是程序代碼,如應(yīng)用程序二進(jìn)制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序。其次數(shù)值表示應(yīng)用程序的文件描述符,這是打開該文件時(shí)返回的一個(gè)整數(shù)。如上的最后一行文件/dev/initctl,其文件描述符為 10。u 表示該文件被打開并處于讀取/寫入模式,而不是只讀 ? 或只寫 (w) 模式。同時(shí)還有大寫 的W 表示該應(yīng)用程序具有對整個(gè)文件的寫鎖。該文件描述符用于確保每次只能打開一個(gè)應(yīng)用程序?qū)嵗?。初始打開每個(gè)應(yīng)用程序時(shí),都具有三個(gè)文件描述符,從 0 到 2,分別表示標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤流。所以大多數(shù)應(yīng)用程序所打開的文件的 FD 都是從 3 開始。 與 FD 列相比,Type 列則比較直觀。文件和目錄分別稱為 REG 和 DIR。而CHR 和 BLK,分別表示字符和塊設(shè)備;或者 UNIX、FIFO 和 IPv4,分別表示 UNIX 域套接字、先進(jìn)先出 (FIFO) 隊(duì)列和網(wǎng)際協(xié)議 (IP) 套接字。 lsof常用參數(shù)lsof 常見的用法是查找應(yīng)用程序打開的文件的名稱和數(shù)目??捎糜诓檎页瞿硞€(gè)特定應(yīng)用程序?qū)⑷罩緮?shù)據(jù)記錄到何處,或者正在跟蹤某個(gè)問題。例如,linux限制了進(jìn)程能夠打開文件的數(shù)目。通常這個(gè)數(shù)值很大,所以不會(huì)產(chǎn)生問題,并且在需要時(shí),應(yīng)用程序可以請求更大的值(直到某個(gè)上限)。如果你懷疑應(yīng)用程序耗盡了文件描述符,那么可以使用 lsof 統(tǒng)計(jì)打開的文件數(shù)目,以進(jìn)行驗(yàn)證。lsof語法格式是: lsof [options] filename

  常用的參數(shù)列表: lsof filename 顯示打開指定文件的所有進(jìn)程

  lsof -a 表示兩個(gè)參數(shù)都必須滿足時(shí)才顯示結(jié)果

  lsof -c string 顯示COMMAND列中包含指定字符的進(jìn)程所有打開的文件

  lsof -u username 顯示所屬user進(jìn)程打開的文件

  lsof -g gid 顯示歸屬gid的進(jìn)程情況

  lsof +d /DIR/ 顯示目錄下被進(jìn)程打開的文件

  lsof +D /DIR/ 同上,但是會(huì)搜索目錄下的所有目錄,時(shí)間相對較長

  lsof -d FD 顯示指定文件描述符的進(jìn)程

  lsof -n 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)

  lsof -i 用以顯示符合條件的進(jìn)程情況

  lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

  46 --> IPv4 or IPv6

  protocol --> TCP or UDP

  hostname --> Internet host name

  hostaddr --> IPv4地址

  service --> /etc/service中的 service name (可以不只一個(gè))

  port --> 端口號 (可以不只一個(gè))

#p#副標(biāo)題#e#

  例如: 查看22端口現(xiàn)在運(yùn)行的情況 # lsof -i :22

  COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

  sshd??? 1409 root??? 3u IPv6 5678????? TCP *:ssh (LISTEN)

  查看所屬root用戶進(jìn)程所打開的文件類型為txt的文件: # lsof -a -u root -d txt

  COMMAND??? PID USER FD????? TYPE DEVICE??? SIZE??? NODE NAME

  init????? 1??? root txt????? REG??? 3,3 38432 1763452 /sbin/init

  mingetty 1632 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  mingetty 1633 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  mingetty 1634 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  mingetty 1635 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  mingetty 1636 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  mingetty 1637 root txt????? REG??? 3,3 14366 1763337 /sbin/mingetty

  kdm? 1638 root txt????? REG??? 3,3 132548 1428194 /usr/bin/kdm

  X??? 1670 root txt????? REG??? 3,3 1716396 1428336 /usr/bin/Xorg

  kdm? 1671 root txt????? REG??? 3,3 132548 1428194 /usr/bin/kdm

  startkde 2427 root txt????? REG??? 3,3 645408 1544195 /bin/bash

  ... ...

  lsof使用實(shí)例 一、查找誰在使用文件系統(tǒng)在卸載文件系統(tǒng)時(shí),如果該文件系統(tǒng)中有任何打開的文件,操作通常將會(huì)失敗。那么通過lsof

關(guān)鍵詞標(biāo)簽:Linux,lsof命令

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP Linux操作系統(tǒng)修改IP

相關(guān)下載

    人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內(nèi)存型號 linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載