• ps命令介绍及常用操作和参数说明


    目录

    ps

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

    linux上进程的五种状态

    进程的几种标识状态码

    命令参数列表

    常用的几种使用参数组合列举和说明

    ps(不加参数执行)

    ps -ef

    ps -l

    ps  -aux

    ps查看pid、进程启动时间、启动时长、cmd等


    ps

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

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

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

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

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

    linux上进程的五种状态

    运行】:正在运行或在运行队列中等待

    中断】:休眠中, 受阻, 在等待某个条件的形成或接受到信号

    【不可中断】:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

    【僵死】:进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放

    【停止】:进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行

    进程的几种标识状态码

    D 不可中断 uninterruptible sleep (usually IO)

    R 运行 runnable (on run queue)

    S 中断 sleeping

    T 停止 traced or stopped

    Z 僵死 a defunct (”zombie”) process

    命令参数列表

    1. a 显示所有进程
    2. -a 显示同一终端下的所有程序
    3. -A 显示所有进程
    4. c 显示进程的真实名称
    5. -N 反向选择
    6. -e 等于“-A”
    7. e 显示环境变量
    8. f 显示程序间的关系
    9. -H 显示树状结构
    10. r 显示当前终端的进程
    11. T 显示当前终端的所有程序
    12. u 指定用户的所有进程
    13. -au 显示较详细的资讯
    14. -aux 显示所有包含其他使用者的行程
    15. -C<命令> 列出指定命令的状况
    16. –lines<行数> 每页显示的行数
    17. –width<字符数> 每页显示的字符数
    18. help 显示帮助信息
    19. –version 显示版本显示

    常用的几种使用参数组合列举和说明

    ps(不加参数执行)

    这是一个基本的 ps 使用。在控制台中执行这个命令并查看结果。

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

    1. PID: 运行着的命令(CMD)的进程编号
    2. TTY: 命令所运行的位置(终端)
    3. TIME: 运行着的该命令所占用的CPU处理时间
    4. CMD: 该进程所运行的命令

    ps -ef

    ps -ef查询结果(显示所有进程信息,连同命令行):

    1. # ps -ef
    2. UID          PID    PPID  C STIME TTY          TIME CMD
    3. root           1       0  0 8月16 ?       02:28:29 /sbin/init
    4. root           2       0  0 8月16 ?       00:00:12 [kthreadd]
    5. root           3       2  0 8月16 ?       00:00:00 [rcu_gp]
    6. root           4       2  0 8月16 ?       00:00:00 [rcu_par_gp]
    7. root           5       2  0 8月16 ?       00:00:00 [slub_flushwq]
    8. root           6       2  0 8月16 ?       00:00:00 [netns]
    9. root           8       2  0 8月16 ?       00:00:00 [kworker/0:0H-kblockd]
    10. root          10       2  0 8月16 ?       00:00:00 [mm_percpu_wq]
    11. root          11       2  0 8月16 ?       00:00:00 [rcu_tasks_rude_]
    12. root          12       2  0 8月16 ?       00:00:00 [rcu_tasks_trace]

    列字段说明

    1. UID:用户ID,即进程的拥有者
    2. PID:进程ID
    3. PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
    4. C:cpu的占用率,形式是百分数(%)
    5. STIME:进程开始启动时间
    6. TTY:终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
    7. TIME:进程的执行时间
    8. CMD:该进程的名称或对应的路径

    ps -l

    1. F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    2. 0 S  1000 1928831 1928830  0  80   0 -  2094 -      pts/1    00:00:00 bash
    3. 0 R  1000 2026688 1928831  0  80   0 -  2476 -      pts/1    00:00:00 ps

    列字段说明

    1. F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
    2. S 代表这个程序的状态 (STAT)
    3. UID 程序被该 UID 所拥有
    4. PID 就是这个程序的 ID
    5. PPID 则是其上级父程序的ID
    6. C CPU 使用的资源百分比
    7. PRI 是 Priority (优先执行序) 的缩写
    8. NI 这个是 Nice 值
    9. ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-“
    10. SZ 使用掉的内存大小
    11. WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
    12. TTY 登入者的终端机位置
    13. TIME 使用掉的 CPU 时间
    14. CMD 所下达的指令
    15. 在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID ,使用 ps -l 的时候,只有三个 PID。

    ps  -aux

    ps  -aux结果

    1. USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    2. root           1  0.3  0.0 167516 10264 ?        Ss   8月16 148:38 /sbin/init
    3. root           2  0.0  0.0      0     0 ?        S    8月16   0:12 [kthreadd]
    4. root           3  0.0  0.0      0     0 ?        I<   8月16   0:00 [rcu_gp]
    5. root           4  0.0  0.0      0     0 ?        I<   8月16   0:00 [rcu_par_gp]
    6. root           5  0.0  0.0      0     0 ?        I<   8月16   0:00 [slub_flushwq]
    7. root           6  0.0  0.0      0     0 ?        I<   8月16   0:00 [netns]
    8. root           8  0.0  0.0      0     0 ?        I<   8月16   0:00 [kworker/0:0H-kblockd]
    9. root          10  0.0  0.0      0     0 ?        I<   8月16   0:00 [mm_percpu_wq]
    10. root          11  0.0  0.0      0     0 ?        S    8月16   0:00 [rcu_tasks_rude_]
    11. root          12  0.0  0.0      0     0 ?        S    8月16   0:00 [rcu_tasks_trace]

    列字段说明:

    1. USER:该 process 属于哪个使用者账号的
    2. PID :该 process 的号码
    3. %CPU:该 process 使用掉的 CPU 资源百分比
    4. %MEM:该 process 所占用的物理内存百分比
    5. VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
    6. RSS :该 process 占用的固定的内存量 (Kbytes)
    7. TTY :该 process 是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    8. STAT:该程序目前的状态,主要的状态有
    9. R :该程序目前正在运作,或者是可被运作
    10. S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
    11. T :该程序目前正在侦测或者是停止了
    12. Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    13. START:该 process 被触发启动的时间
    14. TIME :该 process 实际使用 CPU 运作的时间
    15. COMMAND:该程序的实际指令

    ps查看pid、进程启动时间、启动时长、cmd等

    1. # ps -eo pid,ppid,etime,lstart,cmd | grep docker
    2. 1116981 3777001    06:07:42 Wed Sep 13 08:46:33 2023 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8081 -container-ip 172.17.0.3 -container-port 8080
    3. 1117010 3777001    06:07:42 Wed Sep 13 08:46:33 2023 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8081 -container-ip 172.17.0.3 -container-port 8080
    4. 2061086 3777001       29:40 Wed Sep 13 14:24:35 2023 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
    5. 2061115 3777001       29:40 Wed Sep 13 14:24:35 2023 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8080 -container-ip 172.17.0.2 -container-port 8080

    ppid:父进程id

    lstart:进程启动时间

    etime:启动时长

  • 相关阅读:
    华企盾的面试流程,华企盾招聘流程
    固态继电器的用途概述
    密码学入门——环游密码世界
    第1节 JUC介绍
    MyBatis基础之结果集映射
    MinGW 32bit构建Curl with Openssl流程
    服务器配置Java开发环境(五)之安装redis
    springBoot 的默认线程池-ThreadPoolTaskExecutor
    《微信小程序开发从入门到实战》学习二十
    【环境】Ubuntu20.04 安装 Anaconda 顺顺利利
  • 原文地址:https://blog.csdn.net/HYZX_9987/article/details/133029912