ps aux
是一个常用的 Linux/Unix 命令,用于显示当前系统中所有用户的进程信息。以下是相关知识的详细说明:
1. 命令格式
ps aux
ps
:进程状态(Process Status)命令。a
:显示所有用户的进程(包括其他用户的进程)。u
:以用户友好的格式显示进程信息(详细信息)。x
:显示没有控制终端的进程(通常是后台进程)。
2. 输出字段说明
执行 ps aux
后,输出的每一列代表不同的信息:
列名 | 说明 |
---|---|
USER | 进程的拥有者(用户名)。 |
PID | 进程ID(Process ID),唯一标识一个进程。 |
%CPU | 进程占用的 CPU 使用率(百分比)。 |
%MEM | 进程占用的内存使用率(百分比)。 |
VSZ | 虚拟内存大小(Virtual Memory Size),单位为 KB。 |
RSS | 常驻内存大小(Resident Set Size),进程实际占用的物理内存大小,单位为 KB。 |
TTY | 进程关联的终端(? 表示没有终端,通常是后台进程)。 |
STAT | 进程状态(见下文详细说明)。 |
START | 进程启动时间。 |
TIME | 进程占用 CPU 的总时间(格式为 分钟:秒 )。 |
COMMAND | 启动进程的命令名称或路径。 |
3. STAT 进程状态
STAT
列表示进程的当前状态,常见的状态字符包括:
状态字符 | 说明 |
---|---|
R | 运行中(Running)或可运行(Runnable)。 |
S | 睡眠中(Sleeping),通常是等待某个事件完成。 |
D | 不可中断的睡眠状态(通常是等待 I/O 操作完成)。 |
Z | 僵尸进程(Zombie),进程已终止但未被父进程回收。 |
T | 停止(Stopped),通常是被信号暂停(如 Ctrl+Z)。 |
< | 高优先级进程。 |
N | 低优先级进程。 |
s | 会话领导者(Session Leader)。 |
l | 多线程进程。 |
+ | 前台进程组中的进程。 |
4. 常用选项
除了 aux
,ps
命令还有其他常用选项:
选项 | 说明 |
---|---|
-e | 显示所有进程(等同于 -A )。 |
-f | 显示完整格式的进程信息(包括父进程 ID、启动时间等)。 |
-l | 显示长格式的进程信息(包括优先级、nice 值等)。 |
--sort | 按指定字段排序输出(如 --sort=-%cpu 按 CPU 使用率降序排序)。 |
-o | 自定义输出字段(如 ps -o pid,comm,%cpu 只显示 PID、命令和 CPU 使用率)。 |
5. 示例
示例 1:显示所有进程
ps aux
示例 2:按 CPU 使用率排序
ps aux --sort=-%cpu
示例 3:显示特定用户的进程
ps -u username
示例 4:显示特定进程的详细信息
ps -fp <PID>
示例 5:自定义输出字段
ps -eo pid,comm,%cpu,%mem --sort=-%cpu
6. 结合其他命令
ps aux
可以与其他命令结合使用,例如:
- 使用
grep
过滤特定进程:ps aux | grep nginx
- 使用
awk
提取特定字段:ps aux | awk '{print $1, $2, $3}'
- 使用
head
或tail
查看部分输出:ps aux --sort=-%mem | head -n 10
7. 注意事项
ps aux
显示的是命令执行时刻的进程快照,如果需要实时监控进程状态,可以使用top
或htop
。- 僵尸进程(Zombie)通常是由于父进程未正确处理子进程的终止状态,需要检查并修复相关程序。
1. 查找进程
ps aux | grep 14_有始有终有总量有json.py
- 作用:查找包含
14_有始有终有总量有json.py
的进程。 - 问题:
grep
命令本身也会出现在结果中,因为它也匹配了14_有始有终有总量有json.py
。
2. 排除 grep
进程并提取 PID
ps aux | grep 14_有始有终有总量有json.py | grep -v grep | awk '{print $2}'
- 作用:
- 查找包含
14_有始有终有总量有json.py
的进程。 - 使用
grep -v grep
排除grep
进程本身。 - 使用
awk '{print $2}'
提取进程的 PID(第 2 列)。
- 查找包含
- 输出:符合条件的进程的 PID。
3. 终止进程
ps aux | grep 14_有始有终有总量有json.py | grep -v grep | awk '{print $2}' | xargs kill
- 作用:
- 查找并提取符合条件的进程 PID。
- 使用
xargs kill
终止这些进程。
- 说明:
kill
会发送默认的TERM
信号(15),要求进程正常退出。
4. 强制终止进程
ps aux | grep 14_有始有终有总量有json.py | grep -v grep | awk '{print $2}' | xargs kill -9
- 作用:
- 查找并提取符合条件的进程 PID。
- 使用
xargs kill -9
强制终止这些进程。
- 说明:
kill -9
发送KILL
信号(9),强制终止进程,不会给进程清理资源的机会。
优化建议
1. 使用 pgrep
简化命令
pgrep
可以直接查找进程并返回 PID,避免使用 grep
和 awk
:
pgrep -f '14_有始有终有总量有json.py' | xargs kill
-f
:匹配完整的命令行(包括参数)。- 如果需要强制终止,可以加上
-9
:pgrep -f '14_有始有终有总量有json.py' | xargs kill -9
2. 使用 pkill
直接终止进程
pkill
可以直接根据名称终止进程:
pkill -f '14_有始有终有总量有json.py'
- 如果需要强制终止,可以加上
-9
:pkill -9 -f '14_有始有终有总量有json.py'
总结
- 如果你只需要查找进程 PID,可以使用
pgrep
。 - 如果需要终止进程,可以使用
pkill
,它更简洁高效。 - 如果需要强制终止进程,可以加上
-9
参数。
ps aux | grep ljsang | grep -v grep | awk '{print $2}' | xargs kill -9
ps aux --sort=-%cpu | head -n 11