插件窝 干货文章 Linux怎么检查程序和监听的端口

Linux怎么检查程序和监听的端口

端口 检查 sudo bash 966    来源:    2025-05-02

在Linux系统中检查运行中的程序及其监听的端口,可以通过以下命令和步骤实现:


1. 检查运行中的程序

方法1:ps 命令

ps aux | grep <程序名或关键字>
  • 示例:查找所有Nginx进程
    bash ps aux | grep nginx
  • 输出说明:显示进程的PID、CPU/内存占用、启动命令等。

方法2:tophtop

top      # 动态查看进程资源占用
htop     # 更友好的交互式工具(需安装)

2. 检查监听的端口

方法1:netstat 命令

sudo netstat -tulnp
  • 参数说明
    • -t:TCP端口
    • -u:UDP端口
    • -l:仅显示监听中的端口
    • -n:以数字形式显示端口(不解析服务名)
    • -p:显示进程名/PID(需sudo权限)
  • 输出示例Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd

方法2:ss 命令(推荐,更高效)

sudo ss -tulnp
  • 参数与netstat类似,但性能更好(现代Linux系统推荐使用)。

方法3:lsof 命令

sudo lsof -i -P -n | grep LISTEN
  • 参数说明
    • -i:显示网络连接
    • -P:禁用端口到服务名的解析(直接显示端口号)
    • -n:禁用IP到域名的解析
  • 输出示例sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)

3. 检查特定程序的端口

# 通过进程名查找(如nginx)
sudo ss -tulnp | grep nginx

# 通过端口号查找(如80端口)
sudo ss -tulnp | grep ':80'

4. 检查端口是否被防火墙阻止

sudo iptables -L -n          # 检查iptables规则
sudo firewall-cmd --list-all # 若使用firewalld(CentOS/RHEL)
sudo ufw status              # 若使用UFW(Ubuntu)

5. 快速验证端口连通性

telnet <IP> <端口>          # 测试TCP端口连通性
nc -zv <IP> <端口>          # 使用netcat测试(需安装)
curl -v telnet://<IP>:<端口> # 使用curl测试

常见问题排查

  1. 端口未监听:确保程序已启动且配置正确。
  2. 防火墙阻止:检查防火墙规则是否放行端口。
  3. 权限问题:绑定1024以下端口需root权限。
  4. 冲突端口:确保端口未被其他程序占用(通过sslsof确认)。

通过以上方法,你可以全面掌握Linux系统中程序与端口的状态。根据需求选择工具,sslsof通常是首选!