ps 命令:进程管理和监控
侧边栏壁纸
  • 累计撰写 146 篇文章
  • 累计收到 2 条评论

ps 命令:进程管理和监控

soulio
2024-09-24 / 0 评论 / 7 阅读 / 正在检测是否收录...

一、命令简介

ps​(process status)命令是Linux和Unix系统中用于查看当前系统上运行的进程的命令。它提供了关于进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、用户、CPU使用情况、内存使用情况、命令名等。

二、命令参数

下面是一些ps​命令的常用选项及其含义:

  • -A​:显示所有进程。
  • -a​:显示除会话前导进程外的所有进程。
  • -u​:按照用户过滤进程。
  • -x​:显示没有控制终端的进程。
  • -e​:显示所有进程,等同于-A​。
  • -f​:完整格式列表。
  • -j​:工作控制的格式。
  • -H​:显示进程的层次结构(树状图)。
  • -o​:自定义输出格式。

ps​命令是一个功能强大的工具,可以通过不同的选项组合来满足各种查询需求。当需要更复杂的进程信息或排序时,通常与grep​、awk​等命令结合使用。

三、命令示例

  1. 显示所有进程的完整列表:

    命令

    ps -ef
    

    输出

    UID          PID    PPID  C STIME TTY          TIME CMD
    root           1       0  0 9月20 ?       00:00:03 /sbin/init
    root           2       0  0 9月20 ?       00:00:00 [kthreadd]
    root           3       2  0 9月20 ?       00:00:00 [rcu_gp]
    ...
    
  2. 显示所有进程的详细列表,包括无控制终端的进程:

    命令

    ps aux
    

    输出

    USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root           1  0.0  0.5 166460 11880 ?        Ss   9月20   0:03 /sbin/init
    root           2  0.0  0.0      0     0 ?        S    9月20   0:00 [kthreadd]
    root           3  0.0  0.0      0     0 ?        I<   9月20   0:00 [rcu_gp]
    ...
    
  3. 显示当前用户的所有进程:

    命令

    ps -u $USER
    

    输出

        PID TTY          TIME CMD
       9349 ?        00:00:00 systemd
       9350 ?        00:00:00 (sd-pam)
       9434 ?        00:00:00 sshd
       9435 pts/0    00:00:00 bash
       9447 pts/0    00:00:00 ps
    
  4. 显示特定用户的所有进程:

    ps -u soulio -f
    

    输出

    UID          PID    PPID  C STIME TTY          TIME CMD
    soulio      9349       1  0 21:26 ?        00:00:00 /lib/systemd/systemd --user
    soulio      9350    9349  0 21:26 ?        00:00:00 (sd-pam)
    soulio      9434    9346  0 21:26 ?        00:00:00 sshd: soulio@pts/0
    soulio      9435    9434  0 21:26 pts/0    00:00:00 -bash
    soulio      9452    9435  0 21:30 pts/0    00:00:00 ps -u soulio -f
    
  5. 显示所有进程的树形结构:

    ps -ejH
    

    输出

        PID    PGID     SID TTY          TIME CMD
          2       0       0 ?        00:00:00 kthreadd
          3       0       0 ?        00:00:00   rcu_gp
          4       0       0 ?        00:00:00   rcu_par_gp
          5       0       0 ?        00:00:00   slub_flushwq
    
  6. 显示进程的 CPU 和内存使用情况,并按 CPU 使用率降序排序:

    ps -eo pid,%cpu,%mem,cmd --sort=-%cpu
    

    输出

        PID %CPU %MEM CMD
        622  0.1  2.3 /usr/bin/containerd
        760  0.1  4.2 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
          1  0.0  0.5 /sbin/init
          2  0.0  0.0 [kthreadd]
          3  0.0  0.0 [rcu_gp]
    
  7. 显示进程的详细属性,包括线程:

    ps -o pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
    

    输出

        PID     TID CLS RTPRIO  NI PRI PSR %CPU STAT WCHAN          COMMAND
       9435    9435 TS       -   0  19   1  0.0 Ss   do_wait        bash
       9456    9456 TS       -   0  19   0  0.0 R+   -              ps
    
  8. 显示进程的累计执行时间:

    ps -eo pid,comm,etime
    

    输出

        PID COMMAND             ELAPSED
          1 systemd          3-03:29:03
          2 kthreadd         3-03:29:03
          3 rcu_gp           3-03:29:03
    
  9. 显示特定进程 ID 的进程信息:

    格式

    ps -p PID -f
    

    命令

    ps -p 1 -f
    

    输出

    UID          PID    PPID  C STIME TTY          TIME CMD
    root           1       0  0 9月20 ?       00:00:03 /sbin/init
    
  10. 自定义输出格式,显示进程 ID、父进程 ID、命令、内存使用百分比和 CPU 使用率:

    ps -eo pid,ppid,cmd,%mem,%cpu
    

    输出

        PID    PPID CMD                         %MEM %CPU
          1       0 /sbin/init                   0.5  0.0
          2       0 [kthreadd]                   0.0  0.0
          3       2 [rcu_gp]                     0.0  0.0
          4       2 [rcu_par_gp]                 0.0  0.0
    
  11. 查找特定进程名,并显示相关信息:

    格式

    ps -ef | grep process_name
    

    命令

    ps -ef | grep nginx
    

    输出

    root         675       1  0 9月20 ?       00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
    www-data     676     675  0 9月20 ?       00:00:00 nginx: worker process
    www-data     677     675  0 9月20 ?       00:00:00 nginx: worker process
    soulio      9545    9435  0 21:58 pts/0    00:00:00 grep --color=auto nginx
    
  12. 显示进程及其环境变量:

    进程的环境变量是指进程在执行时所能访问的一组键值对,这些变量可以影响程序的运行方式。环境变量常用于传递配置信息,如文件路径、用户信息、语言设置等。

    格式

    cat /proc/<PID>/environ | tr '\0' '\n'
    

    命令

    cat /proc/1/environ | tr '\0' '\n'
    

    输出

    HOME=/
    init=/sbin/init
    NETWORK_SKIP_ENSLAVED=
    TERM=linux
    BOOT_IMAGE=/boot/vmlinuz-5.15.0-122-generic
    drop_caps=
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    rootmnt=/root
    
  13. 显示进程的虚拟内存大小、物理内存大小,单位KB:

    ps -o pid,vsize,rss
    

    输出

        PID    VSZ   RSS
       9663  13684  4732
       9664  10724  4460
       9856  13176  1588
    
  14. 显示进程的命令行参数:

    ps -eo pid,args
    

    输出

      PID COMMAND
    10229 ps -eo pid,args
    49310 node server
    94943 -bash (bash)
    
  15. 用户使用内存的情况

    ps -eo user,rss | grep $USER | awk '{total +=$2} END {print total}'
    

    输出

    304720
    

这些示例展示了 ps​ 命令的多样性和它在进程监控和管理中的实用性。通过组合不同的选项,可以获取特定情境下所需的进程信息。

本文共 617 个字数,平均阅读时长 ≈ 2分钟
0

海报

正在生成.....

评论 (0)

取消