output

lsof每一次執行時輸出欄位的size都會動態的調整,保證每一個欄寬都是最小的,並且確保每一個欄位之間都會有一個空白的距離,底下是所有輸出的相關介紹:

欄位名稱 描述
COMMAND 包含了繫結了這個行程的所有命令的前9個字元,如果有搭配到『+c w』的option的話,就會隨著這個option做變動。
PID 就是行程的識別碼(Process IDentification number)。
TID task/thread的ID,在Linux上空的TID代表的是這是一個行程(process)而不是一個task。
ZONE Solaris 10以上的zone名稱,在Linux裡面沒有。
SECURITY-CONTEXT SELinux的security context。這個欄位必須用『-Z』來啟用。如果你的kernel的SELinux是不啟用的話,則這個選項將會被抑制。
PPID 是這個行程的『Parent Process ID』,只有使用『-R』時才會被顯示。
PGID 與這個行程繫結的『Process Group ID』,只有在使用『-g』時才會被顯示。
USER 是這個行程擁有著的登入名稱或ID,通常會跟ps一樣,但是在Linux裡面其實會是lsof在『/proc』底下找到的資料夾的擁有者,一般來說也是會跟ps一樣,但是有可能會被EUID給影響到就對了。
FD 是檔案的檔案描述子(File Descriptor)編號,或者是底下這幾種可能:
  • cwd current working directory;
  • Lnn library references (AIX);
  • err FD information error (see NAME column);
  • jld jail directory (FreeBSD);
  • ltx shared library text (code and data);
  • Mxx hex memory-mapped type number xx.
  • m86 DOS Merge mapped file;
  • mem memory-mapped file;
  • mmap memory-mapped device;
  • pd parent directory;
  • rtd root directory;
  • tr kernel trace file (OpenBSD);
  • txt program text (code and data);
  • v86 VP/ix mapped file;

FD通常都會在底下這幾種『mode模式字元』表示狀態:

  • 『r』 讀取
  • 『w』 寫入
  • 『空白』代表不知名模式或是沒有lock字元
  • 『-』代表不知名模式或是沒有lock字元

mode模式字元都會伴隨著下面的幾種lock字元,來描述套用到這個檔案的lock類別:

  • N 是一個不知名類別的Solaris NFS lock;
  • r 是在部份檔案的read lock。
  • R 是在整個檔案的read lock。
  • w 是在部份檔案的read lock。
  • W是在整個檔案的read lock。
  • u 任何長度的讀寫lock。
  • U 不知名類型的lock。
  • x 是一個部份檔案上的SCO OpenServer Xenix lock。
  • X是一個整個檔案上的SCO OpenServer Xenix lock。
  • 空白的話代表沒有lock。
