linux基础命令之进程的查看

查看系统上正在运行的进程,可以利用静态的 ps 或者是动态的 top;静态即截取某一时刻的状态,动态即处于持续检测进程运行的状态。

1、静态的ps

ps:将某个时间点的进程运行情况选取下来;

[root @www ~]# ps aux  <==查看系统所有的进程数据

[root @www ~]# ps -lA  <==也是能够查看所有系统的数据

[root @www ~]# ps axjf  <==连同部分进程树状态

参数:

-A:所有的进程均显示出来,与 -e 具有同样的作用;

-a:不与 terminal 有关的所有进程;

-u:有效用户(effective user)相关的进程;

x :通常与 a 这个参数一起用,可列出比较完整的信息。

输出格式规划:

l :较长、较详细地将该 PID 的信息列出。

j :工作的格式(jobs format);

-f:做一个更为完整的输出;

1.1仅查看自己的 bash 相关进程:ps -l

范例一:将目前属于你自己这次登录的 PID 与相关信息列出来

biaoshuai@biaoshuai-virtual-machine:~/apue/server-client$ ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000   2698   2693  0  80   0 -  7526 wait   pts/2    00:00:00 bash
0 T  1000   3465   2698  0  80   0 - 76933 signal pts/2    00:00:00 vi
4 R  1000   7101   2698  0  80   0 -  8996 -      pts/2    00:00:00 ps
  • 系统整体的进程运行时非常多的,但如果使用 ps -l 则仅列出与你的操作环境有关的进程而已,即最上层的父进程会是你自己的 bash 而没有扩展到 init 这个进程去,那么 ps -l 显示出来的数据有哪些呢?

        F:代表这个进程标志,说明这个进程的权限:

            4(表示此进程的权限为root)

            1(表示此子进程仅可进行复制而无法实际执行)。

        S:代表这个进程的状态,主要状态有:

            R(该进程正在运行中);

            S(睡眠状态,但可以被唤醒);

            D(不可被唤醒的睡眠状态,通常这个进程可能在等待 I/O 的情况);

            T(停止状态,可能是在工作控制或除错状态);

            Z(“僵尸”状态,进程已终止但无法被删除至内存外);

        UID/PID/PPID:代表此进程被该 UID 所拥有/进程的 PID 号码/此进程的父进程PID号码。

        C:代表 CPU 的使用率,单位为百分比。

        PRI/NI:Priority/Nice 的缩写,代表此进程被 CPU 所执行的优先级,数值越小代表该进程越快被 CPU 执行。

        ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该进程在内存的哪个部分,如果是个 running 的

        进程,一般就会显示“-”。SZ 代表此进程用掉多少内存/WCHAN表示目前进程是否运行中,同样,若为“-”表示正在

        运行中。

        TTY:登陆者的终端机位置,若为远程登录则使用动态终端接口(pts/n)。

        TIME:使用掉的 CPU 时间,注意,是此进程实际花费 CPU 运行的时间,而不是系统时间。

        CMD:就是command 的缩写,造成此程序的触发进程的命令为何。

  • 所以你看到的 ps -l 输出信息中,它说明的是bash 的程序属于 UID 为0 的用户,状态为睡眠,之所以为睡眠因为它触发了 ps 之故。此进程的 PID 为13639,优先执行顺序为 75,执行 bash 所取得的终端接口为 pts/1,运行状态为等待。

1.2查看系统所有进程:ps aux

范例二:列出目前所有的正在内存当中的进程:

biaoshuai@biaoshuai-virtual-machine:~/apue/server-client$ ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 185200  3528 ?        Ss   10:07   0:03 /sbin/init spl
root          2  0.0  0.0      0     0 ?        S    10:07   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   10:07   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S<   10:07   0:00 [mm_percpu_wq]
root          7  0.0  0.0      0     0 ?        S    10:07   0:00 [ksoftirqd/0]

....
  • 你会发现 ps -l 与 ps aux 显示的项目并不相同!在 ps aux 显示的项目中,各字段的意义为:

        USER:该进程属于哪个用户账户;

        PID:该进程的进程标识符;

        %CPU:该进程用掉的 CPU 资源百分比;

        %MEM:该进程所占用的物理内存百分比;

        VSZ:该进程使用掉的虚拟内存量;

        RSS:该进程占用的固定的内存量;

        TTY:该进程是在哪个终端机上面运行,若与终端机无关则显示 ‘?’另外,tty1-tty6 是本机上面的登录者程序,若为         pst/0 等的,则表示为由网络连接进主机的进程;

        STAT:该进程目前的状态,状态显示与 ps -l 的 S 标识相同;

        START:该进程被触发启动的时间;

        TIME:该进程实际使用 CPU 运行的时间;

        COMMAND:该进程的实际命令。

