我知道它是如何在Linux上完成的,它们可能会通过/ proc // fd并显示每个进程使用的套接字。
不幸的是,它看起来不像Solaris上的/ proc // fd条目列表套接字。有谁知道lsof会如何在这个系统上做到这一点?或者一般人们怎么会这样做呢?
重述一下我需要的内容:我需要一些方法来查找哪些进程正在侦听哪些端口(当然不使用lsof)。
答案 0 :(得分:0)
/proc/<pid>/fd
列出所有打开的文件描述符,包括与套接字关联的描述符,例如:
# pwd
/proc/408/fd
# ls -l
total 4
c--------- 1 root sys 13, 2 Jul 31 23:12 0
c--------- 1 root sys 97, 1 Jul 31 23:06 1
p--------- 0 root root 0 Jul 31 23:06 10
p--------- 0 root root 0 Jul 31 23:06 11
c--------- 1 root sys 97, 1 Jul 31 23:06 2
-r--r--r-- 1 root root 1209 Jul 31 23:06 3
D--------- 1 root root 0 Jul 31 23:06 4
s--------- 0 root root 0 Jul 31 23:06 5
s--------- 0 root root 0 Jul 31 23:06 6
p--------- 0 root root 0 Jul 31 23:06 7
p--------- 0 root root 0 Jul 31 23:06 8
s--------- 0 root root 0 Jul 31 23:06 9
此处文件描述符5
,6
和9
绝对是套接字,显示其s
文件类型。
不确定lsof
在封面下做了什么,但要获取套接字详细信息,pfiles
正在阅读流程内部结构。请参阅其dosocket方法。
答案 1 :(得分:0)
如果您运行的是Solaris 11.2,则可以使用netstat -u
。根据{{3}}:
-u
列出最初创建网络端点的用户,进程ID和程序,或者立即对其进行控制。