linux ps

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

ps命令支持三种使用的语法格式

  1. UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符

  2. BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符

  3. GNU 风格的长选项,选项前有两个“-”连字符

我们能够混用这几种风格,但是可能会发生冲突。本文使用 UNIX 风格的ps命令。

这里有在日常生活中使用较多的ps命令的例子。

对应语法查询

$   man ps

常见例子

查看 java 进程

这样可以查看对应的 java 进程

$ ps -ef | grep java
dh           454     357  0 09:04 pts/0    00:00:00 grep --color=auto java

ps -ef | grep java 是一条用于在 Linux 系统上查找与 Java 相关的进程的命令。

让我们详细解释每个部分:

  1. ps 这是一个用于显示当前进程状态的命令。它的名称来自于 “process status” 的缩写。

  2. -ef 这是 ps 命令的选项,指定显示所有进程的详细信息。具体含义如下:
    • -e 选项表示显示所有进程。
    • -f 选项表示显示详细的进程信息,包括进程的 UID(用户标识符)、PID(进程标识符)、PPID(父进程标识符)、C(CPU 使用率)、STIME(进程启动时间)等。
  3. | 这是管道符,它将 ps -ef 的输出传递给下一个命令。

  4. grep java 这是一个用于搜索包含 “java” 字符串的行的命令。grep 是一个强大的文本搜索工具。

综合起来,ps -ef | grep java 的目的是列出所有正在运行的进程,并使用 grep 过滤出包含 “java” 字符串的那些行。

这样做的结果是显示所有与 Java 相关的进程。

例如,如果你运行了一个 Java 应用程序,你可能会看到类似以下的输出:

user     1234  4567  0 Dec25 pts/0    00:00:00 java -jar myapp.jar

这表示有一个进程 ID 为 1234 的 Java 进程,它是由进程 ID 为 4567 的父进程启动的,命令行是 java -jar myapp.jar

无参数

$   ps

PID TTY          TIME CMD
15599 pts/0    00:00:00 bash
15623 pts/0    00:00:00 ps

结果默认会显示4列信息。

PID: 运行着的命令(CMD)的进程编号

TTY: 命令所运行的位置(终端)

TIME: 运行着的该命令所占用的CPU处理时间

CMD: 该进程所运行的命令

这些信息在显示时未排序

根据某个属性排序

根据 CPU 使用来升序排序

$ ps -aux --sort -pcpu | less

ef 与 aux 区别

ef

$   ps -ef | grep XXXX 

ps -ef 是用标准的格式显示进程的

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

aux

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); + //位于后台的进程组;

参考资料

10个重要的Linux ps命令实战

LINUX下PS -EF和PS AUX的区别及格式详解