菜鸟科技网

如何开启监听命令?

网络服务监听(最常见)

这是指让一个程序(如 Web 服务器、数据库)在指定的网络端口上等待并接收客户端的连接请求。

如何开启监听命令?-图1
(图片来源网络,侵删)

使用 netstat 命令(经典工具,Linux/Unix/macOS)

netstat 是一个查看网络连接、路由表、接口统计信息的工具。

  • 查看所有正在监听的端口:

    netstat -tuln
    • -t: 显示 TCP 端口
    • -u: 显示 UDP 端口
    • -l: 只显示监听状态的端口 (Listen)
    • -n: 以数字形式显示地址和端口,不进行域名解析(速度更快)
  • 查看特定端口是否在监听:

    # 检查 80 端口 (HTTP)
    netstat -tuln | grep :80
    # 检查 22 端口 (SSH)
    netstat -tuln | grep :22

使用 ss 命令(现代替代品,推荐)

ssnetstat 的现代替代品,速度更快,信息更全面,是许多现代 Linux 发行版的默认工具。

如何开启监听命令?-图2
(图片来源网络,侵删)
  • 查看所有正在监听的端口:

    ss -tuln
    • 参数和 netstat 完全一样。
  • 查看特定端口是否在监听:

    # 检查 80 端口
    ss -tuln | grep :80

使用 lsof 命令(通过文件描述符查看)

lsof (list open files) 可以列出当前系统打开的所有文件,在 Unix/Linux 中,网络连接也被视为文件。

  • 查看所有监听端口的进程:

    如何开启监听命令?-图3
    (图片来源网络,侵删)
    # -i:inet 表示显示 IPv4 或 IPv6 的网络连接
    # -P 表示不将端口号转换为服务名
    # -n 表示不将主机名解析为 IP 地址
    lsof -i -P -n
  • 查看特定端口被哪个进程占用:

    # 查看 8080 端口
    lsof -i :8080

在 Windows 上查看监听端口

  • 使用 netstat 命令:

    netstat -ano
    • -a: 显示所有连接和监听端口。
    • -n: 以数字形式显示地址和端口。
    • -o: 显示进程 ID (PID)。
  • 查看特定端口:

    netstat -ano | findstr :80
    • findstr 是 Windows 下的 grep 命令。
  • 使用任务管理器(图形界面):

    1. Ctrl + Shift + Esc 打开任务管理器。
    2. 切换到“性能”选项卡。
    3. 点击左侧的“打开资源监视器”。
    4. 在“网络”部分,点击“TCP 连接”,即可看到所有监听和活动的连接及其对应的 PID。

端口转发/隧道监听

这种“监听”通常指本地机器开启一个端口,所有发往这个端口的流量都会被转发到另一个地址(本地或远程)。

使用 ssh 命令创建本地端口转发

这是一个非常常见的用法,用于安全地访问远程服务。

命令格式:

ssh -L [本地端口]:[目标地址]:[目标端口] [用户名]@[远程服务器IP]

示例: 假设你公司的数据库服务器只能从内网访问,你无法直接连接,但你有一台可以 SSH 登录的跳板机 jump-server.com,数据库在内网 db-server3306 端口上。

你可以在你的本地电脑上执行以下命令:

ssh -L 3307:db-server:3306 myuser@jump-server.com

效果:

  • 你的本地电脑开始在 3307 端口监听
  • 当你本地程序连接 localhost:3307 时,ssh 会将这个连接通过 jump-server.com 转发到 db-server:3306
  • 这样你就可以通过 localhost:3307 安全地访问公司内网的数据库了。

程序/服务开启监听

这是最根本的“开启监听”,你需要运行一个服务程序,它会自动在某个端口上开始监听。

  • 开启 Nginx Web 服务器监听 80 端口:

    # 启动 Nginx 服务
    sudo systemctl start nginx
    # 检查 Nginx 是否正在运行并监听
    sudo systemctl status nginx
    # 或者使用 ss/netstat 查看
    ss -tuln | grep :80
  • 开启 MySQL 数据库服务监听 3306 端口:

    # 启动 MySQL 服务
    sudo systemctl start mysql
    # 检查 MySQL 状态
    sudo systemctl status mysql
    # 或者
    ss -tuln | grep :3306
  • 开启一个简单的 Python HTTP 服务器监听 8000 端口:

    # 进入你的项目目录
    cd /path/to/your/project
    # 运行命令开启监听
    python3 -m http.server 8000

    你的电脑就在 8000 端口上开启了一个监听,你可以通过浏览器访问 http://localhost:8000 来查看你的项目文件。


场景 命令/工具 作用
查看端口是否在监听 ss -tulnnetstat -tuln 检查系统中哪些端口正在被程序监听。
查看哪个进程在监听 lsof -i :[端口号] 找到占用特定监听端口的程序。
开启端口转发 ssh -L ... 在本地开启一个监听端口,将流量转发到远程。
开启服务监听 sudo systemctl start [服务名] 启动一个服务(如 Nginx, MySQL),让它自动在指定端口监听。

请根据您的具体需求,选择合适的命令,如果您想查看某个特定端口的监听状态,ss -tuln | grep :[端口号] 是最常用和推荐的方法。

分享:
扫描分享到社交APP
上一篇
下一篇