TYPE 是與這個檔案繫結的node type,底下列出一些可能出現的類型:
  • 『IPv4』 - 一個IPv4的socket。
  • 『IPv6』 - 一個已經開啟的IPv6網路裝置檔,即使他的位址是IPv4,但是已經對映給IPv6。
  • 『ax25』- 是一個 Linux AX.25 socket。
  • 『inet』- 是一個 Internet domain socket。
  • 『lla』- 是一個 HP-UX link level access file。
  • 『rte』- 是一個 AF_ROUTE socket。
  • 『sock』- 是一個未知domain的socket。
  • 『unix』 是一個 UNIX domain socket。
  • 『x.25』 - 是一個 HP-UX x.25 socket。
  • 『BLK』 - 是一個區塊檔。
  • 『CHR』 - 是一個字元檔。
  • 『DEL』 - 是一個已經被刪除的 Linux map file。
  • 『DIR』 是一個資料夾。
  • 『DOOR』 是一個 VDOOR 檔。
  • 『FIFO』是一個 FIFO 檔案。
  • 『KQUEUE』是一個 BSD style的 kernel event queue file。
  • 『LINK』 是一個連結檔。
  • 『MPB』 是一個多工( multiplexed)的區塊(block)檔。
  • 『MPC』 是一個多工( multiplexed)的字元(character)檔。
  • 『NOFD』 是一個無法打開的 Linux /proc//fd 資料夾,欄位『NAME』會有資料夾的路徑伴隨著錯誤的訊息。
  • 『PAS』 是一個 /proc/as 檔案。
  • 『PAXV』 是一個 /proc/auxv 檔案。
  • 『PCRE』 是一個 /proc/cred 檔案。
  • 『PCTL』 是一個 /proc control 檔案。
  • 『PCUR』 是目前的 /proc 行程。
  • 『PCWD』 是一個/proc current working directory。
  • 『PDIR』 是一個/proc資料夾。
  • 『PETY』是一個/proc可執行類型(etype)。
  • 『PFD』 是一個/proc 檔案描述子(file descriptor)。
  • 『PFDR』 是一個/proc 檔案描述子資料夾。
  • 『PFIL』 是一個可執行的/proc檔案。
  • 『PFPR』 是一個/proc FP register set。
  • 『PGD』 是一個/proc/pagedata 檔案。
  • 『PGID』 是一個/proc group notifier檔案。
  • 『PIPE』 用於 pipes。
  • 『PLC』 是一個/proc/lwpctl檔案。
  • 『PLDR』 是一個/proc/lpw資料夾。
  • 『PLDT』 是一個/proc/ldt檔案。
  • 『PLPI』 是一個/proc/lpsinfo檔案。
  • 『PLST』 是一個/proc/lstatus檔案。
  • 『PLU』 是一個/proc/lusage檔案。
  • 『PLWG』 是一個/proc/gwindows檔案。
  • 『PLWI』 是一個/proc/lwpsinfo檔案。
  • 『PLWS』 是一個/proc/lwpstatus檔案。
  • 『PLWU』 是一個/proc/lwpusage檔案。
  • 『PLWX』 是一個/proc/xregs檔案。
  • 『PMAP』 是一個/proc map file (map)。
  • 『PMEM』 是一個/proc memory image file。
  • 『PNTF』 是一個/proc process notifier file。
  • 『POBJ』 是一個/proc/object檔案。
  • 『PODR』 是一個/proc/object資料夾。
  • 『POLP』 是一個舊格式的/proc light weight process檔案。
  • 『POPF』 是一個舊格式的/proc PID檔案。
  • 『POPG』 是一個舊格式的/proc page data檔案。
  • 『PORT』 是一個SYSV named pipe。
  • 『PREG』 是一個/proc register檔案。
  • 『PRMP』 是一個/proc/rmap檔案。
  • 『PRTD』 是一個/proc root 資料夾。
  • 『PSGA』 是一個/proc/sigact 檔案。
  • 『PSIN』 是一個/proc/psinfo 檔案。
  • 『PSTA』 是一個/proc status 檔案。
  • 『PSXSEM』 是一個 POSIX semaphore檔案。
  • 『PSXSHM』 是一個 POSIX shared memory檔案。
  • 『PUSG』 是一個 /proc/usage檔案。
  • 『PW』 是一個 /proc/watch檔案。
  • 『PXMP』 是一個 /proc/xmap檔案。
  • 『REG』 是一個 regular檔案。
  • 『SMT』是一個 shared memory transport檔案。
  • 『STSO』 是一個 stream socket。
  • 『UNNM』 是一個 unnamed type檔案。
  • 『XNAM』 是一個 不知名類型的OpenServer Xenix檔案。
  • 『XSEM』 是一個 OpenServer Xenix semaphore檔案。
  • 『XSD』 是一個 OpenServer Xenix shared data檔案。
FILE-ADDR 如果『f』有具體指定『+f』的話,就會包含kernel的檔案結構位址。
FCT 如果『c』有具體指定『+f』的話,就會從kernel檔案結構包含參考計數。
FILE-FLAG 當『g』或『G』有特別指定『+f』的話,這個欄位就會包含在kernel檔案結構成員『f_flag[s]』和kernel中每個行程開啟檔案的flag的內容,『G』會顯示16進制的格式而『g』則是會縮寫,會有兩個清單被顯示,第一個為縮寫(也就是f_flag[s]的值),然後在用『;』隔開,組合有底下幾種:
  • AIO asynchronous I/O (e.g., FAIO)
  • AP append
  • ASYN asynchronous I/O (e.g., FASYNC)
  • BAS block, test, and set in use
  • BKIU block if in use
  • BL use block offsets
  • BSK block seek
  • CA copy avoid
  • CIO concurrent I/O
  • CLON clone
  • CLRD CL read
  • CR create
  • DF defer
  • DFI defer IND
  • DFLU data flush
  • DIR direct
  • DLY delay
  • DOCL do clone
  • DSYN data-only integrity
  • DTY must be a directory
  • EVO event only
  • EX open for exec
  • EXCL exclusive open
  • FSYN synchronous writes
  • GCDF defer during unp_gc() (AIX)
  • GCMK mark during unp_gc() (AIX)
  • GTTY accessed via /dev/tty
  • HUP HUP in progress
  • KERN kernel
  • KIOC kernel-issued ioctl
  • LCK has lock
  • LG large file
  • MBLK stream message block
  • MK mark
  • MNT mount
  • MSYN multiplex synchronization
  • NATM don't update atime
  • NB non-blocking I/O
  • NBDR no BDRM check
  • NBIO SYSV non-blocking I/O
  • NBF n-buffering in effect
  • NC no cache
  • ND no delay
  • NDSY no data synchronization
  • NET network
  • NFLK don't follow links
  • NMFS NM file system
  • NOTO disable background stop
  • NSH no share
  • NTTY no controlling TTY
  • OLRM OLR mirror
  • PAIO POSIX asynchronous I/O
  • PP POSIX pipe
  • R read
  • RC file and record locking cache
  • REV revoked
  • RSH shared read
  • RSYN read synchronization
  • RW read and write access
  • SL shared lock
  • SNAP cooked snapshot
  • SOCK socket
  • SQSH Sequent shared set on open
  • SQSV Sequent SVM set on open
  • SQR Sequent set repair on open
  • SQS1 Sequent full shared open
  • SQS2 Sequent partial shared open
  • STPI stop I/O
  • SWR synchronous read
  • SYN file integrity while writing
  • TCPM avoid TCP collision
  • TR truncate
  • W write
  • WKUP parallel I/O synchronization
  • WTG parallel I/O synchronization
  • VH vhangup pending
  • VTXT virtual text
  • XL exclusive lock

    上面這個清單是從幾個定義裡面萃取出來的,像是『< fcntl.h>』,『< linux/fs.h>』,『< sys/fcntl.c>』,『< sys/fcntlcom.h>』,『< sys/file.h>』,這部份有需要的話請直接看『lsof.h』。

    接下來有第二份清單,主要是包含kernel每個行程開啟檔案的falg:

  • ALLC allocated
  • BR the file has been read
  • BHUP activity stopped by SIGHUP
  • BW the file has been written
  • CLSG closing
  • CX close-on-exec (see fcntl(F_SETFD))
  • LCK lock was applied
  • MP memory-mapped
  • OPIP open pending - in progress
  • RSVW reserved wait
  • SHMT UF_FSHMAT set (AIX)
  • USE in use (multi-threaded)
