lsof命令 - 找出谁在Linux中使用文件


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

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

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

linuxidc@linuxidc:~/linuxboy.net$ lsof /dev/null
COMMAND    PID    USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
systemd  2263 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
dbus-daem 2293 linuxidc    0u  CHR    1,3      0t0    6 /dev/null
gnome-ses 2297 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
at-spi-bu 2396 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
dbus-daem 2401 linuxidc    0u  CHR    1,3      0t0    6 /dev/null
at-spi2-r 2404 linuxidc    0u  CHR    1,3      0t0    6 /dev/null
gnome-she 2421 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
gvfsd    2427 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
gvfsd-fus 2432 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
pulseaudi 2444 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
pulseaudi 2444 linuxidc    1w  CHR    1,3      0t0    6 /dev/null
pulseaudi 2444 linuxidc    2w  CHR    1,3      0t0    6 /dev/null
ibus-daem 2457 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
ibus-dcon 2461 linuxidc    0r  CHR    1,3      0t0    6 /dev/null
......

lsof命令 - 找出谁在Linux中使用文件

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

linuxidc@linuxidc:~/linuxboy.net$ lsof -u linuxidc -t

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

linuxidc@linuxidc:~/linuxboy.net$ sudo lsof -i TCP:80
[sudo] linuxidc 的密码:
COMMAND PID    USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
nginx  948    root    6u  IPv4  42296      0t0  TCP *:http (LISTEN)
nginx  948    root    7u  IPv6  42297      0t0  TCP *:http (LISTEN)
nginx  949 www-data    6u  IPv4  42296      0t0  TCP *:http (LISTEN)
nginx  949 www-data    7u  IPv6  42297      0t0  TCP *:http (LISTEN)

lsof命令 - 找出谁在Linux中使用文件

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

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

linuxidc@linuxidc:~/linuxboy.net$ man lsof

lsof命令 - 找出谁在Linux中使用文件

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

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-04/157869.htm

相关内容