欢迎光临
我们一直在努力

如何找出谁在Linux中使用文件

在本文中,我们将解释如何找出谁在Linux中使用特定文件。 这将帮助您了解使用打开文件的系统用户或进程。

我们可以使用lsof命令来了解是否有人正在使用文件,如果有人,则使用谁。 它在搜索打开文件时读取内核内存,并帮助您列出所有打开的文件。 在这种情况下,打开的文件可以是常规文件,目录,块特殊文件,字符特殊文件,流,网络文件等等 – 因为在Linux中一切都是文件

Lsof用于文件系统,以识别谁正在使用该文件系统上的任何文件。 您可以在Linux文件系统上运行lsof命令 ,输出使用该文件标识进程的所有者和进程信息,如以下输出所示。

$ lsof /dev/null
Linux中所有已打开文件的列表
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsystemd   1480 howtoing    0r   CHR    1,3      0t0    6 /dev/nullsh        1501 howtoing    0r   CHR    1,3      0t0    6 /dev/nullsh        1501 howtoing    1w   CHR    1,3      0t0    6 /dev/nulldbus-daem 1530 howtoing    0u   CHR    1,3      0t0    6 /dev/nullxfce4-ses 1603 howtoing    0r   CHR    1,3      0t0    6 /dev/nullxfce4-ses 1603 howtoing    1w   CHR    1,3      0t0    6 /dev/nullat-spi-bu 1604 howtoing    0r   CHR    1,3      0t0    6 /dev/nulldbus-daem 1609 howtoing    0u   CHR    1,3      0t0    6 /dev/nullat-spi2-r 1611 howtoing    0u   CHR    1,3      0t0    6 /dev/nullxfconfd   1615 howtoing    0u   CHR    1,3      0t0    6 /dev/nullxfwm4     1624 howtoing    0r   CHR    1,3      0t0    6 /dev/nullxfwm4     1624 howtoing    1w   CHR    1,3      0t0    6 /dev/nullxfce4-pan 1628 howtoing    0r   CHR    1,3      0t0    6 /dev/nullxfce4-pan 1628 howtoing    1w   CHR    1,3      0t0    6 /dev/nullThunar    1630 howtoing    0r   CHR    1,3      0t0    6 /dev/nullThunar    1630 howtoing    1w   CHR    1,3      0t0    6 /dev/nullxfdesktop 1632 howtoing    0r   CHR    1,3      0t0    6 /dev/nullxfdesktop 1632 howtoing    1w   CHR    1,3      0t0    6 /dev/null....

要列出用户特定的已打开文件,请运行以下命令将howtoing替换为实际用户名。

$ lsof -u howtoing
用户打开的文件列表
COMMAND    PID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAMEsystemd   1480 howtoing  cwd       DIR                8,3      4096          2 /systemd   1480 howtoing  rtd       DIR                8,3      4096          2 /systemd   1480 howtoing  txt       REG                8,3   1595792    3147496 /lib/systemd/systemdsystemd   1480 howtoing  mem       REG                8,3   1700792    3150525 /lib/x86_64-linux-gnu/libm-2.27.sosystemd   1480 howtoing  mem       REG                8,3    121016    3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9systemd   1480 howtoing  mem       REG                8,3     84032    3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0systemd   1480 howtoing  mem       REG                8,3     43304    3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1systemd   1480 howtoing  mem       REG                8,3     34872    2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0systemd   1480 howtoing  mem       REG                8,3    432640    3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1systemd   1480 howtoing  mem       REG                8,3     18680    3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0systemd   1480 howtoing  mem       REG                8,3     18712    3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0systemd   1480 howtoing  mem       REG                8,3     27112    3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0systemd   1480 howtoing  mem       REG                8,3     14560    3150485 /lib/x86_64-linux-gnu/libdl-2.27.so...

lsof的另一个重要用途是找出监听特定端口的进程 例如,使用以下命令标识监听端口80的进程。

$ sudo lsof -i TCP:80
找出过程听力端口
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEhttpd    903   root    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   1320 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   1481 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   1482 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   1493 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   1763 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   2027 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   2029 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   2044 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   3199 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)httpd   3201 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)

注意 :由于lsof在搜索打开文件时读取内核内存,因此内核内存的快速更改可能会导致不可预测的输出。 这是使用lsof命令的主要缺点之一。

有关更多信息,请查看lsof手册页:

$ man lsof

就这样! 在本文中,我们已经解释了如何知道谁在Linux中使用特定文件。 我们已经展示了如何使用打开的文件识别进程的所有者和进程信息。 如果您有任何问题或意见,请使用下面的反馈表与我们联系。

赞(0) 打赏
未经允许不得转载:老赵部落 » 如何找出谁在Linux中使用文件

评论 抢沙发