我有一个服务器正在监听端口 7060,而其他本地进程正在连接该服务器。我如何找到其他进程的 PID?
$ sudo netstat -plant |grep 7060
tcp6 0 0 :::7060 :::* LISTEN 7085/java
tcp6 0 0 127.0.0.1:35142 127.0.0.1:7060 TIME_WAIT -
什么进程正在使用端口 35142?netstat
这里显示没有进程,而且我也尝试过,sudo lsof -n -i TCP:35142
但没有输出。
答案1
感谢@Spiff 的评论,我编写了这个程序来捕捉主动连接时的进程。
#!/bin/bash
port=$1
[ "$port" -gt 0 ] 2>/dev/null || { echo need port number. ; exit; }
while sleep 1
do
netstat -plant |grep :$port|grep -iv listen |\
while read _ _ _ remote local
do
rpt=$(echo $remote |cut -d':' -f2)
echo
date
echo $remote $local
[ -n "$rpt" ] && lsof -n -i TCP:$rpt
done
done
过了一会儿,该lsof
部分输出了另一个进程的 PID,我追踪到了它。该进程是另一个服务,仍在运行。可以增强此程序以解析 pidlsof
并运行ps u $pid
以获取详细信息。