• 9.1 ps:查看进程


    ps命令


      用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片。如果想要动态地显示进程的信息,就需要使用top命令,该命令类似于把手机切换成录像模式。
    因为ps命令的功能实在是太多了,26个字母已经满足不了,因此在ps命令的参数中有类似于-a与a这2种写法,这2种写法的功能是不一样的。
    参数的格式具体如下。
      UNIX格式:一个“-”开头。
      BSD格式:没有“-”开头。
      GNU长格式:两个“-”开头。

    ps命令的参数选项及说明

    -a  显示所有终端下执行的进程
    a  显示与终端相关的所有进程,包含每个进程的完整路径
    x  显示与终端无关的所有进程
    u  显示进程的用户信息
    -u  显示指定用户相关的进程信息
    -e  显示所有进程
    -f   额外显示UID、PPID、C与STIME栏位
    f   显示进程树
    -H  显示进程树
    -l   以详细的格式来显示进程的状况
    -o  自定义输出指定的字段,以退号分隔
    -sot key key表示为指定字段排序,默认升序,+key升序,key降序

    ps命令不接任何参数

    [root@doit ~]# ps
    PID TTY TIME CMD
    9940 pts/0 00:00:00 bash
    25146 pts/0 00:00:00 ps
    
    其输出结果中的各项说明如下。
    PID是进程的标识号。
    TTY是进程所属的终端控制台。
    TIME列是进程所使用的总的CPU时间。
    CMD列是正在执行的命令行。
    

    ps命令常用操作组合(命令1)

    [root@doit ~]# ps -ef
    UID PID PPID C STIME TTY TIME CMD
    root 1 0 0 Apr22 ? 00:03:35 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root 2 0 0 Apr22 ? 00:00:00 [kthreadd]
    root 3 2 0 Apr22 ? 00:00:00 [rcu_gp]
    root 4 2 0 Apr22 ? 00:00:00 [rcu_par_gp]
    root 6 2 0 Apr22 ? 00:00:00 [kworker/0:0H-kb]
    root 8 2 0 Apr22 ? 00:00:00 [mm_percpu_wq]
    root 9 2 0 Apr22 ? 00:00:00 [ksoftirqd/0]
    root 10 2 0 Apr22 ? 00:01:28 [rcu_sched]
    root 11 2 0 Apr22 ? 00:00:03 [migration/0]
    root 13 2 0 Apr22 ? 00:00:00 [cpuhp/0]
    root 14 2 0 Apr22 ? 00:00:00 [cpuhp/1]
    root 15 2 0 Apr22 ? 00:00:02 [migration/1]
    root 16 2 0 Apr22 ? 00:00:05 [ksoftirqd/1]
    
    输出信息中各列的说明如下。
    UID:进程被该UID所拥有。
    PID:进程的标识号。
    PPID:进程的父进程的标识号。
    C:CPU使用的资源百分比。
    STIME:进程开始的时间。
    TTY:该进程是在哪个终端机上面运作,若与终端机无关,则显示“?”,另外,ttyl-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程。
    TIME:进程所使用的总的CPU时间。
    CMD:正在执行的命令行。
    下面是ps与grep的组合用法,用于查找特定进程,比如查找sshd进程等。
    [root@doit ~]# ps -ef|grep ssh
    root 3503 1 0 Apr22 ? 00:00:00 /usr/sbin/sshd -D
    root 9935 3503 0 17:04 ? 00:00:00 sshd: root@pts/0
    root 25345 9940 0 22:18 pts/0 00:00:00 grep --color=auto ssh
    

    ps命令常用操作组合(命令2)

    这里使用BSD语法格式显示每个进程信息。
    [root@doit ~]# ps aux # BSD格式参数,使用a选项和x选项显示所有进程,使用u选项显示进程的用户信息。
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.2 191024 5320 ? Ss Apr22 3:35 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root 2 0.0 0.0 0 0 ? S Apr22 0:00 [kthreadd]
    root 3 0.0 0.0 0 0 ? I< Apr22 0:00 [rcu_gp]
    root 4 0.0 0.0 0 0 ? I< Apr22 0:00 [rcu_par_gp]
    root 6 0.0 0.0 0 0 ? I< Apr22 0:00 [kworker/0:0H-kb]
    root 8 0.0 0.0 0 0 ? I< Apr22 0:00 [mm_percpu_wq]
    root 9 0.0 0.0 0 0 ? S Apr22 0:00 [ksoftirqd/0]
    root 10 0.0 0.0 0 0 ? I Apr22 1:28 [rcu_sched]
    root 11 0.0 0.0 0 0 ? S Apr22 0:03 [migration/0]
    root 13 0.0 0.0 0 0 ? S Apr22 0:00 [cpuhp/0]
    root 14 0.0 0.0 0 0 ? S Apr22 0:00 [cpuhp/1]
    root 15 0.0 0.0 0 0 ? S Apr22 0:02 [migration/1]
    root 16 0.0 0.0 0 0 ? S Apr22 0:05 [ksoftirqd/1]
    root 18 0.0 0.0 0 0 ? I< Apr22 0:00 [kworker/1:0H-kb]
    root 19 0.0 0.0 0 0 ? S Apr22 0:00 [kdevtmpfs]
    root 20 0.0 0.0 0 0 ? I< Apr22 0:00 [netns]
    root 21 0.0 0.0 0 0 ? S Apr22 0:00 [kauditd]
    root 22 0.0 0.0 0 0 ? S Apr22 0:00 [khungtaskd]
    root 23 0.0 0.0 0 0 ? S Apr22 0:00 [oom_reaper]
    
    输出信息中各列的说明如下。
    USER:该进程属于的用户。
    PID:该进程的进程号。
    %CPU:该进程使用掉的CPU资源百分比。
    %MEM:该进程所占用的物理内存百分比。
    VSZ:该进程使用掉的虚拟内存量(单位为Kbytes)。
    RSS:该进程占用的固定的内存量(单位为Kbytes)。
    TTY:该进程是在哪个终端机上面运作的,若与终端机无关,则显示“?”,另外,ttyl-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的
    进程。
    STAT:该进程目前的状态,主要的状态包括如下几种。
      R:正在运行,或者是可以运行。
      S:正在中断睡眠中,可以由某些信号(signal)唤醒。
    D:不可中断睡眠。
    T:正在侦测或者是停止了。
      Z:已经终止,但是其父进程无法正常终止它,从而变成zombie(僵尸)进程的状态。
    +:前台进程。
    l:多线程进程。
    N:低优先级进程。
    <:高优先级进程。
    s:进程领导者。
    L:已将页面锁定到内存中。
    START:该进程被触发启动的时间。
    TIME:该进程实际使用CPU运作的时间。
    COMMAND:该进程的实际命令。
    

    显示指定用户的相关进程信息。

    [root@cs6 ~]# ps -u root
    PID TTY TIME CMD
    1 ? 00:00:01 init
    2 ? 00:00:00 kthreadd
    3 ? 00:00:00 migration/0
    4 ? 00:00:00 ksoftirqd/0
    5 ? 00:00:00 stopper/0
    6 ? 00:00:00 watchdog/0
    7 ? 00:00:00 migration/1
    8 ? 00:00:00 stopper/1
    9 ? 00:00:00 ksoftirqd/1
    10 ? 00:00:00 watchdog/1
    
    [root@cs6 ~]# ps -l #<==UNIX格式参数,使用参数-l以详细的格式显示进程的状况。
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    4 S 0 1797 1793 0 80 0 - 27099 do_wai pts/1 00:00:00 bash
    4 R 0 1934 1797 2 80 0 - 27034 - pts/1 00:00:00 ps
    
    输出信息中各列的说明如下。
    F:代表这个进程的标志(flag),4代表使用者为super user。
    S:代表这个进程的状态(STAT),前面已经讲解过。
    UID:进程被该UID所拥有。
    PID:进程的标识号。
    PPID:父进程的ID。
    C:CPU使用的资源百分比。
    PRI:Priority(优先执行序)的缩写。
    NI:Nice值。
    ADDR:指出该进程在内存的哪个部分。如果是个running的进程,则一般是“-”。
    SZ:使用掉的内存大小。
    WCHAN:目前这个进程是否正在运作当中,若为“-”则表示正在运作。
    TTY:该进程是在哪个终端机上面运作的,若与终端机无关,则显示“?”,另外,ttyl-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程。
    TIME:该进程实际使用CPU运作的时间。
    CMD:该进程的实际命令。

    显示进程树

    [root@cs6 ~]# ps -eH
    PID TTY TIME CMD
    2 ? 00:00:00 kthreadd
    3 ? 00:00:00 migration/0
    4 ? 00:00:00 ksoftirqd/0
    5 ? 00:00:00 stopper/0
    
    [root@cs6 ~]# ps axf
    PID TTY STAT TIME COMMAND
    2 ? S 0:00 [kthreadd]
    3 ? S 0:00 _ [migration/0]
    4 ? S 0:00 _ [ksoftirqd/0]
    519 ? S<s 0:00 /sbin/udevd -d
    1481 ? S< 0:00 _ /sbin/udevd -d
    1482 ? S< 0:00 _ /sbin/udevd -d
    1268 ? S<sl 0:00 auditd
    1291 ? Sl 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
    1357 ? Ss 0:00 /usr/sbin/sshd
    1793 ? Ss 0:00 _ sshd: root@pts/1
    1797 pts/1 Ss 0:00 | _ -bash
    1938 pts/1 R+ 0:00 | _ ps axf
    1826 ? Ss 0:00 _ sshd: root@pts/0
    1830 pts/0 Ss+ 0:00 _ -bash
    1436 ? Ss 0:00 /usr/libexec/postfix/master
    1455 ? S 0:00 _ qmgr -l -t fifo -u
    1880 ? S 0:00 _ pickup -l -t fifo -u
    1448 ? Ss 0:01 crond

    输出指定的字段。

    (1)AIX格式:ps -eo "%p %y %x %c”
    语法说明:-e是显示所有进程,-o表示可以自定义输出指定的字段,以逗号分隔,其支持的字段见下面的代码。

    Image(8)

    (2)标准格式:ps-eo pid,user,args--sort pid

    其支持的字段比较多,请大家查询man ps并搜索 STANDARD FORMAT SPECIFIERS来了解。

    [root@cs6 ~]# ps -o pid,ppid,pgrp,session,tpgid,comm
    PID PPID PGRP SESS TPGID COMMAND
    1797 1793 1797 1797 1949 bash
    1949 1797 1949 1797 1949 ps

    查看进程并按vsz列从大到小排列,--sort vsz或--sort +vs2表示从小到大升序排列,--Sort
    -vsz表示从大到小降序排列。

    [root@cs6 ~]# ps -eo "%C : %p : %z : %a" --sort -vsz
    %CPU : PID : VSZ : COMMAND
    0.0 : 1291 : 255424 : /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
    0.0 : 1448 : 116880 : crond
    0.0 : 1797 : 108396 : -bash
    0.0 : 1830 : 108316 : -bash
    0.0 : 1951 : 108240 : ps -eo %C : %p : %z : %a --sort -vsz
    0.0 : 1793 : 102132 : sshd: root@pts/1
    0.0 : 1826 : 102132 : sshd: root@pts/0
    0.0 : 1455 : 81260 : qmgr -l -t fifo -u
    0.0 : 1880 : 81092 : pickup -l -t fifo -u
    0.0 : 1436 : 81012 : /usr/libexec/postfix/master
    0.0 : 1357 : 66288 : /usr/sbin/sshd
    0.0 : 1268 : 29764 : auditd
    0.0 : 1 : 19232 : /sbin/init
    0.0 : 1481 : 12376 : /sbin/udevd -d
    0.0 : 1482 : 12376 : /sbin/udevd -d
    0.0 : 519 : 11300 : /sbin/udevd -d
    0.0 : 1463 : 4060 : /sbin/mingetty /dev/tty1
    0.0 : 1465 : 4060 : /sbin/mingetty /dev/tty2
    0.0 : 1467 : 4060 : /sbin/mingetty /dev/tty3
    0.0 : 1469 : 4060 : /sbin/mingetty /dev/tty4
    0.0 : 1471 : 4060 : /sbin/mingetty /dev/tty5
    0.0 : 1473 : 4060 : /sbin/mingetty /dev/tty6

    查看某个进程在哪个CPU上运行:

    [root@cs6 ~]# ps -eo pid,args,psr
    PID COMMAND PSR
    1 /sbin/init 0
    2 [kthreadd] 0
    3 [migration/0] 0
    4 [ksoftirqd/0] 0
    5 [stopper/0] 0
    6 [watchdog/0] 0
    7 [migration/1] 1
    8 [stopper/1] 1
    9 [ksoftirqd/1] 1
    10 [watchdog/1] 1
    11 [events/0] 0
    12 [events/1] 1
    13 [events/0] 0
    14 [events/1] 1
    15 [events_long/0] 0
    16 [events_long/1] 1
  • 相关阅读:
    android AndroidManifest.xml package名
    java 空字条串空判断 效率
    ant
    android post 提交数据
    BI 商务智能软件 数据分析
    swfupdate flash上传工具
    log4j 使用方法
    java vc vb 项目结构
    时间单位
    iphone命令行编译xcodebuild
  • 原文地址:https://www.cnblogs.com/wenyule/p/12214054.html
Copyright © 2020-2023  润新知