lsof : list open files
lsof命令不加参数执行默认会列出系统中所有进程打开的文件。
lsof [filename]可以列出所有打开filename的进程
可以通过特定选项可以对结果进行过滤。系统中可以打开的文件类型主要有以下几种
普通文件,目录,块设备,字符设备,FIFO,Socket及符号链接
lsof的参数一般以or的形式给出,当指定-a时才表示and
常用的过滤参数有:
-c c command是以c打头的命令,c可以采用正则表达式
+d d 搜索d目录下文件被打开的情况(一级目录)
+D D 搜索D目录下文件被打开的情况(递归所有目录)
-x 和+d 或者+D结合起来,实现符号链接跟踪
-U 列出unix domain sockets
-d s 指定文件FD列表(,分割)
-u S 指定进程的用户id
-g [s] 指定进程ppid
-p s 指定进程pid
-i [i] 指定网络地址,若不给定,则默认给出所有socket连接信息
网络地址格式为[46][protocol][@hostname|hostaddr][:service|port]
+|-r [s] repeate模式,s是重复间隔的秒数,默认15秒。
-r则命令会重复运行直到收到中断信号
+r则一旦第一循环列出的文件是空的,则不再循环
显式信息参数:
-R 显示进程的ppid
-s 显示file size
-t 仅显示进程pid,有利于集成到脚本中去
+|-w 是否显示warning信息
还有其他好多命令,可以查man获得。
举几个例子把
lsof -i -U
打开所有Internet.X.25和Unix domain files
lsof -i 4 -a -p 1234
打开进程1234所打开的ipv4文件
lsof -u lec,root -p 123,333
打开所有用户lec或者root打开的文件或进程123或333打开的文件
kill -9 `lsof -t /etc/passwd`
杀掉所有打开/etc/passwd的进程


看完了要说点啥么?