在Linux中使用lsof命令的示例 使用lsof命令是通过在终端输入lsof来执行。lsof是一个用于列出在Linux系统上打开的文件和进程的命令。它可以帮助你查看哪些文件被打开,哪些进程正在使用这些文件。下面是一些常见的lsof命令的示例: 1. 列出所有打开的文件 要列出系统上所有打开的文件,可以执行以下命令: “`shell lsof “` 这会显示所有打开的文件,包括文件名、进程ID、用户等信息。 2. 列出特定进程打开的文件 要列出特定进程打开的文件,可以使用以下命令,将`PID`替换为进程的ID: “`shell lsof -p PID “` 这将显示特定进程打开的所有文件。 3. 列出特定用户打开的文件 要列出特定用户打开的文件,可以使用以下命令,将`username`替换为用户名: “`shell lsof -u username “` 这将显示特定用户打开的所有文件。 4. 列出特定文件被哪些进程打开 要查找特定文件被哪些进程打开,可以使用以下命令,将`filename`替换为文件名: “`shell lsof filename “` 这将显示所有打开该文件的进程。 以上是一些使用lsof命令的示例。lsof命令在查找和诊断系统问题时非常有用。你可以根据你的需要使用不同的选项和参数来定制输出结果。
lsof是一个强大的实用程序,适用于linux和基于unix的系统,它字面意思是“列出打开的文件(list of open files)”。
它的主要功能是检索有关不同运行进程打开的各种类型文件的详细信息。这些文件可以是常规文件、目录、块文件、网络套接字、命名管道等。
使用lsof
,您可以找到锁定文件或目录的不同进程,监听端口的进程,用户的进程列表,进程锁定的所有文件等。本文首先介绍其安装,然后介绍一些常见的用法示例。
安装lsof
lsof
在大多数linux发行版中默认不可用,但可以很容易地安装。使用以下命令安装lsof:
centos / rhel / fedora:
$ sudo yum install lsof
对于centos / rhel 8,您可以使用dnf
命令:
$ sudo dnf install lsof
ubuntu / debian:
$ sudo apt install lsof
获取帮助
您可以使用-?
或-h
标志获取lsof支持的选项的摘要列表。
要检查详细的安装版本信息,请使用:
“`
lsof -v
lsof版本信息:
修订版本:4.87
最新修订版:ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
最新常见问题解答:ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/faq
最新手册页:ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
构建时间:2018年10月30日星期二16:28:19 utc
构建者和构建时间:[email protected]
编译器:cc
编译器版本:4.8.5 20150623 (red hat 4.8.5-36) (gcc)
编译器标志:-dlinuxv=310000 -dglibcv=217 -dhasipv6 -dhasselinux -d_file_offset_bits=64 -d_largefile64_source -dhas_strftime -dlsof_vstr=”3.10.0″ -o2 -g -pipe -wall -wp,-d_fortify_source=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic
加载器标志:-l./lib -llsof -lselinux
系统信息:linux x86-01.bsys.centos.org 3.10.0-693.17.1.el7.x86_64 #1 smp thu jan 25 20:13:58 utc 2018 x86_64 x86_64 x86_64 gnu/linux
任何人都可以列出所有文件。
/dev警告已禁用。
内核id检查已禁用。
“`
输出字段
默认情况下,lsof输出字段的结构如下:
command pid tid user fd type device size/off node name
这些字段中大部分都是自解释的,除了 fd
和 type
字段,它们在lsof中有些独特,稍后将进行简要介绍。
fd
指的是文件的文件描述符号,type
指的是与文件相关联的节点的类型。我们将逐个讨论这两个字段的支持值。
fd
字段可以包含以下值:
cwd 当前工作目录;
lnn 库引用(aix);
err fd信息错误(参见name列);
jld 监狱目录(freebsd);
ltx 共享库文本(代码和数据);
mxx 十六进制内存映射类型号xx。
m86 dos合并映射文件;
mem 内存映射文件;
mmap 内存映射设备;
pd 父目录;
rtd 根目录;
tr 内核跟踪文件(openbsd);
txt 程序文本(代码和数据);
v86 vp/ix映射文件;
fd
字段后面跟着一个或多个字符,描述文件的打开模式:
r 表示读取权限;
w 表示写入权限;
u 表示读取和写入权限;
空格表示未知模式,且没有锁字符跟随;
`-' 表示未知模式,且有锁字符跟随。
fd
字段后面的模式字符还可以跟随 lock
字符,其描述如下:
n 表示未知类型的solaris nfs锁;
r 表示文件的部分读锁;
r 表示文件的完全读锁;
w 表示文件的部分写锁;
w 表示文件的完全写锁;
u 表示任意长度的读写锁;
u 表示未知类型的锁;
x 表示sco openserver xenix文件的部分锁;
x 表示sco openserver xenix文件的完全锁;
空格表示没有锁。
类似地,type
字段可以包含 gdir, greg, vdir, vreg, ipv4, ipv6
等。要获取lsof中支持的所有type
的完整列表,请参考其man
页面。
常见用法
以下是lsof命令的一些常见用法。该命令适用于linux的各个变种,下面示例中列出的所有命令行参数应该适用于所有平台,只要使用相同的 lsof
版本。
列出所有打开的文件
运行lsof而不带任何选项将列出所有当前由活动进程打开的文件。
$ sudo lsof | less
输出:
command pid tid user fd type device size/off node name
systemd 1 root cwd dir 253,0 224 64 /
systemd 1 root rtd dir 253,0 224 64 /
systemd 1 root txt reg 253,0 1632776 308905 /usr/lib/systemd/systemd
systemd 1 root mem reg 253,0 20064 16063 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem reg 253,0 265576 186547 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem reg 253,0 90248 16051 /usr/lib64/libz.so.1.2.7
systemd 1 root mem reg 253,0 157424 16059 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem reg 253,0 23968 59696 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem reg 253,0 19896 59686 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem reg 253,0 19248 15679 /usr/lib64/libdl-2.17.so
systemd 1 root mem reg 253,0 402384 16039 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem reg 253,0 2156272 15673 /usr/lib64/libc-2.17.so
systemd 1 root mem reg 253,0 142144 15699 /usr/lib64/libpthread-2.17.so
systemd 1 root mem reg 253,0 88720 84 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
systemd 1 root mem reg 253,0 43712 15703 /usr/lib64/librt-2.17.so
systemd 1 root mem reg 253,0 277808 229793 /usr/lib64/libmount.so.1.1.0
systemd 1 root mem reg 253,0 91800 76005 /usr/lib64/libkmod.so.2.2.10
systemd 1 root mem reg 253,0 127184 59698 /usr/lib64/libaudit.so.1.0.0
systemd 1 root mem reg 253,0 61680 229827 /usr/lib64/libpam.so.0.83.1
systemd 1 root mem reg 253,0 20048 59690 /usr/lib64/libcap.so.2.22
systemd 1 root mem reg 253,0 155744 16048 /usr/lib64/libselinux.so.1
按文件名列出
要列出打开特定文件的所有进程,可以将文件名
指定为参数:
$ sudo lsof {文件名}
输出:
$ sudo lsof /var/log/messages
command pid user fd type device size/off node name
rsyslogd 1000 root 6w reg 253,0 205 16777741 /var/log/messages
$
按用户名列出打开的文件
在多用户系统中,可以使用-u
标志后跟用户名
来过滤文件列表。
$ sudo lsof -u {用户名}
输出:
$ sudo lsof -u abhisheknair
command pid user fd type device size/off node name
sshd 1239 abhisheknair cwd dir 253,0 224 64 /
sshd 1239 abhisheknair rtd dir 253,0 224 64 /
sshd 1239 abhisheknair txt reg 253,0 852856 425229 /usr/sbin/sshd
sshd 1239 abhisheknair mem reg 253,0 15488 17204727 /usr/lib64/security/pam_lastlog.so
sshd 1239 abhisheknair mem reg 253,0 15648 229829 /usr/lib64/libpam_misc.so.0.82.0
sshd 1239 abhisheknair mem reg 253,0 309248 17303270 /usr/lib64/security/pam_systemd.so
sshd 1239 abhisheknair mem reg 253,0 19616 17204728 /usr/lib64/security/pam_limits.so
sshd 1239 abhisheknair mem reg 253,0 11168 17204726 /usr/lib64/security/pam_keyinit.so
sshd 1239 abhisheknair mem reg 253,0 40800 17204735 /usr/lib64/security/pam_namespace.so
或者,如果你想列出除了特定用户之外的所有用户打开的文件,可以使用以下格式:-u
标志后跟^username
:
$ sudo lsof -u ^{username}
输出:
$ sudo lsof -u ^root
command pid tid user fd type device size/off node name
dbus-daem 630 dbus cwd dir 253,0 224 64 /
dbus-daem 630 dbus rtd dir 253,0 224 64 /
dbus-daem 630 dbus txt reg 253,0 223232 50590133 /usr/bin/dbus-daemon
dbus-daem 630 dbus mem reg 253,0 61560 15691 /usr/lib64/libnss_files-2.17.so
dbus-daem 630 dbus mem reg 253,0 68192 59651 /usr/lib64/libbz2.so.1.0.6
dbus-daem 630 dbus mem reg 253,0 90248 16051 /usr/lib64/libz.so.1.2.7
dbus-daem 630 dbus mem reg 253,0 99944 59680 /usr/lib64/libelf-0.176.so
dbus-daem 630 dbus mem reg 253,0 19896 59686 /usr/lib64/libattr.so.1.1.0
dbus-daem 630 dbus mem reg 253,0 402384 16039 /usr/lib64/libpcre.so.1.2.0
你可以使用lsof来快速杀死特定用户的所有进程,只需在单个命令中结合使用kill
和lsof
,如下面的示例所示(以root用户身份执行):
# kill -9 `lsof -t -u {username}`
如上面的示例所示,我们可以使用-t
标志来过滤除进程id
之外的所有其他信息。这在自动化和脚本编写中非常有用,可以与kill
命令结合使用。
$ sudo lsof -t -u {username}
输出:
$ sudo lsof -t -u abhisheknair
1239
1240
$
使用lsof,我们可以使用or
逻辑结合多个参数,如下所示:
$ sudo lsof -u {username} -c {process-name}
输出:
$ sudo lsof -u ftpuser -c bash
command pid user fd type device size/off node name
bash 1240 abhisheknair cwd dir 253,0 120 510681 /home/abhisheknair
bash 1240 abhisheknair rtd dir 253,0 224 64 /
bash 1240 abhisheknair txt reg 253,0 964536 50548532 /usr/bin/bash
bash 1240 abhisheknair mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
bash 1240 abhisheknair mem reg 253,0 61560 15691 /usr/lib64/libnss_files-2.17.so
bash 1240 abhisheknair mem reg 253,0 2156272 15673 /usr/lib64/libc-2.17.so
bash 1240 abhisheknair mem reg 253,0 19248 15679 /usr/lib64/libdl-2.17.so
bash 1240 abhisheknair mem reg 253,0 174576 16034 /usr/lib64/libtinfo.so.5.9
bash 1240 abhisheknair mem reg 253,0 163312 15666 /usr/lib64/ld-2.17.so
bash 1240 abhisheknair mem reg 253,0 26970 16003 /usr/lib64/gconv/gconv-modules.cache
bash 1240 abhisheknair 0u chr 136,0 0t0 3 /dev/pts/0
bash 1240 abhisheknair 1u chr 136,0 0t0 3 /dev/pts/0
bash 1240 abhisheknair 2u chr 136,0 0t0 3 /dev/pts/0
bash 1240 abhisheknair 255u chr 136,0 0t0 3 /dev/pts/0
bash 1425 ftpuser cwd dir 253,0 182 33578272 /home/ftpuser
bash 1425 ftpuser rtd dir 253,0 224 64 /
bash 1425 ftpuser txt reg 253,0 964536 50548532 /usr/bin/bash
bash 1425 ftpuser mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
bash 1425 ftpuser mem reg 253,0 61560 15691 /usr/lib64/libnss_files-2.17.so
bash 1425 ftpuser mem reg 253,0 2156272 15673 /usr/lib64/libc-2.17.so
bash 1425 ftpuser mem reg 253,0 19248 15679 /usr/lib64/libdl-2.17.so
bash 1425 ftpuser mem reg 253,0 174576 16034 /usr/lib64/libtinfo.so.5.9
bash 1425 ftpuser mem reg 253,0 163312 15666 /usr/lib64/ld-2.17.so
bash 1425 ftpuser mem reg 253,0 26970 16003 /usr/lib64/gconv/gconv-modules.cache
bash 1425 ftpuser 0u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 1u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 2u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 255u chr 4,1 0t0 1043 /dev/tty1
$
或者,如果您想使用and
逻辑条件,请使用-a
标志。
$ sudo lsof -u {用户名} -c {进程名称} -a
输出:
$ sudo lsof -u ftpuser -c bash -a
command pid user fd type device size/off node name
bash 1425 ftpuser cwd dir 253,0 182 33578272 /home/ftpuser
bash 1425 ftpuser rtd dir 253,0 224 64 /
bash 1425 ftpuser txt reg 253,0 964536 50548532 /usr/bin/bash
bash 1425 ftpuser mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
bash 1425 ftpuser mem reg 253,0 61560 15691 /usr/lib64/libnss_files-2.17.so
bash 1425 ftpuser mem reg 253,0 2156272 15673 /usr/lib64/libc-2.17.so
bash 1425 ftpuser mem reg 253,0 19248 15679 /usr/lib64/libdl-2.17.so
bash 1425 ftpuser mem reg 253,0 174576 16034 /usr/lib64/libtinfo.so.5.9
bash 1425 ftpuser mem reg 253,0 163312 15666 /usr/lib64/ld-2.17.so
bash 1425 ftpuser mem reg 253,0 26970 16003 /usr/lib64/gconv/gconv-modules.cache
bash 1425 ftpuser 0u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 1u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 2u chr 4,1 0t0 1043 /dev/tty1
bash 1425 ftpuser 255u chr 4,1 0t0 1043 /dev/tty1
$
按进程列出打开的文件
我们也可以使用-c
选项后跟进程名称来列出特定进程打开的文件。
$ sudo lsof -c {进程名称}
输出:
$ sudo lsof -c ssh
command pid user fd type device size/off node name
sshd 997 root cwd dir 253,0 224 64 /
sshd 997 root rtd dir 253,0 224 64 /
sshd 997 root txt reg 253,0 852856 425229 /usr/sbin/sshd
sshd 997 root mem reg 253,0 61560 15691 /usr/lib64/libnss_files-2.17.so
sshd 997 root mem reg 253,0 68192 59651 /usr/lib64/libbz2.so.1.0.6
sshd 997 root mem reg 253,0 99944 59680 /usr/lib64/libelf-0.176.so
sshd 997 root mem reg 253,0 19896 59686 /usr/lib64/libattr.so.1.1.0
sshd 997 root mem reg 253,0 15688 75906 /usr/lib64/libkeyutils.so.1.5
sshd 997 root mem reg 253,0 67104 186525 /usr/lib64/libkrb5support.so.0.1
按pid列出打开的文件
或者,如果要列出进程打开的文件,但不使用进程名称
,而是要指定其id,则可以使用-p
标志后跟进程id
。
$ sudo lsof -p {进程id}
输出:
$ sudo lsof -p 663
command pid user fd type device size/off node name
firewalld 663 root cwd dir 253,0 224 64 /
firewalld 663 root rtd dir 253,0 224 64 /
firewalld 663 root txt reg 253,0 7144 50491220 /usr/bin/python2.7
firewalld 663 root mem reg 253,0 298828 50617647 /usr/lib64/girepository-1.0/nm-1.0.typelib
firewalld 663 root mem reg 253,0 343452 50507562 /usr/lib64/girepository-1.0/gio-2.0.typelib
firewalld 663 root mem reg 253,0 12352 17202092 /usr/lib64/python2.7/lib-dynload/grpmodule.so
firewalld 663 root mem reg 253,0 29184 17202105 /usr/lib64/python2.7/lib-dynload/selectmodule.so
firewalld 663 root mem reg 253,0 168312 388240 /usr/lib64/libdbus-glib-1.so.2.2.2
firewalld 663 root mem reg 253,0 11976 34028597 /usr/lib64/python2.7/site-packages/_dbus_glib_bindings.so
firewalld 663 root mem reg 253,0 185712 50507559 /usr/lib64/girepository-1.0/glib-2.0.typelib
- if you want to list every open file except for the ones opened by a particular process, use
-p
followed by^process-id
.
$ sudo lsof -p ^{process-id}
list open files containing directory
to list processes that opened files under a specific directory, use +d
option followed by directory path.
$ sudo lsof +d {path}
output:
$ sudo lsof +d /var/log
command pid user fd type device size/off node name
auditd 607 root 5w reg 253,0 1065095 425227 /var/log/audit/audit.log
firewalld 663 root 3w reg 253,0 13817 17663786 /var/log/firewalld
tuned 999 root 3w reg 253,0 13395 33574994 /var/log/tuned/tuned.log
rsyslogd 1000 root 6w reg 253,0 4302 16777753 /var/log/cron
rsyslogd 1000 root 7w reg 253,0 64740 16777755 /var/log/messages
rsyslogd 1000 root 8w reg 253,0 5513 16787904 /var/log/secure
rsyslogd 1000 root 9w reg 253,0 198 16777754 /var/log/maillog
$
if you don’t want to recursively list files inside sub-directories, use -d
flag followed by directory path.
$ sudo lsof +d {path}
output:
$ sudo lsof +d /var/log
command pid user fd type device size/off node name
firewalld 663 root 3w reg 253,0 13817 17663786 /var/log/firewalld
rsyslogd 1000 root 6w reg 253,0 4302 16777753 /var/log/cron
rsyslogd 1000 root 7w reg 253,0 64740 16777755 /var/log/messages
rsyslogd 1000 root 8w reg 253,0 5833 16787904 /var/log/secure
rsyslogd 1000 root 9w reg 253,0 198 16777754 /var/log/maillog
$
repeat mode
lsof可以在重复模式下运行。在重复模式下,lsof将定期生成和打印输出。同样,lsof支持两种重复模式,即使用-r
和+r
标志。使用-r
标志,lsof重复执行直到从用户接收到中断/杀死信号,而使用+r
标志,lsof重复模式将在其输出没有打开文件时结束。此外,我们可以使用-r
或+r
标志指定时间延迟。
$ sudo lsof {参数} -r{时间间隔}
输出:
$ sudo lsof -u ftpuser -c bash +d /usr/lib -a -r3
command pid user fd type device size/off node name
bash 1425 ftpuser mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
=======
command pid user fd type device size/off node name
bash 1425 ftpuser mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
=======
command pid user fd type device size/off node name
bash 1425 ftpuser mem reg 253,0 106172832 50548523 /usr/lib/locale/locale-archive
=======
使用网络协议列出打开的文件
lsof支持列出任何类型的linux文件,其中包括网络套接字等。因此,我们可以使用-i
标志列出打开的网络连接的详细信息。
$ sudo lsof -i
输出:
$ sudo lsof -i
command pid user fd type device size/off node name
chronyd 639 chrony 5u ipv4 14333 0t0 udp localhost:323
chronyd 639 chrony 6u ipv6 14334 0t0 udp localhost:323
sshd 997 root 3u ipv4 17330 0t0 tcp *:ssh (listen)
sshd 997 root 4u ipv6 17339 0t0 tcp *:ssh (listen)
master 1229 root 13u ipv4 18129 0t0 tcp localhost:smtp (listen)
master 1229 root 14u ipv6 18130 0t0 tcp localhost:smtp (listen)
sshd 1235 root 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
sshd 1239 abhisheknair 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
$
要列出特定进程号
正在使用的所有网络连接,可以使用以下命令:
$ sudo lsof -i -a -p {进程号}
输出:
$ sudo lsof -i -a -p 997
command pid user fd type device size/off node name
sshd 997 root 3u ipv4 17330 0t0 tcp *:ssh (listen)
sshd 997 root 4u ipv6 17339 0t0 tcp *:ssh (listen)
$
或者,要列出特定进程正在使用的所有网络连接,可以使用以下命令:
$ sudo lsof -i -a -c {进程名称}
输出:
我们可以使用-i
标志来过滤lsof的输出,通过指定协议类型,即tcp
或udp
来按网络协议类型过滤。
$ sudo lsof -i {protocol}
输出:
$ sudo lsof -i tcp
command pid user fd type device size/off node name
sshd 997 root 3u ipv4 17330 0t0 tcp *:ssh (listen)
sshd 997 root 4u ipv6 17339 0t0 tcp *:ssh (listen)
master 1229 root 13u ipv4 18129 0t0 tcp localhost:smtp (listen)
master 1229 root 14u ipv6 18130 0t0 tcp localhost:smtp (listen)
sshd 1235 root 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
sshd 1239 abhisheknair 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
$
或者
输出:
$ sudo lsof -i udp
command pid user fd type device size/off node name
chronyd 639 chrony 5u ipv4 14333 0t0 udp localhost:323
chronyd 639 chrony 6u ipv6 14334 0t0 udp localhost:323
$
按端口列出打开的文件
我们还可以使用-i
标志按端口号
过滤lsof的输出,使用以下命令语法:
$ sudo lsof -i :{port-number}
输出:
$ sudo lsof -i :22
command pid user fd type device size/off node name
sshd 997 root 3u ipv4 17330 0t0 tcp *:ssh (listen)
sshd 997 root 4u ipv6 17339 0t0 tcp *:ssh (listen)
sshd 1235 root 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
sshd 1239 abhisheknair 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
$
按ipv4/ipv6列出打开的文件
我们可以通过限制为ipv4或ipv6来筛选网络连接列表。使用以下命令语法仅获得ipv4列表:
$ sudo lsof -i4
输出:
$ sudo lsof -i4
command pid user fd type device size/off node name
chronyd 639 chrony 5u ipv4 14333 0t0 udp localhost:323
sshd 997 root 3u ipv4 17330 0t0 tcp *:ssh (listen)
master 1229 root 13u ipv4 18129 0t0 tcp localhost:smtp (listen)
sshd 1235 root 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
sshd 1239 abhisheknair 3u ipv4 18318 0t0 tcp centos7vm:ssh->192.168.1.61:23566 (established)
$
或者要仅获取ipv6详细信息,请使用:
$ sudo lsof -i6
输出:
在nfs上列出打开的文件
lsof还可以列出用户当前打开的所有nfs文件。
$ sudo lsof -n -u abhisheknair -a
列出已锁定的已删除文件
有时候在linux中删除文件时,仍然会被一个或多个进程锁定。因此,这些文件不会在正常的文件系统列表中显示,比如使用ls
命令等。但是,它们仍然会占用磁盘空间,如df
命令的输出所示,这种情况通常发生在有意删除用于释放进程锁的大文件时。可以使用lsof查找此类进程:
$ sudo lsof {path} | grep deleted
输出:
$ sudo lsof / | grep deleted
firewalld 654 root 8u reg 253,0 4096 16777726 /tmp/#16777726 (deleted)
tuned 968 root 8u reg 253,0 4096 16777720 /tmp/#16777720 (deleted)
$
结论
lsof提供了一系列选项,可以根据需要自定义其输出。它是日常系统和网络管理任务中非常有用的实用工具。能够组合不同的参数使其更加有用,并允许您轻松地获得所需的输出。请参阅lsof手册以了解所有支持的参数及其用法。
$ man lsof