Linux下lsof列出所有进程打开的文件信息。这个文件可以是一个普通文件、一个目录、一个NFS文件、块特别文件、字符特殊文件、一个共享库。因为Linux上的几乎所有东西都看成文件,所以lsof命令的应用范围还是很广的。
列出所有打开的文件 # lsof 所有进程打开的所有文件信息。
查看一个文件被哪个进程使用 # lsof /path/to/file 只可以指定多个文件: # lsof /path/to/file1 /path/to/file2
递归的在一个目录中查找正在使用(打开)的文件 # lsof +D /usr/lib 使用grep要快一点: # lsof | grep '/usr/lib'
列出一个用户打开的所有文件 # lsof -u username -u参数指定要查询的用户名。 你也可以同时查找多个用户: # lsof -u username,root 或 # lsof -u username -u root
列出一个进程打开的文件 # lsof -c apache -c参数指定程序名 它也可以同时查询多个进程: # lsof -c apache -c python
列出某个进程或(or)用户打开的文件 # lsof -u username -c apache
列出某个进程和某个用户共同打开的文件 # lsof -a -u pkrumins -c bash
列出除了root用户外的其他所有用户打开的文件 # lsof -u ^root
指定进程PID打开的文件 # lsof -p 1
同样可以同时指定多个进程PID: # lsof -p 111,112,113
列出除了某个进程PID的其他所有进程打开的文件 # lsof -p ^1
列出所有网络连接 # lsof -i
列出所有TCP网络连接 # lsof -i tcp
列出所有UDP网络连接 # lsof -i udp
查看谁在使用指定端口 # lsof -i :25
可以用服务名称: # lsof -i :smtp
查看谁在使用TCP/UDP指定端口 # lsof -i tcp:80 # lsof -i udp:53
查看一个用户的网络连接活动 # lsof -a -u root -i
列出所有NFS文件 # lsof -N
列出 UNIX Domain Socket # lsof -U
列出指定文件群组进程的所有文件 # lsof -g 1234
列出指定文件描述符打开的文件 # lsof -d 2
可以指定文件描述符的范围: # lsof -d 0-2 -d参数还有其他特殊类型如 mem、txt。
列出使用某种资源的进程PID # lsof -t -i 上面命令列出了所有使用网络的进程PID,用它可以轻松的杀死所有使用网络的进程: # kill -9 `lsof -t -i` |