ps 命令是 Process Status 的缩写,用于在 AIX 系统中查看当前正在运行的进程状态,它与 Linux 和其他 Unix 系统中的 ps 命令功能相似,但在语法、常用选项和输出格式上存在一些关键差异。

AIX ps 命令的核心特点
AIX 的 ps 命令有几个非常重要的特点:
-
选项不带连字符 :这是与 Linux
ps最显著的区别,在 AIX 中,选项通常直接跟在ps后面,中间没有空格或连字符。- AIX:
ps aux - Linux:
ps -aux
- AIX:
-
强大的
-f(full) 选项:ps -f会显示一个详细的、格式化的进程列表,包含更多有用的列,如父进程ID (PPID)、启动时间、终端等。 -
标准输出格式:不带任何选项的
ps命令只显示非常有限的信息,通常是进程ID和TTY,实用性不强。
(图片来源网络,侵删)
常用选项和示例
以下是在 AIX 系统中最常用、最重要的 ps 命令组合。
显示当前用户的进程
这是最基本、最常用的用法。
# 显示当前终端下运行的进程 ps # 显示当前用户的所有进程(无论在哪个终端运行) ps -u
示例输出 (不带任何选项):
PID TTY TIME CMD
12345 pts/0 0:00 ksh
12346 pts/0 0:00 ps
显示所有用户的进程 (相当于 Linux 的 ps aux)
要查看系统中所有用户的所有进程,需要结合 -e (everyone) 和 -f (full) 选项。

# 显示所有用户的详细信息 ps -ef
ps -ef 是 AIX 系统管理员最常用的命令之一。
示例输出 (ps -ef):
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Oct_01 ? 0:01 /etc/init
root 2 0 0 Oct_01 ? 0:00 page daemon
root 3 0 0 Oct_01 ? 0:00 fsflush
...
root 12345 1 0 Oct_01 pts/0 0:00 /usr/bin/ksh
myuser 67890 12345 0 10:30 pts/1 0:00 /usr/bin/vi my_file.txt
ps -ef 输出列详解:
| 列 | 含义 | 说明 |
|---|---|---|
| UID | User ID | 启动该进程的用户ID。 |
| PID | Process ID | 进程的唯一标识符。 |
| PPID | Parent PID | 父进程的ID,通过 PPID 可以追踪进程的“家族树”。 |
| C | Processor utilization | 进程在过去执行期间使用的处理器时间百分比。 |
| STIME | Start Time | 进程启动的时间。 |
| TTY | Teletype | 进程所在的终端。 表示没有关联终端(通常是守护进程)。 |
| TIME | Cumulative CPU time | 进程自启动以来占用的总CPU时间。 |
| CMD | Command name | 启动进程的命令名称。 |
显示完整的命令行
默认情况下,CMD 列只显示命令名,如果你想看到完整的命令行参数(java -jar myapp.jar),可以使用 -l 或 -f 选项。
# 使用 -f 选项,可以看到完整的命令行 ps -f # 或者使用 -l 选项,显示更长的格式 ps -l
示例输出 (ps -f):
UID PID PPID C STIME TTY TIME CMD
myuser 67890 12345 0 10:30 pts/1 0:00 /usr/bin/vi my_file.txt
如果该进程是通过脚本启动的,CMD 列会完整显示 sh /path/to/script arg1 arg2。
查找特定进程
我们会将 ps 命令与 grep 结合使用,来查找我们关心的特定进程。
重要提示: 下面的命令也会匹配 grep 进程本身,所以通常会使用 grep -v grep 来过滤掉它。
# 查找名为 'java' 的所有进程 ps -ef | grep java # 查找名为 'java' 但不包含 'grep' 字符串的进程 ps -ef | grep java | grep -v grep # 查找进程ID为 12345 的进程 ps -ef | grep 12345
按用户查找进程
使用 -u 选项可以指定用户名或用户ID。
# 查找 'oracle' 用户的进程 ps -f -u oracle # 查找 UID 为 100 的用户的进程 ps -f -u 100
显示没有控制终端的进程
这些通常是系统服务或守护进程。-e 选项已经包含了它们。
# 显示所有没有关联终端的进程 ps -e | grep '?'
AIX ps 与 Linux ps 的主要区别对比
| 特性 | AIX ps |
Linux ps |
|---|---|---|
| 选项语法 | 不带连字符,如 ps aux |
带连字符,如 ps -aux |
| 查看所有进程 | ps -ef |
ps -ef 或 ps aux |
| 显示所有进程 | ps -e |
ps -e 或 ps ax |
| 显示完整格式 | ps -f |
ps -f |
| 显示长格式 | ps -l |
ps -l |
| 按用户筛选 | ps -u username |
ps -u username |
| 按PID筛选 | ps -p PID1,PID2 |
ps -p PID1,PID2 |
| 显示线程 | ps -L 或 ps -emf |
ps -T 或 ps -L |
| 排序 | 不支持直接排序 | 支持,如 ps --sort=-%cpu |
实用技巧和最佳实践
- 使用
ps -ef作为起点:对于系统管理员来说,ps -ef是查看进程状态的“瑞士军刀”,几乎所有复杂的进程查询都基于此。 - 管道到
grep:ps -ef | grep <keyword>是快速定位问题进程最有效的方法。 - 关注
PPID:通过PPID可以轻松地找到某个进程的父进程,这对于理解进程的启动关系非常有帮助,要找到哪个脚本启动了my_script.sh,可以查找CMD列包含my_script.sh的进程,然后看它的PPID,再通过ps -f | grep <PPID>查看父进程。 - 与
kill命令结合:ps的主要目的是找到进程的 PID,然后使用kill命令来管理它们。# 找到占用CPU最高的进程 # ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head # 然后根据PID终止进程 # kill -9 <PID>
- 使用
more或less进行分页:当进程列表很长时,管道到more或less会更方便。ps -ef | less
掌握 AIX 的 ps 命令是进行系统管理和故障排查的基础,记住其最核心的特点——选项不带连字符——以及 ps -ef 这个黄金组合,你就能高效地查看和管理 AIX 系统上的任何进程。
