文章目录
- [netstat -lntp](#netstat -lntp)
-
- [ss -lntp](#ss -lntp)
- [ps aux](#ps aux)
netstat -lntp
含义:查看当前系统正在监听(Listening)的 TCP 网络端口及其对应的进程。
netstat 是 "Network Statistics" 的缩写。这是一个经典的老牌工具。
参数详解:
- -l (listening):只显示正在监听的套接字(即正在等待连接的服务,如 Web 服务器等待 HTTP 请求)。如果不加此项,还会显示已经建立连接(ESTABLISHED)的会话。
- -n (numeric):直接显示数字形式的 IP 地址和端口号,不去尝试解析域名或服务名(例如显示 80 而不是 http,显示 127.0.0.1 而不是 localhost)。这能显著提高命令执行速度。
- -t (tcp):只显示 TCP 协议的连接。如果不加,可能还会显示 UDP 或 Unix Socket。
- -p (program):显示占用该端口的进程 ID (PID) 和 程序名称。
ss -lntp
含义:与 netstat -lntp 含义完全相同,是其现代化的替代品。
ss 是 "Socket Statistics" 的缩写。
参数详解:
- -l:显示监听状态的 socket。
- -n:不解析服务名称(显示数字)。
- -t:只显示 TCP socket。
- -p:显示对应的进程信息(同样需要 root 权限才能看全)。
为什么用 ss 而不是 netstat? - 速度更快:netstat 是通过读取 /proc 文件系统来获取信息的,当连接数成千上万时,速度会很慢。
- ss 直接从内核空间获取信息(利用 Netlink 机制),在高并发场景下效率极高。
现状:在许多极简版的 Linux 发行版(如某些 Docker 镜像或 CentOS 7/8 最小化安装)中,默认可能没有 netstat,但通常会有 ss
ps aux
含义:查看系统中当前运行的所有进程的详细信息。
ps 是 "Process Status"(进程状态)的缩写。aux 是 BSD 风格的参数组合(注意这里通常不加短横线 -,虽然加了也能用)。
参数详解:
- a (All):显示所有用户的进程(不仅仅是当前用户的),通常指包含终端(tty)的进程。
- u (User):以用户为主的格式进行显示(显示启动进程的用户、CPU、内存占用等详细信息)。
- x:显示没有控制终端的进程(通常是后台服务、守护进程,如 nginx、mysql 等)。
常用场景:
- CPU 或内存飙高时,查找是哪个进程在占用资源。
- 查看某个服务(如 python 脚本)是否正在运行。
- 获取进程的 PID(进程 ID),以便将其杀掉(kill)。
输出关键列解释:
- USER: 运行该进程的用户。
- PID: 进程 ID。
- %CPU: CPU 占用率。
- %MEM: 内存占用率。
- VSZ / RSS: 虚拟内存和物理内存占用量。
- STAT: 进程状态(R=运行, S=睡眠, Z=僵尸进程等)。
- COMMAND: 启动该进程的具体命令