核心工具及命令
netstat
命令(经典工具)
netstat -tuln | grep <端口号>
- 参数解析:
-t
(TCP端口)
-u
(UDP端口)
-l
(仅监听端口)
-n
(以数字形式显示)
-p
(显示进程信息,需sudo权限) - 示例:
查看80端口占用:netstat -tulnp | grep :80
- 输出关键列:
Proto
(协议)、Local Address
(监听地址:端口)、PID/Program name
(进程ID/名称)
ss
命令(netstat
的现代替代)
ss -tuln | grep <端口号>
- 优势:执行速度更快,语法更简洁。
- 常用参数:
-s
(统计摘要)、-a
(所有连接) - 示例:
查看所有TCP监听端口:ss -tln
lsof
命令(基于进程的查询)
sudo lsof -i :<端口号>
- 功能:直接关联端口与进程。
- 参数扩展:
-i TCP
(仅TCP端口)、-P
(禁止端口转服务名) - 示例:
查看22端口(SSH)的进程:sudo lsof -i :22
nmap
工具(网络扫描)
sudo nmap -sT -p- localhost
- 用途:扫描本地开放端口(适合安全审计)。
- 参数说明:
-sT
(TCP连接扫描)、-p-
(扫描所有端口)
进阶操作
根据端口终止进程
- 步骤:
- 通过端口查PID:
sudo ss -tulp | grep ':80'
- 终止进程(假设PID为1234):
sudo kill 1234
或强制终止:
sudo kill -9 1234
- 通过端口查PID:
端口占用排查流程
- 确认端口是否监听:
ss -tuln | grep <端口>
- 检查防火墙:
sudo ufw status
(若使用UFW) - 验证服务配置:如Nginx/Apache的配置文件。
工具对比与场景建议
工具 | 适用场景 | 优势 |
---|---|---|
netstat |
兼容旧系统,基础查询 | 信息全面,广泛支持 |
ss |
快速检查活跃连接 | 性能高,输出简洁 |
lsof |
精确定位进程与文件关联 | 深度分析进程资源占用 |
nmap |
安全扫描或批量检测 | 支持高级扫描策略 |
最佳实践:
- 日常检查用
ss
或netstat
;- 进程关联用
lsof
;- 全面扫描用
nmap
。
注意事项
- 权限要求:
lsof
、netstat -p
等需sudo
权限才能显示进程信息。 - 端口状态解读:
LISTEN
:服务正在监听ESTABLISHED
:活跃连接TIME_WAIT
:连接关闭中
- 安全提示:
开放的非必要端口可能成为攻击入口,定期使用nmap
扫描可增强安全性。
引用说明
- Linux man pages:
man netstat
,man ss
,man lsof
- Nmap官方文档:https://nmap.org/book/man.html
- 工具兼容性参考:基于Linux内核4.15+及主流发行版(Ubuntu 20.04+, CentOS 7+)验证。
通过以上方法,可高效管理Linux端口资源,确保服务稳定运行并提升系统安全性,建议结合场景选择工具,复杂问题可交叉验证结果。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5929.html