news 2026/4/17 1:00:03

linux 根据端口查看进程和对应的应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux 根据端口查看进程和对应的应用

在 Linux 中,根据端口查看进程及对应应用的详细信息(如应用路径、启动命令、配置文件等),核心流程是:先通过端口找到 PID → 再通过 PID 追溯应用详情。以下是分步实操方案,包含命令、示例和场景化技巧,适配运维 / DevOps 日常排查需求:

一、核心步骤:端口 → PID → 应用详情

第一步:通过端口查询对应的 PID(3 种常用方法)

优先使用ss(高效)或lsof(信息全),以下以查询8080 端口为例:

命令(需 root 权限)作用示例输出(关键信息标注)
`sudo ss -tulnpgrep 8080`快速查询监听端口的 PID 和进程名LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=42))→ PID=1234,进程名 = java
sudo lsof -i:8080查看端口关联的进程详情COMMAND PID USER FD TYPE DEVICE NAME java 1234 root 42u IPv4 12345 TCP *:8080 (LISTEN)→ PID=1234,用户 = root
`sudo netstat -tulnpgrep 8080`兼容旧系统(需安装 net-tools)tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1234/java→ PID=1234,进程名 = java

注意:如果端口未监听(如处于TIME_WAIT状态),lsof需加-Pn参数:sudo lsof -i:8080 -Pn

第二步:通过 PID 查询应用详细信息(4 种关键方法)

拿到 PID 后(如上述1234),通过以下命令获取应用的路径、启动参数、配置文件等核心信息,避免误判同名进程(如多个java/python进程)。

1. 查看应用启动命令及完整参数(最常用)
# 方法 1:ps -ef(显示用户、PID、父进程、启动命令) sudo ps -ef | grep 1234 # 方法 2:ps auxww(显示完整命令行,无截断) sudo ps auxww | grep 1234

示例输出(Java 应用)

root 1234 0.0 5.0 1000000 200000 ? Sl 10:00 0:05 /usr/bin/java -jar /opt/tomcat/webapps/myapp.jar --spring.profiles.active=prod --server.port=8080

关键信息提取

  • 应用类型:Java 应用(通过java -jar判断)
  • 应用路径:/opt/tomcat/webapps/myapp.jar
  • 启动参数:--spring.profiles.active=prod(生产环境配置)
  • 端口配置:--server.port=8080(确认端口与查询一致)
2. 查看应用的安装 / 运行路径
# 方法 1:pwdx(直接显示进程的工作目录) sudo pwdx 1234 # 输出:1234: /opt/tomcat(应用的工作目录) # 方法 2:通过 /proc 文件系统(底层方式,最准确) sudo ls -l /proc/1234/exe # exe 是应用程序的符号链接 # 输出:lrwxrwxrwx 1 root root 0 10月 1 10:00 /proc/1234/exe -> /usr/bin/java(应用执行文件路径) sudo cat /proc/1234/cwd # cwd 是当前工作目录的路径 # 输出:/opt/tomcat(与 pwdx 结果一致)
3. 查看应用打开的文件 / 配置(排查配置文件位置)
# 列出进程打开的所有文件(包括配置文件、日志文件) sudo lsof -p 1234 | grep -E "\.conf|\.properties|\.log"

示例输出

java 1234 root 100r REG 8,1 1024 12345 /opt/tomcat/conf/application-prod.properties(配置文件) java 1234 root 101w REG 8,1 4096 67890 /opt/tomcat/logs/myapp.log(日志文件)
4. 查看应用的网络连接(确认端口监听详情)
# 查看进程 1234 的所有网络连接(包括客户端连接、其他端口) sudo ss -tulnp | grep 1234 # 或 sudo netstat -anp | grep 1234

二、场景化示例:实战排查端口占用问题

假设场景:启动 Nginx 时提示80 端口被占用,需找到占用端口的应用并处理。

步骤 1:查询 80 端口对应的 PID
sudo lsof -i:80

输出:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 5678 root 6u IPv4 12345 0t0 TCP *:http (LISTEN) httpd 5679 apache 6u IPv4 12345 0t0 TCP *:http (LISTEN)

→ 发现 PID=5678/5679 的httpd进程占用 80 端口。

步骤 2:查询 httpd 应用的详情
# 查看启动命令 sudo ps auxww | grep 5678

输出:

root 5678 0.0 2.0 80000 40000 ? Ss 09:00 0:03 /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf

→ 应用是 Apache HTTP Server,配置文件路径etc/httpd/conf/httpd.conf,工作目录/var/www/html

步骤 3:处理端口冲突(可选)
# 停止 httpd 服务(如果不需要) sudo systemctl stop httpd # 或修改 Nginx 端口为 8080(避免冲突) sudo sed -i 's/listen 80;/listen 8080;/g' /etc/nginx/nginx.conf sudo systemctl restart nginx

三、常见问题排查

1. 端口被占用但查不到 PID?

原因:端口处于TIME_WAIT状态(连接断开后临时占用),而非LISTEN状态。

# 查看端口状态(含 TIME_WAIT) sudo ss -tuln | grep 8080 # 输出示例(TIME_WAIT 状态,无 PID) TIME-WAIT 0 0 192.168.1.100:8080 192.168.1.200:54321

