linux中lsof | fuser的用法

本文介绍了lsof和fuser两个实用工具的基本用法及应用场景。lsof可用于查看进程占用的文件和网络连接,fuser则用于识别访问特定文件或端口的所有进程,并具备直接终止这些进程的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、lsof介绍和使用

1.lsof

通过lsof命令工具可以查看某个进程占用了哪些句柄。同时也可以看某个文件被哪些进程使用了。


2.lsof常见的用法

(A)查找应用程序打开的文件

lsof -p pid   可以查看进程号为pid的进程打开了哪些文件或者占用了哪些fd。

(B)查找打开某个文件的应用程序

lsof filename   可以查看名称为filename的文件被哪些进程打开了。

(C)使用lsof查看网络连接

命令格式为:

lsof -i protocol:@ip:port
其中protocol可以是tcp或udp,ip是主机ip,port是端口

具体使用命令有:

lsof -i     #列出所有网络连接的进程
lsof -i tcp #列出所有正式使用tcp协议的进行网络通信的进程
lsof -i :8080   #列出正在监听8080端口的进程
lsof -i tcp:80  #列出正在使用tcp协议监听80端口的进程

(D)lsof还有一些其他高级的用法

例如,恢复已经被删除的文件等等。


备注:

(1)使用/usr/sbin/lsof |grep delete查看被rm的文件,仍然被进程占用,最终导致磁盘空间释放不了。当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录条目。

(2)lsof输出的信息中,有一列SIZE值,表示文件的大小,单位是Byte


学习资料来源:

http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html


二、fuser介绍和使用

1.fuser

fuser能识别出正在对某个文件或端口访问的所有进程,类似于lsof。但从区别上来说,lsof可以通过文件名找到正在使用该文件的所有进程,同时也可以根据进程id找出该进程使用的哪些文件。fuser则是可以通过文件名找到使用该文件的所有进程。但是fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程。

 

2.fuser的命令格式和常用选项

命令格式:

fuser [option] filename

常用的选项:

-v  列出进程的详细信息,而不仅仅是进程id
-u  列出进程所属的用
-k signal  如果不指定signal,那么默认是SIGKILL。当然用户自己指定信号,例如SIGHUP
-l  列出所有支持的信号

3.fuser命令使用举例

fuser /home/work/wahaha.txt   #列出所有使用/home/work/wahaha.txt文件的进程
fuser -v /home/work/wahaha.txt  #列出进程的详细信息,而不仅仅是进程id
fuser -u /home/work/wahaha.txt  #同时列出进程的user
fuser -k /home/work/wahaha.txt  #杀死所有正在使用/home/work/wahaha.txt文件的进程
fuser -k SIGHUP /home/work/wahaha.txt  #向所有正在使用/home/work/wahaha.txt文件的进程发送HUP信号
fuser -l   #列出所有支持的信号


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值