直接用 ss 配合 watch 即可实现实时监控:watch -n 2 'ss -tuln' 查监听端口;watch -n 1 'sudo ss -tulnp | grep ":8080"' 精准盯端口;watch -n 2 'ss -tan state time-wait | wc -l' 监控异常状态;watch -n 2 'sudo ss -tunp | grep -E "(nginx|redis|python)"' 按进程过滤。

直接用 ss 配合 watch 就能实现实时监控,不需要装额外工具,也不依赖域名解析,响应快、输出干净。
看所有监听端口(基础实时视图)
这是最常用的起点,适合快速确认哪些服务正在运行:
- 执行命令:watch -n 2 'ss -tuln'
- -tuln 含义:只看 TCP/UDP 监听端口(-t -u -l),数字显示(-n)
- -n 2 表示每 2 秒刷新一次,可改成 1 或 5 按需调整
- 终端会持续滚动更新,按 Ctrl+C 退出
精准盯住某个端口(比如 8080 或 3306)
当已知目标端口,想排除干扰、专注观察时用:
- 执行命令:watch -n 1 'sudo ss -tulnp | grep ":8080"'
- 必须加 sudo 才能显示进程名和 PID;grep ":8080" 确保只匹配端口字段(冒号防误匹配 PID)
- 如果看到类似
users:(("java",pid=1234,fd=9)),说明是 PID 1234 的 java 进程在用 - 换端口只需改 grep 后面的数字,如
":3306"或":443"
监控连接状态变化(查异常堆积)
某些问题表现为连接数突增或特定状态卡住,比如大量 TIME_WAIT 或 CLOSE_WAIT:
- 查当前活跃连接总数:watch -n 3 'ss -s | head -5'
- 单独盯 TIME_WAIT:watch -n 2 'ss -tan state time-wait | wc -l'
- 盯 CLOSE_WAIT(常表示程序没关 socket):watch -n 2 'ss -tan state close-wait | wc -l'
- 数值持续上涨就值得排查,比如 CLOSE_WAIT 超过几百通常不正常
按进程名过滤(快速定位某服务)
当你知道是 nginx、redis 或 python 进程占了资源,但不确定端口时:
- 执行命令:watch -n 2 'sudo ss -tunp | grep -E "(nginx|redis|python)"'
- -tunp 查所有非监听连接(已建立、关闭中等)+ 进程信息
- grep -E 支持多关键词“或”匹配,一行命令覆盖多个常见服务
- 输出里能看到本地端口、远端 IP、连接状态和对应 PID,一目了然

