上面提到的僵尸进程是什么呢?通常,造成僵尸进程的成因是因为该进程应该已经执行完毕,或者是因故应该要终止了,但是该进程的父进程却无法完成将该进程结束掉,而造成那个进程一直存在内存当中。

当系统不稳定的时候就容易造成所谓的僵尸进程,可能是因为程序写得不好,或者是用户的操作习惯不良等所造成的。

2、top:动态查看进程的变化

    相对于 ps 是选取一个时间点的进程状态,top 则可以持续检测进程运行的状态。使用方式如下:

[root @www ~]# top [-d 数字] | top [-bnp]

参数:

-d:后面可以接秒数,就是整个进程界面更新的秒数。默认是 5 秒。

-b:以批次的方式执行 top,还有更多的参数可以使用。通常会搭配数据流重定向来将批处理的结果输出成为文件。

-n:与 -b 搭配,意义是,需要进行几次 top 的输出结果。

-p:指定某些个 PID 来进行查看监测而已。

在 top 执行过程中,可以使用的按键命令:

        ?:显示在 top 当中可以输入的按键命令;

        P:以CPU 的使用资源排序显示;

        M:以内存的使用资源排序显示;

        N:以 PID 来排序;

        T:由该进程使用的 CPU 时间积累排序;

        k:给予某个 PID 一个信号;

        r:给予某个 PID 重新制定一个 nice 值;

        q:离开 top 软件的按键。

其实top 的功能巨多,可用按键也非常多。可以参考 man top 的内部说明文件。

范例一:每两秒更新一次 top ,查看整体信息:

biaoshuai@biaoshuai-virtual-machine:~/apue/server-client$ top -d 2

top - 15:10:48 up  3:50,  1 user,  load average: 0.12, 0.06, 0.01
Tasks: 232 total,   1 running, 229 sleeping,   1 stopped,   1 zombie
%Cpu(s):  5.1 us,  3.6 sy,  0.0 ni, 89.5 id,  1.5 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :   985888 total,    76132 free,   671320 used,   238436 buff/cache
KiB Swap:  1046524 total,   414972 free,   631552 used.    98548 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
  1061 root      20   0  492588  24976  12496 S   6.5  2.5   0:34.60 Xorg       
  2693 biaoshu+  20   0  617896  17492  11548 S   4.5  1.8   0:07.32 gnome-ter+
  2255 biaoshu+  20   0 1383812  33316  19512 S   4.0  3.4   0:50.44 compiz     

显示的内容依序是:

第一行:

  • 目前的开机时间,即是
  • 开机到目前索所经过的时间
  • 已登录系统的用户人数,亦即 1user 选项;
  • 系统在 1,5,15 分钟的平均工作负载

第二行: 显示的是目前进程的总量与个别进程在什么状态。比较需要注意的是zombie 那个数值,如果不是 0,好好看看哪个 process 变成僵尸了吧。

第三行:显示的是 CPU 的整体负载,每个选项可使用 ? 查阅。需要特别注意的是 %wa,那个选项代表的是 I/Owait, 通常你的系统变慢都是 I/O 产生的问题比较大!

第四行和第五行:表示目前的物理内存与虚拟内存的使用情况。

第六行:这个是当在 top 进程当中输入命令时显示状态的地方。

至于top下半部分的界面,则是每个进程使用的资源情况。

PID:每个进程的ID;

USER:该进程所属用户

PR:Priority的简写,进程的优先持续顺序,越小越早被持行。

NI:nice的缩写,与priority有关,也是越小越早被执行;

%CPU:CPU的使用率

%MEM:内存的使用率

TIME+:CPU使用时间的累加。

top默认使用 CPU 使用率(%CPU)作为排序的重点,如果你想要使用内存使用率排序,则可以按下“M”,若要恢复则按下“P”即可;

范例二:将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt

biaoshuai@biaoshuai-virtual-machine:~$ top -b -n 2 > /tmp/top.txt
一般来说,如果想要找出最损耗 CPU 资源的那个进程,大多使用的就是top 这个程序。

猜你喜欢

转载自blog.csdn.net/godop/article/details/80341407