在 macOS 系统中,ps
命令是一个核心且强大的工具,用于查看当前系统运行的进程状态,它源自 Unix 系统,在 macOS 的终端(Terminal)中扮演着系统管理和故障排除的关键角色,无论是开发者、系统管理员还是普通用户,掌握 ps
命令都能更高效地了解系统资源使用情况、定位异常进程或管理任务,以下将详细介绍 ps
命令的基础用法、常用选项、输出解析以及进阶技巧。

ps
命令的基础用法
直接在终端输入 ps
命令会显示当前终端会话中运行的进程,默认输出包括四列:
PID
:进程 ID(Process ID),唯一标识一个进程。TT
:终端类型,表示进程所在的终端(ttys000
对应当前终端会话)。TIME
:进程累计 CPU 时间,格式为小时:分钟:秒
。CMD
:启动进程的命令名称。
执行 ps
后可能输出如下:
PID TT TIME CMD
1234 ttys000 0:00:01 zsh
5678 ttys000 0:00:00 ps
这种默认输出仅显示当前终端的进程,功能有限,实际使用中,通常需要结合选项来获取更全面的信息。
常用选项与组合
ps
命令的强大之处在于其丰富的选项,通过选项可以灵活定制输出内容,以下是 macOS 中最常用的选项及组合:

单选项说明
-a
:显示所有终端的进程(包括其他用户的进程,但会省略没有终端的进程)。-e
:显示所有进程,与-A
等价,是最常用的选项之一,可获取系统完整的进程列表。-f
:以完整的格式(full format)显示进程,包括父进程 ID(PPID)、启动时间、命令行参数等详细信息。-j
:以作业控制格式显示进程,包含进程组 ID(PGID)和会话 ID(SID)。-l
:以长格式(long format)显示进程,包含更详细的进程状态信息(如进程状态码、优先级等)。-u
:指定用户格式显示进程,可结合用户名或 UID 筛选,-u username
显示指定用户的进程。-x
:显示没有终端的进程(如后台守护进程、系统服务等)。-p
:指定进程 ID 显示,-p 1234
仅显示 PID 为 1234 的进程信息。-c
:显示进程的真实命令名称(而非完整的命令行路径),适用于快速识别进程类型。-o
:自定义输出列,-o pid,user,cmd
仅显示 PID、用户和命令列。
常用组合示例
-
ps -ef
:这是 Unix/Linux 系统中最经典的进程查看命令,-e
显示所有进程,-f
以完整格式输出,输出列包括:UID
:用户 ID。PID
:进程 ID。PPID
:父进程 ID。C
:CPU 使用率百分比。STIME
:进程启动时间。TTY
:终端。TIME
:累计 CPU 时间。CMD
:启动命令。
示例输出:
UID PID PPID C STIME TTY TIME CMD 501 1234 1 0 10:30 ttys000 0:00:01 /usr/bin/zsh 0 5678 1 0 10:31 ttys000 0:00:00 /usr/bin/ps -ef
-
ps aux
:在 macOS 中,aux
是另一个常用组合,a
显示所有终端进程,u
以用户格式显示,x
显示无终端进程,输出列包括:PID
:进程 ID。COMMAND
:启动命令(与CMD
类似)。%CPU
:CPU 使用率。%MEM
:内存使用率。TT
:终端。STAT
:进程状态(如R
运行中,S
睡眠中,Z
僵尸进程等)。STARTED
:启动时间。TIME
:累计 CPU 时间。USER
:进程所属用户。
示例输出:
(图片来源网络,侵删)USER PID %CPU %MEM TT STAT STARTED COMMAND root 1 0.0 0.0 ?? Ss 10月25 0:01.12 /sbin/launchd user 1234 0.5 0.1 ttys000 S+ 10:30 0:01.23 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
输出字段解析
ps
命令的输出字段会因选项不同而变化,以下是常见字段的含义:
字段名 | 含义 |
---|---|
PID | 进程 ID,系统唯一标识符 |
PPID | 父进程 ID,可用于追踪进程的启动关系 |
UID | 用户 ID,标识进程的运行用户 |
USER | 用户名,与 UID 对应 |
%CPU | 进程占用 CPU 的百分比(动态变化) |
%MEM | 进程占用物理内存的百分比 |
VSZ | 虚拟内存大小(单位:KB),包括进程使用的所有虚拟内存空间 |
RSS | 常驻内存集大小(单位:KB),进程实际占用的物理内存 |
STAT | 进程状态,常见状态包括: - R :运行中- S :睡眠中(可被唤醒)- D :不可中断的睡眠- Z :僵尸进程- T :已停止 |
STARTED | 进程启动时间 |
TIME | 进程累计 CPU 使用时间 |
COMMAND 或 CMD | 启动进程的命令,-f 选项下显示完整路径和参数,-c 选项下仅显示命令名 |
进阶技巧与实际应用
结合管道和 grep
筛选进程
当需要查找特定进程时,可将 ps
的输出通过管道传递给 grep
。
ps aux | grep "Chrome"
此命令会显示所有包含 "Chrome" 关键字的进程,但需注意,grep
自身也会出现在结果中,可通过以下命令排除:
ps aux | grep "Chrome" | grep -v grep
按内存或 CPU 使用率排序
ps
本身不支持直接排序,但可通过 awk
或 sort
命令实现,按 CPU 使用率降序排列:
ps aux | sort -k 3 -nr | head -10
-k 3
表示按第 3 列(%CPU)排序,-nr
表示数字降序,head -10
显示前 10 行。
查看特定用户的进程
ps -u username
或
ps aux | grep "^username"
终止进程
结合 ps
查找到进程 PID 后,可通过 kill
命令终止进程:
kill PID
对于顽固进程,可使用 -9
强制终止:
kill -9 PID
实时监控进程
ps
默认显示静态结果,若需实时监控,可结合 watch
命令(macOS 需通过 brew install watch
安装):
watch -n 1 "ps aux | grep Chrome"
此命令每秒刷新一次,显示 Chrome 进程的实时状态。
注意事项
- 选项兼容性:macOS 的
ps
命令选项与 Linux 基本一致,但部分选项(如--sort
)可能需要 GNU 核心工具支持,macOS 默认 BSD 风格工具可能略有差异。 - 权限问题:普通用户只能查看自己启动的进程,或通过
sudo
获取权限查看系统所有进程(如sudo ps aux
)。 - 输出格式:不同选项组合的输出列可能不同,需结合
man ps
查看手册(终端输入man ps
)。
相关问答FAQs
问题1:如何通过 ps
命令查找占用内存最高的进程?
解答:可以使用 ps
命令结合 sort
和 head
实现,按内存使用率(%MEM)降序排列并显示前 5 个进程:
ps aux | sort -k 4 -nr | head -5
-k 4
表示按第 4 列(%MEM)排序,-nr
表示数字降序,若需按虚拟内存(VSZ)排序,可将 sort
的 -k
参数改为 -k 5
(VSZ 列位置可能因选项不同而变化,需通过 ps aux
确认列号)。
问题2:ps
命令中 STAT
字段的 Ss
和 R+
状态分别代表什么?
解答:STAT
字段显示进程的当前状态,常见状态码含义如下:
Ss
:S
表示进程处于睡眠状态(可被唤醒),s
表示该进程是会话组长(session leader)。R+
:R
表示进程正在运行中, 表示进程位于前台进程组(与终端交互)。
其他常见状态包括:D
(不可中断睡眠)、Z
(僵尸进程)、T
(已停止)等,通过STAT
字段可快速判断进程的活动状态,便于排查问题。