跳转至

lsof命令 用于查看处于打开状态的文件

lsof命令可以列出所有正在打开的文件,可以用它的选项对这些文件进行筛选。

ref: https://www.tecmint.com/10-lsof-command-examples-in-linux/

列出指定进程PID打开的文件

# lsof -p 1
COMMAND PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd   1 root  cwd       DIR              259,1     4096          2 /
systemd   1 root  rtd       DIR              259,1     4096          2 /
systemd   1 root  txt       REG              259,1  1537896    4074804 /usr/lib/systemd/systemd
systemd   1 root  mem       REG              259,1  1329272    4077522 /usr/lib/libm-2.31.so
systemd   1 root  mem       REG              259,1   169936    4082603 /usr/lib/libudev.so.1.6.15
systemd   1 root  mem       REG              259,1  1574704    4074067 /usr/lib/libunistring.so.2.1.0
systemd   1 root  mem       REG              259,1    67504    4073829 /usr/lib/libjson-c.so.4.0.0

列出特定用户打开的文件

仅r用户
# lsof -u r

排除root用户
# lsof -u^root

列出使用TCP端口的进程

-i参数筛选网络相关的文件:

[46][protocol][@hostname|hostaddr][:service|port]
# lsof -i TCP:22
# lsof -i TCP:1-1024

杀死某用户的所有进程

# kill -9 `lsof -t -u r`