在 Linux 系统中,查看和管理进程是系统管理的重要任务之一。以下是常用的查看进程命令及其用法:
ps
- 查看当前进程基本语法:
ps [options]
常用组合:
- ps aux
:查看所有用户的所有进程(BSD 风格)
- a
:显示所有用户的进程
- u
:显示进程的详细信息(如用户、CPU、内存等)
- x
:包括未关联终端的进程(如后台服务)
输出列说明:USER, PID, %CPU, %MEM, VSZ(虚拟内存), RSS(物理内存), TTY, STAT(状态), START, TIME, COMMAND
ps -ef
:以完整格式列出所有进程(标准 UNIX 风格)
-e
:所有进程-f
:完整格式(包括 PPID、启动时间等)示例:
ps aux | grep nginx # 查找 nginx 相关进程
top
- 动态实时查看进程功能:动态显示系统资源使用情况和进程列表(按 CPU 占用排序,默认 3 秒刷新一次)。
快捷键:
- P
:按 CPU 使用率排序
- M
:按内存使用率排序
- q
:退出
- k
:终止指定 PID 的进程
- 1
:显示所有 CPU 核心的负载
类似工具:
- htop
(需安装):增强版 top
,支持鼠标操作和颜色高亮。
bash
sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/RHEL
pstree
- 以树形结构显示进程功能:直观展示进程间的父子关系。
常用选项:
- -p
:显示 PID
- -u
:显示用户名
- -a
:显示完整命令
示例:
pstree -apu # 树形显示所有进程及用户信息
pgrep
- 通过名称查找进程 PID功能:快速根据进程名获取 PID。
示例:
pgrep -l nginx # 查找 nginx 进程并显示名称
pidof
- 获取进程的 PID功能:直接返回指定进程名的 PID。
示例:
pidof nginx # 输出 nginx 的主进程 PID
lsof
- 查看进程打开的文件功能:列出被进程打开的文件或网络连接。
常用场景:
lsof -i :80 # 查看占用 80 端口的进程
lsof -p <PID> # 查看指定 PID 打开的文件
lsof -u username # 查看某用户打开的文件
kill
/ pkill
- 终止进程kill
:通过 PID 终止进程bash
kill -9 <PID> # 强制终止进程(SIGKILL)
pkill
:通过名称终止进程bash
pkill -f "nginx" # 终止所有匹配 "nginx" 的进程
systemctl
- 管理系统服务(Systemd)适用场景:查看或管理由 Systemd 管理的服务进程。
systemctl status nginx # 查看 nginx 服务状态
systemctl stop nginx # 停止服务
systemctl start nginx # 启动服务
netstat
/ ss
- 查看网络相关进程netstat
(较老,部分系统已弃用):
bash
netstat -tulnp | grep 80 # 查看监听 80 端口的进程
ss
(推荐替代 netstat
):
bash
ss -tulnp | grep 80
命令 | 用途 | 常用示例 |
---|---|---|
ps aux |
查看所有进程详情 | ps aux | grep java |
top |
实时监控进程资源占用 | top |
pstree |
树形显示进程关系 | pstree -p |
pgrep |
根据名称查找 PID | pgrep -l nginx |
lsof |
查看进程打开的文件/端口 | lsof -i :22 |
kill |
终止进程 | kill -9 1234 |
systemctl |
管理 Systemd 服务 | systemctl status sshd |
根据需求选择合适的工具:
- 快速查找进程:pgrep
或 pidof
- 实时监控:top
或 htop
- 分析进程关系:pstree
- 网络连接:ss
或 lsof