博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

叶孤城

~~城中孤叶~~幽静思斋~~
jybjsrg.cublog.cn


lsof名利.查看某个文件是否被进程打开, 查找监听端口 25 的进程
查看某个文件是否被进程打开
 
lsof /home/lijinhua/logsysv3/logrotate/logdir/any.log
lsof|grep -v Permission|grep /home/lijinhua/logsysv3/logrotate/logdir/any.log"
 

查找网络连接

网络连接也是文件,这意味着可以使用 lsof 获得关于它们的信息。您曾在清单 2 中看到过这样的示例。该示例假设您已经知道 PID,但是有时候并非如此。如果您只知道相应的端口,那么可以使用 -i 参数利用套接字信息进行搜索。清单 8 显示了对 TCP 端口 25 的搜索。


清单 8. 查找监听端口 25 的进程
# lsof -i :25
COMMAND  PID USER   FD   TYPE        DEVICE SIZE/OFF NODE NAME
sendmail 605 root    5u  IPv4 0x300010ea640      0t0  TCP *:smtp (LISTEN)
sendmail 605 root    6u  IPv6 0x3000431c180      0t0  TCP *:smtp (LISTEN)

需要以 protocol:@ip:port 的形式向 lsof 实用程序传递相关信息,其中的 protocol 为 TCP 或 UDP(可以使用 4 或 6 作为前缀,表示 IP 的版本),IP 为可解析的名称或 IP 地址,而 port 为数字或表示该服务的名称(来自 /etc/services)。需要一个或多个元素(端口、IP、协议)。在清单 8 中,:25 表示端口 25。输出显示,进程 605 正在使用 IPv6 和 IPv4 监听端口 25。如果您对 IPv4 不感兴趣,那么可以将筛选器改为 6:25,以表示监听端口 25 的 IPv6 套接字,或者直接使用 6 表示所有的 IPv6 连接。

除了显示出这些守护进程正在监听的对象,lsof 还可以发现发生的连接,同样是使用 -i 参数。清单 9 显示了搜索与 192.168.1.10 之间的所有连接。


清单 9. 搜索活动的连接
# lsof -i @192.168.1.10
COMMAND  PID USER   FD   TYPE        DEVICE  SIZE/OFF NODE NAME
sshd    1934 root    6u  IPv6 0x300046d21c0 0t1303608  TCP sun:ssh->linux:40379
							 (ESTABLISHED)
sshd    1937 root    4u  IPv6 0x300046d21c0 0t1303608  TCP sun:ssh->linux:40379
							 (ESTABLISHED)

在这个示例中,sunlinux 之间有两个 IPv6 连接。对其进行更仔细的研究可以看出,这些连接来自于两个不同的进程,但它们却是相同的,这是因为两台主机是相同的,并且端口也是相同的(ssh 和 40379)。这是由于进入主进程的连接分叉出一个处理程序,并将该套接字传递给它。您还可以看到,名为 sun 的计算机正在使用端口 22 (ssh),而 linux 具有端口 40379。这表示,sun 是该连接的接收者,因为它关联于该服务的已知端口。40379 是源或临时端口,并且仅对这个连接有意义。

因为,至少在 UNIX 中,套接字是另一类文件,所以 lsof 可以获得关于这些连接的详细信息,并找出谁对它们负责。

 原文地址 http://blog.chinaunix.net/u/28949/showart_252161.html
发表于: 2008-01-09 ,修改于: 2008-01-09 23:12,已浏览202次,有评论0条 推荐 投诉


网友评论

发表评论