跳轉到內容

Unix/命令/裝置指南

來自華夏公益教科書

fuser 會告訴你哪個程序正在使用指示的檔案系統物件(普通檔案、裝置等)。

$ fuser /dev/dsp
/dev/dsp:             8369

連結

lsof 列出所有開啟的檔案,比 fuser 更詳細。

例子

$ lsof /dev/dsp
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
mplayer 8406 alex    7w   CHR   14,3       389 /dev/sound/dsp

提示

使用 -i 4 選項將報告當前正在使用 IPv4 網路的所有程式,這對於觀察訪問網路和網際網路資源的程式很有用。

$ lsof -i 4
COMMAND    PID   USER   FD   TYPE DEVICE SIZE NODE NAME
btdownloa 2618 arky    3u  IPv4   9524       TCP *:6886 (LISTEN)
btdownloa 2618 arky    6u  IPv4   9544       TCP  dsl-KK-229.53.101.203.ttel.net:1539->cpc1-leed3-3-0-cust10.ldst.cable.ntl.com:59074 (ESTABLISHED)

連結

  • lsof, freebsd.org
  • lsof, manpages.ubuntu.com

fstat 列出所有開啟的檔案。

前兩個命令 (fuser 和 lsof) 並非所有系統都存在。4.3BSD-Tahoe 系統引入了在許多 *BSD 系統上都可以找到的 "fstat" 命令。與前兩個命令不同,它似乎不知道每個檔案的準確路徑,只知道它位於哪個檔案系統?

一些選項是

 -p PROCESSID  show open files of this process
 -u USERNAME   show open files of this user

示例:列出每個使用者(包括 root!)開啟的所有檔案。將其管道輸出到分頁程式。

$ fstat | less

獲取正在執行的 Bourne shell 的程序 ID,然後列出它開啟的檔案。

$ echo $$
5283
$ fstat -p 5283
USER     CMD          PID   FD MOUNT      INUM MODE       R/W    DV|SZ
...

init 程序的 ID 始終為 1。列出它開啟的檔案。在本例中,它只在 / 檔案系統上的某個地方打開了一個檔案。

$ fstat -v -p 1
USER     CMD          PID   FD MOUNT      INUM MODE       R/W    DV|SZ
root     init           1   wd /             2 drwxr-xr-x   r      512

連結

華夏公益教科書