解决:无需处理(系统会自动释放,默认超时 60 秒),或调整内核参数缩短超时时间:

sudo sysctl -w net.ipv4.tcp_fin_timeout=30 # 临时生效 echo "net.ipv4.tcp_fin_timeout=30" >> /etc/sysctl.conf # 永久生效 sudo sysctl -p
2. 多个同名进程(如多个 java),如何区分?

通过启动参数和应用路径区分:

# 查看所有 java 进程的完整启动命令 sudo ps auxww | grep java

输出示例:

root 1234 0.0 5.0 1000000 200000 ? Sl 10:00 0:05 /usr/bin/java -jar /opt/tomcat/myapp.jar # 应用 A root 5678 0.0 4.0 900000 180000 ? Sl 11:00 0:03 /usr/bin/java -jar /opt/jetty/otherapp.jar # 应用 B
3. 非 root 用户查不到进程信息?

原因:-p参数需要 root 权限才能获取 PID 和应用信息,切换 root 或加sudo即可。

四、一键脚本:快速查询端口→PID→应用详情

将以下脚本保存为port2app.sh,直接执行./port2app.sh 端口号即可输出完整信息:

#!/bin/bash if [ $# -ne 1 ]; then echo "用法:$0 端口号" exit 1 fi PORT=$1 echo "=== 端口 $PORT 对应的进程及应用信息 ===" echo "1. 端口关联的 PID:" sudo ss -tulnp | grep -w ":$PORT" || sudo lsof -i:$PORT | grep -w LISTEN echo -e "\n2. 应用详细信息:" PID=$(sudo ss -tulnp | grep -w ":$PORT" | awk -F 'pid=' '{print $2}' | awk -F ',' '{print $1}' 2>/dev/null) if [ -z "$PID" ]; then PID=$(sudo lsof -i:$PORT | grep -w LISTEN | awk '{print $2}' 2>/dev/null) fi if [ -n "$PID" ]; then echo "PID: $PID" echo "启动命令:" sudo ps auxww | grep -w $PID | grep -v grep echo "工作目录:" sudo pwdx $PID 2>/dev/null echo "应用路径:" sudo ls -l /proc/$PID/exe 2>/dev/null else echo "未找到监听端口 $PORT 的进程(可能处于 TIME_WAIT 状态)" fi

使用方法:

chmod +x port2app.sh sudo ./port2app.sh 8080

总结

核心逻辑:端口 → PID → 应用,关键命令组合:

  1. 查 PID:sudo ss -tulnp | grep 端口sudo lsof -i:端口
  2. 查应用:ps auxww | grep PID(启动命令)、pwdx PID(工作目录)、ls -l /proc/PID/exe(应用路径)

该流程适用于端口冲突排查、服务异常定位、进程审计等场景,完全适配 IT 运维 / DevOps 日常工作需求,可直接复制命令执行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:47:07

Wan2.2-T2V-5B与Stable Diffusion对比:谁更适合商业短视频?

Wan2.2-T2V-5B与Stable Diffusion对比:谁更适合商业短视频? 在抖音、快手、TikTok等平台主导内容消费的今天,企业每天需要产出成百上千条短视频来维持流量曝光。然而传统视频制作流程动辄数小时起步——从脚本撰写、拍摄排期到后期剪辑&#…

作者头像 李华
网站建设 2026/4/16 13:48:48

QD框架终极指南:3步实现HTTP定时任务自动化脚本管理

QD框架终极指南:3步实现HTTP定时任务自动化脚本管理 【免费下载链接】qd QD [v20230821] —— HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server 项目地址: https://gitcode.com/gh_mirrors/qd/qd 还在为复杂的HTTP请求配置而烦恼吗&…

作者头像 李华
网站建设 2026/4/16 11:51:42

Windows右键菜单终极优化指南:10分钟打造高效工作环境

Windows右键菜单终极优化指南:10分钟打造高效工作环境 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为杂乱无章的右键菜单而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/4/16 13:17:13

4、数字信号处理入门:原理、方法与应用

数字信号处理入门:原理、方法与应用 1. 信号处理领域概述 信号处理主要涉及信号及其所含信息的表示、变换和处理。常见的例子包括从混合观测中提取纯净信号(反卷积),或从含噪观测中提取特定信号(频率)分量(滤波)。在20世纪60年代之前,技术仅允许对信号进行模拟和连续…

作者头像 李华
网站建设 2026/4/16 11:41:37

5分钟搞定专业数据库文档:开源工具database-export的自动化革命

5分钟搞定专业数据库文档:开源工具database-export的自动化革命 【免费下载链接】database-export 基于SpringBoot的开源数据库表结构导出word文档工具 项目地址: https://gitcode.com/gh_mirrors/da/database-export 还在为数据库文档的编写和维护而头疼吗&…

作者头像 李华
网站建设 2026/4/16 14:09:18

Vscode插件开发实战:让代码编辑器也能播放ACE-Step生成的专注音乐

VSCode 插件开发实战:让代码编辑器也能播放 ACE-Step 生成的专注音乐 在开发者日常编码中,背景音乐早已不是“可有可无”的点缀。很多人依赖 Lo-fi、白噪音或轻电子乐来屏蔽干扰、维持心流。但问题也随之而来——打开 Spotify 或 YouTube,切歌…

作者头像 李华