学习笔记

Study notes

Linux ps 命令详解

云逐梦31352022-04-01 18:49:00返回列表

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。kill 命令用于杀死进程。

一、前言

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

、ps详解

    1、命令格式

ps [options] [--help]

    2、命令参数

-e,-A 显示所有进程
-f 显示完整格式的输出
-l 显示长列表
-a,所有进程,加上-x参数会显示没有控制终端的进程
-u username,显示指定用户的进程,例如ps -u ltc
-x 显示没有控制终端的进程;
-aux 按照CPU或者内存用量来筛选进程,例如ps -aux --sort -pcpu或ps -aux --sort -pmem
-C cmdlist,显示包含在cmdlist列表中的进程,例如ps -C test
-L 显示进程中的线程,例如ps -L 123,123为进程ID
-j 显示任务信息
-H 用层级显示进程,树状结构

    3、实例介绍

    实例一:显示进程信息

    命令:

    ps 

   image.png

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

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

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

  • CMD: 该进程所运行的命令

    实例二:显示所有当前进程

    命令:

    ps  -ax

    使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。

    这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。(ps  -ax | less)

    

    实例三:根据用户过滤进程

    命令:

    ps  -u yzm

    在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'yzm'的进程,如上命令


    实例四:通过CPU和内存使用来过滤进程

    命令:

    ps  aux

    默认的结果集是未排好序的。可以通过 --sort命令来排序。

    根据 CPU 使用来升序排序: ps aux --sort -pcpu

    根据内存使来升序排序: ps aux --sort -pmem

    找出与 cron 与 syslog 这两个服务有关的 PID 号码: ps aux | egrep '(cron|syslog)'

    可以用 | 管道和 more 连接起来分页查看: ps -aux |more

    把所有进程显示出来,并输出到test.txt文件:ps -aux > test.txt

image.png

 ps命令输出信息含义
表头含义
USER该进程是由哪个用户产生的。
PID进程的 ID。
%CPU该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ该进程占用虚拟内存的大小,单位为 KB。
RSS该进程占用实际物理内存的大小,单位为 KB。
TTY该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
STAT进程状态。常见的状态有以下几种:
  1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。

  2. -R:该进程正在运行。

  3. -S:该进程处于睡眠状态,可被唤醒。

  4. -T:停止状态,可能是在后台暂停或进程处于除错状态。

  5. -W:内存交互状态(从 2.6 内核开始无效)。

  6. -X:死掉的进程(应该不会出现)。

  7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。

  8. -<:高优先级(以下状态在 BSD 格式中出现)。

  9. -N:低优先级。

  10. -L:被锁入内存。

  11. -s:包含子进程。

  12. -l:多线程(小写 L)。

  13. -+:位于后台。

START该进程的启动时间。
TIME该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND产生此进程的命令名。


    实例五:查看系统中所有的进程(详细信息)

    命令:

    ps  -le

    说明:"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 "-l" 选项的作用,所以 "ps -le" 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的。

image.png



ps -le 命令输出信息
表头含义
F进程标志,说明进程的权限,常见的标志有两个:
  • 1:进程可以被复制,但是不能被执行;

  • 4:进程使用超级用户权限;

S进程状态。具体的状态和"ps aux"命令中的 STAT 状态一致;
UID运行此进程的用户的 ID;
PID进程的 ID;
PPID父进程的 ID;
C该进程的 CPU 使用率,单位是百分比;
PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
NI进程的优先级,数值越小,该进程越早被执行;
ADDR该进程在内存的哪个位置;
SZ该进程占用多大内存;
WCHAN该进程是否运行。"-"代表正在运行;
TTY该进程由哪个终端产生;
TIME该进程占用 CPU 的运算时间,注意不是系统时间;
CMD产生此进程的命令名;



    实例六:查看一下当前登录产生了哪些进程

    命令:

    ps  -l

 image.png

    这次从 pts/4 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。


    实例七:显示所有进程信息,连同命令行

    命令:

    ps  -ef


    实例八:ps 与grep 常用组合用法,查找特定进程

    命令:

    ps  -ef|grep ssh

    

    实例九:通过进程名过滤

    命令:

    ps  -C bash

image.png


    实例十:通过线程过滤进程

    命令:

    ps  -L  26951

image.png


    实例十一:树形显示进程

    命令:

    ps  axjf   或  pstree



返回
顶部