先定位端口占用者再确认是否为java:用sudo ss -tulnp | grep ':8080'直接显示java进程名及pid;或sudo lsof -itcp:8080 -stcp:listen -p -n精准列出java进程;再用ps -p pid -o cmd验证启动参数。

直接查 Java 进程占用了哪个端口,关键不是“找 Java”,而是“找端口对应的进程”,再确认它是不是 Java。Linux 不区分语言,只看 socket 绑定和进程属性。所以重点是:先定位端口占用者,再验证是否为 Java 应用。
用 ss 查端口并显示进程(推荐,速度快、预装率高)
ss 是现代 Linux 默认集成的工具,比 netstat 更轻量、响应更快,且输出结构清晰:
-
基本命令(需 root 权限才显示进程名):
sudo ss -tulnp | grep ':8080' - 输出示例:
tcp LISTEN 0 128 *:8080 *:* users:(("java",pid=12345,fd=10))→ 直接看到进程名是 java,PID 是 12345 - 如果只想看 IPv4(避免 IPv6 干扰),用:
sudo ss -tlnp | grep ':8080' - 若提示
Permission denied,说明没加 sudo;普通用户执行ss -tuln | grep ':8080'可看到端口状态,但看不到 PID 和进程名
用 lsof 精准反查 Java 进程(信息最全,适合进一步确认)
lsof 把端口视为“打开的文件”,输出含 COMMAND、USER、PID、路径等字段,对 Java 项目定位特别有用:
-
查端口对应的所有进程:
sudo lsof -iTCP:8080 -sTCP:LISTEN -P -n - 输出示例:
java 12345 user 12u IPv6 1234567 0t0 TCP *:8080 (LISTEN)→ 明确标出 COMMAND=java - 拿到 PID 后,可进一步查 Java 启动参数:
ps -p 12345 -o pid,cmd→ 输出类似12345 java -jar /opt/app.jar --server.port=8080,直接看到 jar 包路径和配置
用 netstat 兼容旧环境(适用于 CentOS 7、RHEL 6/7 或最小化镜像)
netstat 虽逐步被弃用,但在部分生产环境仍默认存在,语法直观易记:
-
标准命令:
sudo netstat -tulnp | grep ':8080' - 输出示例:
tcp 0 0 *:8080 *:* LISTEN 12345/java→ 12345/java 表示 PID 12345 的 java 进程 - 如遇
Command not found,需安装:sudo apt install net-tools(Ubuntu/Debian)或sudo yum install net-tools(CentOS/RHEL)
确认是 Java 项目后,快速定位部署位置
仅知道是 java 进程还不够,开发和运维常需知道 jar 包或配置在哪:
- 用
ps -p 12345 -o pid,cmd查启动命令,重点关注-jar、-Dspring.config.location等参数 - 查看进程工作目录:
readlink -f /proc/12345/cwd - 检查 jar 包实际路径:
ls -l /proc/12345/exe(通常指向 java 解释器,但配合 ps 可交叉验证) - 若使用 systemd 管理,还可查服务单元:
systemctl status $(ps -p 12345 -o comm= | tr -d ' ') 2>/dev/null
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











