Answers:
您可以ss
从iproute2包(类似于netstat
)中使用:
ss -l -p -n | grep "pid=1234,"
或(对于较旧的iproute2版本):
ss -l -p -n | grep ",1234,"
将1234替换为程序的PID。
ss -nlp | cat
,大致来说,向我展示监听进程(-l),端口号(-n)和进程信息(-p),并且不要尝试将输出适合我的shell | cat
(或更少或其他)。只花了我两年时间就习惯了:D
我不知道使用iproute2
工具的方式。但是,作为一种解决方法,您可以尝试一下。
lsof -Pan -p PID -i
应该给您您正在寻找的信息。
输出量
lsof -Pan -p 27808 -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 27808 apache 5u IPv6 112811294 0t0 TCP *:80 (LISTEN)
httpd 27808 apache 7u IPv6 112811298 0t0 TCP *:8443 (LISTEN)
httpd 27808 apache 9u IPv6 112811303 0t0 TCP *:443 (LISTEN)
我从这里得到了这个命令,但是不确定确切的链接,因为我在笔记本中记下了所有这些链接。但是您也可以从那里签出。
您可以使用netstat
它来找出每个侦听进程的pid。
netstat-打印网络连接,路由表,接口统计信息,伪装连接和多播成员身份
-a,--all同时显示侦听和非侦听(对于TCP,这意味着已建立的连接)套接字。使用--interfaces选项,显示未标记的接口
--numeric,-n显示数字地址,而不是尝试确定符号主机,端口或用户名。
-p,--program显示每个套接字所属的程序的PID和名称。
这是一个例子:
# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1507/rpcbind
tcp 0 0 0.0.0.0:51188 0.0.0.0:* LISTEN 1651/rpc.statd
tcp 0 0 0.0.0.0:1013 0.0.0.0:* LISTEN 1680/ypbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1975/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1763/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2081/master
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2119/mongod
tcp 0 48 172.16.33.73:22 172.16.127.110:51850 ESTABLISHED 25473/sshd
tcp 0 0 172.16.33.73:22 172.16.127.110:51214 ESTABLISHED 24699/sshd
tcp 0 0 :::111 :::* LISTEN 1507/rpcbind
tcp 0 0 :::9200 :::* LISTEN 1994/java
tcp 0 0 :::9300 :::* LISTEN 1994/java
tcp 0 0 :::22 :::* LISTEN 1975/sshd
tcp 0 0 ::1:631 :::* LISTEN 1763/cupsd
tcp 0 0 ::1:25 :::* LISTEN 2081/master
tcp 0 0 :::59162 :::* LISTEN 1651/rpc.statd
netstat
iproute2工具已弃用该功能,并且我希望避免使用它。
@jofel的答案向您显示了要使用的适当工具ss
,这是iproute2中其他网络工具的替代品。
不推荐使用的命令及其iproute2等效项如下:
deprecated replacement(s)
========== ==============
- arp ip n (ip neighbor)
- ifconfig ip a (ip addr), ip link, ip -s (ip -stats)
- iptunnel ip tunnel
- iwconfig iw
- nameif ip link, ifrename
- netstat ss, ip route (for netstat-r), ip -s link (for netstat -i),
ip maddr (for netstat-g)
- route ip r (ip route)
基本列表也在Wikipedia上:http : //en.wikipedia.org/wiki/Iproute2。
lsof
如果您不知道PID,而仅知道程序的名称,则可以使用另一种方法:
lsof -Pa -p $(pgrep [programName]) -i
lsof
在Ubuntu 16.04上使用4.89
pgrep <program name>
然后选择上述命令所需的PID。用$(pgrep [programName])
PID#代替
ss
除了netlink套接字外,没有对PID进行过滤。