Linux学习笔记:fuser和lsof

fuser 和 lsof 能够用于系统安全检查。
用fuser查看哪些用户和进程在某些地方做什么:
fuser -cu /root 简略显示
fuser -muv /mnt3 分列显示html

lsof 拥有更多的功能
# lsof -i 看系统中有哪些开放的端口,哪些进程、用户在使用它们,比 netstat -lptu 的输出详细。安全

# lsof -i 4  查看IPv4类型的进程
COMMAND    PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4     2213 Debian-exim    4u  IPv4   4844       TCP *:smtp (LISTEN)
dhclient3 2306        root    4u  IPv4   4555       UDP *:bootpc网络

# lsof -i 6  查看IPv6类型的进程
COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2213 Debian-exim    3u  IPv6   4820       TCP *:smtp (LISTEN)tcp

# lsof -i @192.168.1.2  查看与某个具体的IP相关联的进程
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
amule   3620 root   16u  IPv4  11925       TCP 192.168.1.2:42556->77.247.178.244:4242 (ESTABLISHED)
amule   3620 root   28u  IPv4  11952       TCP 192.168.1.2:49915->118-166-47-24.dynamic.hinet.net:5140 (ESTABLISHED)工具

# lsof -p 5670 查看PID为5670的进程打开的文件。学习

 

经过lsof命令工具能够查看某个进程占用了哪些句柄。同时也能够看某个文件被哪些进程使用了。.net

 

2.lsof常见的用法htm

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

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

(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

 

2、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 #列出全部支持的信号

---------------------

相关文章
相关标签/搜索