Linux ps 命令用于显示某个时刻进程的信息,也就是说它显示的是某个时刻进程的快照,它拥有众多的风格,可分为3组:UNIX风格,BSD风格,GNU风格,本文介绍UNIX风格的ps指令。
我们一般需要模糊匹配的方式查找进程,请看 Linux ps -ef grep查找进程。
命令格式
ps [选项]
其中,选项是可以缺省的,下面介绍ps命令一些常用的选项。
ps命令选项 | 解释 |
-a | 与任何用户标识和终端相关的进程 |
-e | 所有进程(包括守护进程) |
-p | pid 与指定PID相关的进程 |
-u | userid 与指定用户标识userid相关的进程 |
-ef | 显示所有用户进程,完整输出 |
-a | 显示所有非守护进程 |
-t | 仅显示所有守护进程 |
显示参数
通过ps aux 命令看看有哪些参数
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128000 6624 ? Ss 06:45 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 06:45 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 06:45 0:00 [kworker/0:0H]
相关参数的解释如下:
参数 | 解释 |
ADDR | 进程表中的虚拟地址 |
C | 处理器利用率(废弃率) |
CMD | 正被执行的命令的名称 |
F | 与进程相关的标志 |
NI | nice值,用于设置优先级 |
PID | 进程ID |
PPID | 父进程的进程ID |
PRI | 优先级(较大的数字=较低的优先级) |
RSS | 内存驻留空间大小(内存管理) |
S | 状态代码(D,R,S,T,Z) |
STIME | 累积系统时间 |
SZ | 物理页的大小(内存管理) |
TIME | 累积CPU时间 |
TTY | 控制终端的完整名称 |
UID | 用户标识 |
WCHAN | 等待通道 |
例子
1. 显示所有当前进程
$ ps -ax //-a 代表 all,同时加上x参数会显示没有控制终端的进程。
$ ps -ax | less //less便于查看
2. 根据用户过滤进程
$ ps -u www//要查看用户'www'的进程
3. 通过cpu和内存使用来过滤进程
$ $ ps -aux | less
$ ps -aux --sort -pcpu | less //--sort命令根据CPU使用来升序排序
$ ps -aux --sort -pmem | less //--sort命令根据内存使用来升序排序
$ ps -aux --sort -pcpu,+pmem | head -n 10 //同时根据CPU和内存排序,并显示前10个结果
3. 通过进程名和PID过滤
$ ps -C java //显示名为java的进程的信息
$ ps -f -C Java //显示进程更多的信息
4. 显示安全信息
$ ps -eo pid,user,args //参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User和Args参数显示PID,运行应用的用户和该应用
5. 实时监控进程状态
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’ //每秒刷新一次当前的进程状态
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’ //限制前20条