You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何显示运行进程的PID与对应端口号?

给进程PID添加对应端口信息的实现方法

要在现有命令的基础上补充端口信息,你可以借助lsof或ss工具关联进程与端口,以下是两种实用方案:

方案一:用lsof关联进程与端口

lsof能列出进程打开的网络端口,结合awk的命令调用能力,可以直接在原有输出中追加端口信息:

ps -ef | awk '/[t]ick/{
    pid = $2
    cmd = $9
    # 调用lsof获取该PID的监听端口
    "lsof -i -P -n -p " pid " | grep LISTEN | awk '\''{print $9}'\''" | getline port
    # 输出结果,无端口时显示提示
    print "PID=" pid " 命令=" cmd " 端口=" (port ? port : "无监听端口")
}'

关键参数说明:

  • lsof -i -P -n -p <PID>:仅列出指定PID的网络连接,-P不解析端口别名,-n跳过IP解析,提升查询速度
  • grep LISTEN:仅筛选处于监听状态的端口(若需包含已建立的连接,可移除该部分)

方案二:用ss工具实现(更高效)

ss是netstat的替代工具,性能更优,可通过进程信息反向匹配端口:

# 先提取目标进程的PID和命令,再匹配对应端口
ps -ef | awk '/[t]ick/{print $2, $9}' | while read pid cmd; do
    # 从ss输出中匹配对应PID的端口
    port=$(ss -tulnp | grep ":.*users:(\"$cmd\",pid=$pid,.*)" | awk '{print $5}' | awk -F: '{print $NF}' | head -n1)
    # 格式化输出
    echo "PID=$pid 命令=$cmd 端口=${port:-无监听端口}"
done

关键参数说明:

  • ss -tulnp:列出TCP/UDP的监听端口,-p显示关联的进程详情,-n跳过地址解析
  • 通过grep精准匹配对应PID和命令的端口记录,提取端口号后输出

工具安装(若未预装):

  • Debian/Ubuntu系:sudo apt install lsof iproute2(iproute2包包含ss)
  • RHEL/CentOS系:sudo yum install lsof iproute2

内容的提问来源于stack exchange,提问作者kka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:27:21