我可以执行netstat -atulpn | grep java
以查找所有 Java 进程及其附带的端口,这很棒,但是我还希望显示进程的完整执行参数。我不相信这是可能的,netstat
从我到目前为止探索的所有内容中,所以我想我必须编写一个脚本来处理输出,netstat
然后将 pids 传递到ps
然后美化输出以显示ip+port 和完整的命令行。
有没有更好的方法来做到这一点,或者这是唯一的选择?
我可以执行netstat -atulpn | grep java
以查找所有 Java 进程及其附带的端口,这很棒,但是我还希望显示进程的完整执行参数。我不相信这是可能的,netstat
从我到目前为止探索的所有内容中,所以我想我必须编写一个脚本来处理输出,netstat
然后将 pids 传递到ps
然后美化输出以显示ip+port 和完整的命令行。
有没有更好的方法来做到这一点,或者这是唯一的选择?
ss -lnptu 通过调用 ps -p 通过管道传输到 awk。我在移动设备上,所以现在打出一个完整的例子有点棘手。
监听套接字:
所有套接字(可能需要一些额外的过滤,因为套接字在 TIME_WAIT 中没有进程信息等):
ps
在使用 Mark Sturgill 的答案时,我在 Ubuntu 16.04 上遇到了错误。需要稍作修改才能使其工作:基本上添加了一个额外的split
功能,以进一步将数字 PID 与ss
返回的连接格式(例如pid=1306 -> 1306
)隔离开来。我还添加了-ww
标志以使 ps 输出完整的参数:@ylluminate,对于 CentOS 将其更改为
ss -lnptu | awk 'NR>1 { split($6,p,","); printf "Listen: "$4 " Command: "; system("ps --no-headers -o args p "p[2]); }'