Linux下ps -ef和ps aux的区别及格式详解

本文详细解释了Linux系统中用于查看进程的两个常用命令:ps-ef和psaux的区别及用法。ps-ef采用标准格式展示进程信息,如用户ID、进程ID等;而psaux则采用BSD格式,增加了进程的CPU和内存使用率等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

ps -ef 是用标准的格式显示进程的、其格式如下

其中各列的内容意思如下
UID    //用户ID、但输出的是用户名
PID    //进程的ID
PPID    //父进程ID
C      //进程占用CPU的百分比
STIME  //进程启动到现在的时间
TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD    //命令的名称和参数

ps aux 是用BSD的格式来显示、其格式如下

同ps -ef 不同的有列有
USER      //用户名
%CPU      //进程占用的CPU百分比
%MEM      //占用内存的百分比
VSZ      //该进程使用的虚拟內存量(KB)
RSS      //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT      //进程的状态
START    //该进程被触发启动时间
TIME      //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D      //无法中断的休眠状态(通常 IO 的进程);
R      //正在运行可中在队列中可过行的;
S      //处于休眠状态;
T      //停止或被追踪;
W      //进入内存交换 (从内核2.6开始无效);
X      //死掉的进程 (基本很少见);
Z      //僵尸进程;
<      //优先级高的进程
N      //优先级较低的进程
L      //有些页被锁进内存;
s      //进程的领导者(在它之下有子进程);
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+      //位于后台的进程组;

<think>好的,我现在需要回答用户关于ps -auxps -ef命令区别的问题。首先,我得仔细回顾提供的引用内容,确保准确引用相关信息。 根据引用[3],ps -aux主要用来查看进程的CPU内存占用率,而ps -ef更关注父进程ID完整的命令参数。这说明两者在输出信息侧重点不同。然后引用[4]提到,两者都显示所有进程,但-aux用于整体状态,-ef用于调试或详细信息。需要确认这两个选项的差异是否在输出格式包含的字段上。 接下来,查看引用[2],里面详细说明了ps命令的选项,比如-e显示所有进程,-f全格式-a显示终端上的所有进程。所以,ps -ef中的-e-f组合可能显示全格式的所有进程,而-aux中的a、u、x选项分别代表所有用户、详细用户信息包括无终端的进程。这里可能涉及到选项的兼容性,比如传统UnixBSD格式区别。 另外,引用[5]提到了在脚本中使用ps aux时可能因为子shell导致结果不同,但用户的问题更多是用法区别,这部分可能暂时不需要深入,除非用户特别询问脚本中的差异。 需要整理出两者的主要区别,包括选项含义、输出格式、常用场景。同时,可能存在的误区是用户认为两者完全等同,但实际上选项组合可能有不同效果,比如-aux是否包含-u选项带来的用户详细信息。此外,根据UnixLinux的不同版本,这些命令的行为可能略有不同,需要指出。 最后,按照用户的要求,生成相关问题,比如选项的具体作用、输出格式解析、使用场景比较等。确保回答结构清晰,分点说明,并正确标注引用来源。</think>### ps -auxps -ef命令的区别及用法比较 #### 1. **命令选项解析** - **`ps -ef`** - `-e`:显示**所有进程**(包括其他用户的进程)[^2] - `-f`:以**全格式**输出,包含UID、PID、PPID(父进程ID)、CMD完整命令路径等字段[^3] - 示例输出: ```bash UID PID PPID C STIME TTY TIME CMD root 1 0 0 09:00 ? 00:00:02 /sbin/init ``` - **`ps -aux`** - `a`:显示**终端上的所有进程**(包括其他用户的进程)[^2] - `u`:以**用户导向格式**输出,包含CPU占用率(%CPU)、内存占用率(%MEM)、进程状态(STAT)等字段[^3] - `x`:显示**无控制终端的进程**(如守护进程)[^2] - 示例输出: ```bash USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 168012 9428 ? Ss 09:00 0:02 /sbin/init ``` #### 2. **核心区别对比** | **对比项** | **`ps -ef`** | **`ps -aux`** | |------------------|------------------------------------|------------------------------------| | **主要用途** | 查看进程的父进程ID完整命令路径 | 查看进程的CPU/内存占用及详细状态 | | **输出字段** | PPID、CMD(完整命令) | %CPU、%MEM、STAT、USER[^3] | | **格式兼容性** | 符合Unix标准格式(SysV风格)[^4] | 兼容BSD格式(含资源占用信息)[^4] | | **调试场景** | 分析进程间的父子关系 | 监控系统资源消耗 | #### 3. **典型使用场景** - **`ps -ef`适用场景** - 需要追踪进程的**父进程ID(PPID)**,例如排查僵尸进程时 - 查看**完整命令行参数**(如启动服务时的配置参数)[^4] - 示例:查找特定服务的进程路径 ```bash ps -ef | grep nginx ``` - **`ps -aux`适用场景** - 监控进程的**资源占用情况**(如CPU或内存过高的进程) - 分析进程的**运行状态**(如僵尸进程标记为`Z`) - 示例:按CPU占用排序进程 ```bash ps -aux --sort=-%cpu | head ``` #### 4. **注意事项** - **命令兼容性**: - `ps -aux`在部分Unix系统中可能被解析为`ps -a -u -x`,而`-u`后需指定用户名,可能导致语法歧义[^5]。在Linux中通常无此问题。 - **字段覆盖性**: - `ps -ef`不显示资源占用,而`ps -aux`缺少PPID字段,需根据需求选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值