lsof
yum -y install lsof
全名list open files,也就是列举系统中已经被打开的文件
被打开的文件可以是 - d s c b s l 等各种文件,
lsof需要的权限较高,必须使用root来执行,因为在运行的时候需要访问很多的核心文件,
输出内容:
显示打开指定文件的所有进程
lsof filename
显示command列中包含指定字符的进程所打开的文件
lsof -c command
显示属于user进程打开的文件
lsof -u username
显示属于某个组的进程情况
lsof -g gid
显示目录下被进程打开的文件
lsof +d /dir/
lsof +D /dir/ 同时会搜索目录下的所有目录,时间相对较长。
显示指定文件描述符的进程
lsof -d FD
不将IP转换成hostname,默认是不加 -n的
lsof -n
找出符合条件的进程情况
lsof -i
lsof -i [46] [protocol] [@hostname|hostaddr] [:service|port]
46 指的是IPV4 IPV6
protocol tcp udp
hostname 主机名
hostaddr ip地址
service service名称
port 端口号
注意 :
应用:
查看固定端口被哪个进程占用
lsof -i:5000 查看5000端口的占用情况
卸载批判通知正忙
假如使用umount卸载一块磁盘,显示 device is busy,这时就可以确认谁在占用这个磁盘
lsof /挂载点文件
然后根据情况处理进程,没有进程占用这个磁盘即可卸载
lsof恢复删除的文件
找到正在使用被删除文件的进程,到/proc/pid/相应的文件。再拷贝到原目录下,即可恢复
前提条件
必须是文件正在被某个进程所使用的,而且该进程未停止。一直拥有打开文件的句柄
例如,恢复已删除的/vat/log/message