• 技术文章 >运维 >linux运维

    linux下查询进程的命令是什么

    青灯夜游青灯夜游2022-04-13 16:41:40原创4731

    查询进程的命令:1、ps命令,能查看系统中所有运行进程的详细信息,语法“ps aux”或“ps -le”;2、top命令,能实时监听进程运行状态,语法“top 选项”;3、pstree命令,能查看进程树,以树形结构显示程序和进程之间的关系。

    本教程操作环境:CentOS 6系统、Dell G3电脑。

    进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

    无论是 Linux 系统管理员还是普通用户,监视系统进程的运行情况并适时终止一些失控的进程,是每天的例行事务。

    Linux 中虽然使用命令进行进程管理,但是进程管理的主要目的是一样的,即查看系统中运行的程序和进程、判断服务器的健康状态和强制中止不需要的进程。

    那么linux下查询进程命令是什么?下面本篇文章给大家分享一些linux查询进程的命令。

    Linux ps命令:查看正在运行的进程

    ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。

    ps 命令的基本格式如下:

    [root@localhost ~]# ps aux
    #查看系统中所有的进程,使用 BS 操作系统格式
    [root@localhost ~]# ps -le
    #查看系统中所有的进程,使用 Linux 标准命令格式

    选项:

    可以看到,ps 命令有些与众不同,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是前面不能带“-”。

    大家如果执行 "man ps" 命令,则会发现 ps 命令的帮助为了适应不同的类 UNIX 系统,可用格式非常多,不方便记忆。所以,我建议大家记忆几个固定选项即可。比如:

    有这三个命令就足够了,下面分别来查看。

    【例 1】

    [root@localhost ~]# ps aux
    #查看系统中所有的进程
    USER PID %CPU %MEM  VSZ  RSS   TTY STAT START TIME COMMAND
    root   1  0.0  0.2 2872 1416   ?   Ss   Jun04 0:02 /sbin/init
    root   2  0.0  0.0    0    0   ?    S   Jun04 0:00 [kthreadd]
    root   3  0.0  0.0    0    0   ?    S   Jun04 0:00 [migration/0]
    root   4  0.0  0.0    0    0   ?    S   Jun04 0:00 [ksoftirqd/0]
    …省略部分输出…

    表 1 中罗列出了以上输出信息中各列的具体含义。

    表 1 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产生此进程的命令名。

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

    [root@localhost ~]# ps -le
    F S UID PID PPID C  PRI Nl ADDR  SZ WCHAN TTY      TIME  CMD
    4 S   0   1    0 0  80   0 -    718 -     ?    00:00:02  init
    1 S   0   2    0 0  80   0 -      0 -     ?    00:00:00  kthreadd
    1 S   0   3    2 0 -40   - -      0 -     ?    00:00:00  migration/0
    1 S   0   4    2 0  80   0 -      0 -     ?    00:00:00  ksoflirqd/0
    1 S   0   5    2 0 -40   - -      0 -     ?    00:00:00  migration/0
    …省略部分输出…

    表 2 罗列出以上输出信息中各列的含义。

    表 2 ps -le 命令输出信息
    表头含义
    F进程标志,说明进程的权限,常见的标志有两个:
    • 1:进程可以被复制,但是不能被执行;
    • 4:进程使用超级用户权限;
    S进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
    UID运行此进程的用户的 ID;
    PID进程的 ID;
    PPID父进程的 ID;
    C该进程的 CPU 使用率,单位是百分比;
    PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
    NI进程的优先级,数值越小,该进程越早被执行;
    ADDR该进程在内存的哪个位置;
    SZ该进程占用多大内存;
    WCHAN该进程是否运行。"-"代表正在运行;
    TTY该进程由哪个终端产生;
    TIME该进程占用 CPU 的运算时间,注意不是系统时间;
    CMD产生此进程的命令名;

    【例 3】如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令就足够了:

    [root@localhost ~]# ps -l
    #查看当前登录产生的进程
    F S UID   PID  PPID C PRI NI ADDR SZ WCHAN TTY       TIME CMD
    4 S 0   18618 18614 0  80  0 - 1681  -     pts/1 00:00:00 bash
    4 R 0   18683 18618 4  80  0 - 1619  -     pts/1 00:00:00 ps

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

    Linux top命令:持续监听进程运行状态

    ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。

    为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

    top 命令的基本格式如下:

    [root@localhost ~]#top [选项]

    选项:

    在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:

    我们看看 top 命令的执行结果,如下:

    [root@localhost ~]# top
    top - 12:26:46 up 1 day, 13:32, 2 users, load average: 0.00, 0.00, 0.00
    Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
    Mem: 625344k total, 571504k used, 53840k free, 65800k buffers
    Swap: 524280k total, 0k used, 524280k free, 409280k cached
    PID   USER PR NI VIRT  RES  SHR S %CPU %MEM   TIME+ COMMAND
    19002 root 20  0 2656 1068  856 R  0.3  0.2 0:01.87 top
    1     root 20  0 2872 1416 1200 S  0.0  0.2 0:02.55 init
    2     root 20  0    0    0    0 S  0.0  0.0 0:00.03 kthreadd
    3     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
    4     root 20  0    0    0    0 S  0.0  0.0 0:00.15 ksoftirqd/0
    5     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
    6     root RT  0    0    0    0 S  0.0  0.0 0:10.01 watchdog/0
    7     root 20  0    0    0    0 S  0.0  0.0 0:05.01 events/0
    8     root 20  0    0    0    0 S  0.0  0.0 0:00.00 cgroup
    9     root 20  0    0    0    0 S  0.0  0.0 0:00.00 khelper
    10    root 20  0    0    0    0 S  0.0  0.0 0:00.00 netns
    11    root 20  0    0    0    0 S  0.0  0.0 0:00.00 async/mgr
    12    root 20  0    0    0    0 S  0.0  0.0 0:00.00 pm
    13    root 20  0    0    0    0 S  0.0  0.0 0:01.70 sync_supers
    14    root 20  0    0    0    0 S  0.0  0.0 0:00.63 bdi-default
    15    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kintegrityd/0
    16    root 20  0    0    0    0 S  0.0  0.0 0:02.52 kblockd/0
    17    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpid
    18    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpi_notify

    我们解释一下命令的输出。top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

    Linux pstree命令:查看进程树

    pstree 命令是以树形结构显示程序和进程之间的关系,此命令的基本格式如下:

    [root@localhost ~]# pstree [选项] [PID或用户名]

    表 1 罗列出了 pstree 命令常用选项以及各自的含义。

    表 1 pstree命令常用选项及含义
    选项含义
    -a显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
    -c不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
    -n根据进程 PID 号来排序输出,默认是以程序名排序输出的。
    -p显示进程的 PID。
    -u显示进程对应的用户名称。

    需要注意的是,在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。

    init 进程是系统启动的第一个进程,进程的 PID 是 1,也是系统中所有进程的父进程。

    【例 1】

    [root@1ocalhost ~]# pstree
    init──┬──abrc-dump-oopa
    ├──abrtd
    ├──acpid
    ...省略部分输出...
    ├──rayslogd───3*[{rsyslogrd}]
    #有3个rsyslogd进程存在
    ├──sshd───sshd───bash───pstree
    #Pstree命令进程是在远程连接中被执行的
    ├──udevd───2*[udevd]
    └──xinecd

    【例 2】如果想知道某个用户都启动了哪些进程,使用 pstree 命令可以很容易实现,以 mysql 用户为例:

    [root@1ocalhost ~]# pstree mysql
    mysqid---6*[{mysqid}]

    此输出结果显示了 mysql 用户对应的进程为 mysqid,并且 mysqid 进程拥有 5 个子进程(外加 1 个父进程,共计 6 个进程)。

    Linux lsof命令:列出进程调用或打开的文件信息

    我们知道,通过 ps 命令可以查询到系统中所有的进程,那么,是否可以进一步知道这个进程到底在调用哪些文件吗?当然可以,使用 lsof 命令即可。

    lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

    lsof 命令的基本格式如下:

    [root@localhost ~]# lsof [选项]

    此命令常用的选项及功能,如表 1 所示。

    表 1 lsof 命令常用选项及功能
    选项功能
    -c 字符串只列出以字符串开头的进程打开的文件。
    +d 目录名列出某个目录中所有被进程调用的文件。
    -u 用户名只列出某个用户的进程打开的文件。
    -p pid列出某个 PID 进程打开的文件。

    【例 1】

    [root@localhost ~]# lsof | more
    #查询系统中所有进程调用的文件
    COMMAND PID  USER  FD    TYPE  DEVICE  SIZE/OFF  NODE  NAME
    init               1      root    cwd  DIR    8,3       4096        2           /
    init               1      root    rtd    DIR    8,3       4096        2           /
    init               1      root    txt     REG   8,3       145180    130874 /sbin/init
    init               1      root    mem REG   8,3       142472    665291 /lib/ld-2.12.so
    init               1      root    mem REG   8,3       58704      655087 /lib/libnss_files-2.12.so
    …省略部分输出…

    这个命令的输出非常多。它会按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。

    【例 2】

    [root@localhost ~]# lsof /sbin/init
    #查询某个文件被哪个进程调用
    COMMAND PID USER  FD  TYPE  DEVICE  SIZE/OFF  NODE    NAME
    init               1     root    txt  REG   8,3      145180     130874   /sbin/init

    lsof 命令也可以反过来查询某个文件被哪个进程调用。这个例子就查询到 /sbin/init 文件是被 init 进程调用的。

    相关推荐:《Linux视频教程

    以上就是linux下查询进程的命令是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    广告:Linux视频教程零基础入门到精通

    专题推荐:linux 查询进程
    上一篇:linux进程的几种状态是什么 下一篇:linux下进入目录的命令是什么
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• Linux怎么查看端口是否启用• linux ppid是什么意思• linux的mount是什么意思• linux怎么查看程序是否在运行状态• linux中创建目录命令是什么• linux怎么查看当前内核版本是多少
    1/1

    PHP中文网