在日常运维工作中,监控进程状态是 Linux 管理员的必备技能。首先明确一下,什么是进程?
什么是进程
进程是正在执行的程序实例,每个进程都是一个运行实体,拥有独立的地址空间并占用系统资源。它由程序指令、从文件或其他程序读取的数据以及用户输入组成。操作系统会为每个进程分配一个唯一标识符,即 PID(Process ID)。
进程的类型
- 前台进程:由终端会话初始化并控制,通常需要用户交互才能启动,不属于系统服务的自动启动部分。
- 后台进程:未连接到终端,不需要用户输入即可运行。
- 守护进程:一种特殊的后台进程,通常在系统启动时自动运行,作为服务持续驻留。
所有可执行程序都会产生进程。简单的命令如 ls 执行完即结束,进程随之消失;而像 httpd 这样的服务进程则会一直驻留在系统中,称为常驻内存进程。
某些进程会生成新进程,前者为父进程,后者为子进程。例如在 Shell 环境中执行命令时,Shell(通常是 bash)是父进程,执行的命令是子进程。子进程依赖父进程存在,若父进程终止,子进程通常也会受到影响。
查看系统中的进程:ps aux
ps 命令用于查看进程状态,常用组合如下:
ps aux
| 参数 | 作用 |
|---|---|
| -a | 显示所有用户的进程 |
| -u | 显示用户及其他详细信息 |
| -x | 显示没有控制终端的进程 |
以下是关键字段的含义说明:
| 列名 | 含义 |
|---|---|
| USER | 进程所属用户 |
| PID | 进程 ID |
| %CPU | CPU 资源占用百分比 |
| %MEM | 物理内存占用百分比 |
| VSZ | 虚拟内存大小(KB) |
| RSS | 实际物理内存大小(KB) |
| TTY | 运行终端 |
| STAT | 进程状态 |
| START | 启动时间 |
| TIME | CPU 运算时间 |
| COMMAND | 启动命令 |
常见的 STAT 状态包括:
- D:不可唤醒的睡眠状态(通常涉及 I/O)
- R:正在运行
- S:可唤醒的睡眠状态
- T:停止状态(暂停或调试中)
- W:内存交换状态(2.6 内核后已无效)
- X:死掉的进程
- Z:僵尸进程
- <:高优先级
- N:低优先级
- :被锁入内存