NODE-ID 如果『n』有具體指定『+f』的話,就會包含對於檔案節點(node)的獨特id(通常是kernel的vnode或是inode位址但是有時候會有裝置節點號碼)。
DEVICE 包欄了裝置號碼,對於『字元裝置』,『區塊裝置』,『一般裝置』,『資料夾』,『NFS檔案』,會用逗號隔開。除了上敘的裝置以外,還有還有底下幾種:『memory』,在Tru64 UNIX之下的記憶體檔案系統節點。或者是kernel 參照的位址,而這個位址可以去識別這個檔案,舉個例子來說可以用來使用在FIFO上。又或者是Linux AX.25 socket裝置上的裝置名稱或是基底位址。
SIZE, SIZE/OFF, or OFFSET 是檔案的size或檔案的偏移量,在某些Unix-like的系統上lsof無法的從kernel的data source那邊去取得準確檔案偏移量,有時候只能在特定類型的檔案上才能。而有時候檔案不會有正確的size,像是sockets, FIFOs, Pipes等等,這時lsof就會將其所有的總量加起來。
NLINK 當有具體指定『+L』時,就會顯示檔案連結數量。
NODE 這個欄位有底下幾種可能:
  • 是本地端檔案的節點(node)數。
  • 在伺服器端NFS系統上的inode數。
  • 協定的類型,像是『TCP』。
  • 如果是『STR』的話,就代表是『stream』。
  • 『CCITT』的話就是HP-UX x.25 socket。
  • 在Linux AX.25 socket裝置的inode號碼或是IRQ。
    | NAME | 這個欄位的選擇也非常多,有底下這些可能:|

  • 掛載點和檔案系統的名字。

  • 具體在『names』option後面描述的名稱。
  • 字元裝置或是區塊裝置的名稱。
  • 一個網路檔案的本地端或是遠端的位址,還有其狀態。
  • 一個UNIX domain socket的位址或名稱,有可能是包含了一個『stream clone 』的裝置名稱,一個檔案系統物件的路徑名稱,本地或是外部的kernel位址,socket pair資訊和『bound vnode address』。
  • 一個NFS檔案本地端和遠端的掛載點名稱。
  • 如果是『STR』的話,就是『stream』的名稱。
  • 一個串流字元裝置名稱(stream character device),通常會跟隨者一個『->』後面才會是串流的名稱或是一系列的串流模組名稱。
  • 如果是『STR:』,後面跟隨著SCO OpenServer stream 裝置和模組名稱。
  • 系統資料夾名稱『--』,還有lsof在這個kernel name cache下可以找到的元件的路徑名稱。
  • 『address family』。
  • 『HP-UX x.25』本地端位址。
  • 『(dead)』的話就代表與『Tru64』解除關聯的Unix檔案,通常是terminal檔案被使用『TIOCNOTTY』ioctl標記或是使用daemon關閉了。
  • 『rd=< offset>』或是『wr=< offset>』,代表的是FIFO的讀寫偏移量。
  • 『clone n:/dev/event』是『/dev/event』裝置的SCO OpenServer檔案的複製,n代表的是檔案的次要裝置序號。
  • 『no PCB』,代表的是socket檔沒有『protocol block』與其繫結。其他更多的選項請看手冊。
  • 一個IPX socket檔的本地端或是遠端位址,格式為『< net>:[< node>]< port>』。
  • 在類型UnixWare 7.1.1或是之上的『dgram』或是『stream』。
  • 或者是與SCTP sockets的任何繫結的值,索引,endpoint值,本地端位址,本地端埠口,遠端位址埠口等資訊。
  • 或者是Linux socket 的任何協定。

results matching ""

    No results matching ""