netstat在现代Linux中已逐步弃用,需sudo netstat -tulnp | grep ':8080'查端口占用,但推荐用ss或lsof替代;注意区分真监听与TIME_WAIT残留状态。
在现代 Linux 上已逐步被弃用,但如果你的系统(如 CentOS 7、某些嵌入式或旧版定制系统)仍默认提供它,且你明确需要使用
查特定端口的进程占用,那必须加
参数并以 root 权限运行,否则看不到 PID 和进程名。
netstat -tulnp 是唯一能显示进程信息的组合
单独执行
只能看到监听端口和地址,看不到谁在用。只有加上
(process)才可能关联到进程,但该参数强制要求 root 权限——非 root 用户执行会报 “can't identify protocol” 或直接隐藏 PID 列。
:只看 TCP(不加则混入 UDP,干扰判断)
:如需查 UDP 端口(如 DNS 的 53 端口),才加;否则可省
:只显示 LISTEN 状态,排除已建立的连接干扰
:避免反向 DNS 解析拖慢输出,也防止服务名别名(如把 80 显示成 http)掩盖真实端口号
:关键参数,但必须配合
,否则对其他用户进程不可见
grep :8080 要注意冒号和空格位置
过滤时写
才准确。写成
可能误匹配到 PID 为 8080 的进程,或匹配到 18080、80801 这类端口;写成
(无引号)在部分 shell 下会被当作命令分隔符解析出错。
正确:
错误:
(不安全)
错误:
(shell 报错或行为异常)
看到 PID 后别直接 kill -9,先确认进程是否可杀
输出形如
,其中
是 PID,
是进程名。但这个
可能是主进程,也可能是 worker 子进程——直接
可能导致服务异常退出、未释放资源或触发 systemd 自动重启。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
先用
看父进程和启动命令
查服务归属:
,再
若属 systemd 管理,优先用
,而非硬杀
netstat 不可用时别硬等,立刻换 ss 或 lsof
遇到
,说明系统没装
,尤其常见于 Ubuntu 22.04+、CentOS 8+、Alpine 等精简镜像。此时强行安装
不仅多占空间,还引入过时工具链。
用
——输出格式几乎一致,速度更快,无需额外安装
用
——更直观,直接按端口反查,字段清晰(
、
、
都在一列)
二者都依赖 root 权限,但
在容器内有时因挂载限制无法读取所有进程,
更底层、更稳定
真正容易被忽略的点是:即使
显示某端口被占用,也可能只是 socket 处于
状态,背后进程早已退出。这种情况下杀 PID 没用,得等内核回收或调
。排查前先确认是“真监听”还是“假残留”。
netstatnetstat-pnetstat -tuln-p-t-u-l-n-psudogrep ':8080'grep '8080'grep :8080sudo netstat -tulnp | grep ':8080'sudo netstat -tulnp | grep 8080sudo netstat -tulnp | grep :8080tcp6 0 0 *:8080 *:* LISTEN 12345/nginx12345nginxnginxkill -9 12345ps -p 12345 -o pid,ppid,cmd,%memsystemctl list-units --type=service | grep nginxsystemctl status nginxsudo systemctl stop nginxbash: netstat: command not foundnet-toolsnet-toolssudo ss -tulnp | grep ':8080'sudo lsof -i :8080COMMANDPIDUSERlsofssnetstat -tulnpTIME_WAITnet.ipv4.tcp_fin_timeout