Linux Shell脚本编程--lsof命令

lsof命令主要是查看当前打开的文件列表,不添加任何参数选项,会输出一堆打开的文件。

lsof 文件名

lsof + 文件名可以查看当前文件被谁打开,以及对应的PID

例如我用tail -f /etc/passwd打开了文件/etc/passwd,用lsof查看:

$ lsof /etc/passwd

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
tail    7746 host    3r   REG   8,66     2450 81005434 /etc/passwd

可以看到是PID7746的进程打开了/etc/passwd文件。

lsof -p 进程号

可以看到是该进程打开了哪些文件


$ lsof -p 7746

COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF     NODE NAME
tail    7746 host  cwd       DIR   8,66     4096 59899906 /home/host
tail    7746 host  rtd       DIR   8,66     4096        2 /
tail    7746 host  txt       REG   8,66    64432 87033273 /usr/bin/tail
tail    7746 host  mem       REG   8,66  4763056 87032810 /usr/lib/locale/locale-archive
tail    7746 host  mem       REG   8,66  1868984 64881686 /lib/x86_64-linux-gnu/libc-2.23.so
tail    7746 host  mem       REG   8,66   162632 64881678 /lib/x86_64-linux-gnu/ld-2.23.so
tail    7746 host    0u      CHR 136,18      0t0       21 /dev/pts/18
tail    7746 host    1u      CHR 136,18      0t0       21 /dev/pts/18
tail    7746 host    2u      CHR 136,18      0t0       21 /dev/pts/18
tail    7746 host    3r      REG   8,66     2450 81005434 /etc/passwd
tail    7746 host    4r  a_inode   0,13        0    12973 inotify

可以看出是tail命令打开了/etc/passwd

lsof -i :端口号

lsof -i :端口号可以查看端口打开了那些文件。例如查看端口5000打开了哪几个文件

$ lsof -i :5000
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
python   530 host    5u  IPv4 21044280      0t0  TCP *:5000 (LISTEN)
python   530 host    7u  IPv4 21044280      0t0  TCP *:5000 (LISTEN)
python  2053 host    5u  IPv4 21044280      0t0  TCP *:5000 (LISTEN)
python  2053 host    7u  IPv4 21044280      0t0  TCP *:5000 (LISTEN)

可以看到是python命令打开的这个端口

你可能感兴趣的:(Linux,linux,运维,服务器)