我正在浏览这个网站的问题。在这特别的问题,我看到命令 lsof 用于列出为特定用户打开的文件。我在终端中运行了以下命令。
lsof -a -u root -d txt
我看到一个很长的输出,这完全不相关(至少对我来说)。我发现很难理解产生的输出。这是
mapping-d 3992 root txt REG 8,5 29728 7169187 /usr/libexec/mapping-daemon
clock-app 4005 root txt REG 8,5 88048 7169216 /usr/libexec/clock-applet
mixer_app 4007 root txt REG 8,5 53484 7169197 /usr/libexec/mixer_applet2
gnome-scr 4078 root txt REG 8,5 168628 1337742 /usr/bin/gnome-screensaver
notificat 4081 root txt REG 8,5 34732 1324168 /usr/libexec/notification-daemon
gnome-ter 4219 root txt REG 8,5 309400 1318348 /usr/bin/gnome-terminal
gnome-pty 4221 root txt REG 8,5 12384 1899888 /usr/lib/vte/gnome-pty-helper
bash 4222 root txt REG 8,5 735932 196459 /bin/bash
firefox 15551 root txt REG 8,5 121288 2424613 /usr/lib/firefox/firefox
npviewer. 15790 root txt REG 8,5 174364 1996912 /usr/lib/nspluginwrapper/npviewer.bin
bash 15908 root txt REG 8,5 735932 196459 /bin/bash
lsof 16014 root txt REG 8,5 129820 1323233 /usr/sbin/lsof
lsof 16015 root txt REG 8,5 129820 1323233 /usr/sbin/lsof
我期待着,如果我打开了一个TXT文件为根用户,如果我运行,则仅显示该文件的信息拉索夫命令。有人可以帮助我理解这个命令实际产生的输出是什么吗?
答案1
输出被组织成列。如果您想将此输出存储在文件中以便稍后查看,只需执行以下操作:
$ lsof -a -u root -d txt > somefile.txt
这些列就位于顶部。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
列说明
各列如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mapping-d 3992 root txt REG 8,5 29728 7169187 /usr/libexec/mapping-daemon
clock-app 4005 root txt REG 8,5 88048 7169216 /usr/libexec/clock-applet
mixer_app 4007 root txt REG 8,5 53484 7169197 /usr/libexec/mixer_applet2
命令- 这是正在使用文件的可执行文件的名称。
PID- 进程ID,这是可执行文件的进程ID。您也会在命令的输出中看到这些
ps
。用户- 这是该进程所拥有的用户 ID。
FD- 文件描述符。您指定只需要文本文件描述符 (
-d txt
),因此您应该只txt
在此列中看到。从lsof
“txt程序文本(代码和数据);”的手册页中类型- 这表示与文件关联的节点类型。再次查阅 的手册页
lsof
。有很多不同类型的节点。在这里,我们主要处理常规文件,因此您会看到关键字REG
。设备- 此列包含设备编号。这些是系统目录中用于特定文件的相应设备
/dev
。尺寸/关闭- 文件大小或文件偏移量(以字节为单位)。
节点- 查阅手册页
lsof
,一般是本地文件的节点号,或者服务器主机中NFS文件的inode号,但也可以是其他值。姓名- 文件名或文件所在的安装点和文件系统的名称。
答案2
lsof
列出程序以某种方式访问的所有文件。第四列 ( FD
) 描述程序访问文件的方式。以下是一些常见情况(还有其他情况):
- 一个数字:文件被进程打开,数字就是文件描述符。文件名后面的字母表示打开模式(例如
r
只读、w
只写、u
两者)。 cwd
:该文件是进程的当前工作目录。txt
:该文件是进程的可执行文件。mem
:文件被映射到进程的虚拟内存空间。
描述符类型txt
与包含人类可读文本或以 . 结尾的名称的“文本文件”无关.txt
。这里的“文本”是一个奇怪的术语,指的是可执行代码,如文本段可执行文件的一部分,它是包含代码的部分。这个奇怪的名字来自一个现已不复存在的编程社区,其早于 Unix(通用电气,其在 Unix 世界中的另一个命名遗产是“GECOS领域”)。
因此,您看到的是每个进程的主要可执行文件。