在 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 -efps 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字段可快速判断进程的活动状态,便于排查问题。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/414460.html<
