概述

ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。

ps 命令支持的语法风格

  1. UNIX风格: 选项可以组合在一起,并且选项前必须有“-”连字符
  2. BSD风格: 选项可以组合在一起,但是选项前不能有“-”连字符
  3. GNU风格: 选项前有两个“-”连字符

example

参数

–sort: 对结果集进行排序

-L: 显示指定进程的线程, 例如 ps -L 1234(1234 为pid)

-o: 控制输入的列数据

-e: 显示所有进程信息

-f: 做一个更为完整的输出,通常跟-e参数一块使用

-u: 以用户为主的进程状态,通常跟-a一块使用

-a: 显示现行终端机下的所有进程,包括其他用户的进程(这是当前终端的所有进程,通过配合-aux查看所有的进程)

-x: 显示较完整信息。通常与-a这个参数一起使用

-A: 列出所有的进程(这是所有进程)

-C: 根据进程名做筛选, 例如, ps -C nginx

-j: 以job的格式展示

ps -aux 与 ps -ef的区别

输出的格式不一样,ps -aux输出包括进程的cpu跟内存的使用情况,而ps -ef只输出进程的信息(如pid, ppid等),未输出进程的更详细信息,如果要通过--sort参数做排序的话,通常使用ps -aux

–sort参数详解

--sort参数中,-减号是降序,+号表示升序,–sort的排序列跟-o 的列一致,默认是升序格式

-o 格式化的参数

format格式较多,可通过man ps查看,主要的参数有pid, ppid, pgid, cmd(command,agrs), pcpu, pmem, tty

ps -o

显示进程树

1
ps -ejH 或者 ps axjf

显示进程数

显示线程

1
2
ps -aux | grep container
px -L pid

显示线程

格式化输出

1
ps -eo pid,ppid,pgid,tty,cmd

格式化输出

实时输出

1
watch -n 1 'ps -aux --sort -pcpu,-pmem | head -20'

实时输出

pstree

pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。

参数

-p: 显示pid

-a: 显示进程参数

进程树显示进程pid
1
pstree -p

pstree -p

显示指定进程的进程树
1
pstree -p 1234

pstree -p

显示参数
1
pstree -ap 1234

pstree -a

参考文档