2018-5-28进程工具命令管理

  我们回顾一下所讲述的内容,在Linux的内核的功能中,进程管理是一个在内核中基本的功能,而在进程管理中,最重要的功能就是进程调度,之所以有进程调度是因为在多任务的操作系统上,进程数是要多于CPU的核心数的,所以只能将进程轮流运行在CPU上,将CPU的运行划分成多个时间片,以时间片为单位去轮流运行进程,不过这样一来导致运行没有运行完就会被其它进程替换,为了保证被替换时能够保留当前一刻状态,所以被替换时要进行保护现场,目的为了是当又轮到该进程时,可以进行恢复现场,将该进程的状态信息能够进行还原,那么保存现场的进程的状态信息被放置在CPU的寄存器上,等待再次进行调度,将寄存器所保存的进程状态信息进行还原。而每一个进程都保留在task struct任务结构列表当中所描述的数据结构。内核为了能够追踪每个任务,它靠诸多的task struct,因此诸多的task struct形成了任务列表task list

回顾:Linux OS的基础概念、进程查看等工具;
    
    内核的功能:进程管理(进程调度)
        进程调度:保存现场,恢复现场;
            task struct:任务结构;
            task list:任务列表;

一、Linux进程及作业管理(2)

1.1 htop命令

htop是一个top的升级版,拥有更多的功能以及更加友好的方式对用户进行显示,使用起来也非常的方便,但是这需要额外安装,该软件在epel源中。如果没有epel源的话,则需要添加。

# yum info htop
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
Name        : htop
Arch        : x86_64
Version     : 2.1.0
Release     : 1.el7
Size        : 102 k
Repo        : aliyun-epel
Summary     : Interactive process viewer
URL         : http://hisham.hm/htop/
License     : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
            : top(1).

看的出来属于epel源,我们进行安装。

# yum -y install htop

安装完成之后,我们直接输入htop命令。

# htop

微信截图_20180528150753.png

  作为程序包来讲,CentOS系统不允许由两个远程终端使用同一个yum命令,因为在安装时,必须保证程序包的一致性和完整性。
  对于htop而言,是可以支持鼠标操作的,如果点击HELP的话,就会出现以下帮助界面。

微信截图_20180528152532.png

  那么该命令的选项为:

    选项:
        -d #:指定延迟时间间隔;
        -u UserName:仅显示指定用户的进程;
        -s COLUME:以指定字段进行排序;
        
    子命令:
        l:显示选定的进程打开的文件列表;
        s:跟踪选定的进程的系统调用;
        t:以层级关系显示各进程状态;
        a:将选定的进程绑定至某指定的CPU核心;

1.2 vmstat命令

  vmstat命令是统计并报告虚拟的内存数据的,默认显示一行数据,delay和count就是指定每隔多长时间显示多少次,而后自动退出,那么对于该命令的格式为:

    vmstat [options] [delay [count]]

  例如:delay每隔3秒钟count显示3次。

# vmstat 3 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 434820   2084 375648    0    0    46    10   89  263  1  1 98  0  0
 0  0      0 434820   2084 375680    0    0     0     1   83   85  0  0 100  0  0
 0  0      0 434572   2084 375680    0    0     0     0  100   94  0  1 98  0  0

  对于以上的字段来说,我们来一一进行解释并且理解与读懂,第一个就是procs,该字段为processes的简写。

    procs:
        r:等待运行的进程的个数;CPU上等待运行的任务队列长度;
        b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;

  那么第二列为显示memory信息,在内存段中的一下的解释信息为:

    memory:
        swpd:交换内存使用总量;
        free:空闲的物理内存总量;
        buffer:用于buffer的内存总量;
        cache:用于cache的内存总量;

  第三列为swap列信息,为交换分区的速率信息,表示每秒钟多少个,在这里取出的为平均值,在这一段中的解释信息具体如下:

    swap:
        si:数据进入swap中的数据速率(kb/s);
        so:数据离开swap的速率(kb/s);

  第四列为io信息,在这个字段下有bi和bo,解释信息如下:

    io:
        bi:从块设备读入数据到系统的速度(kb/s);
        bo:保存到数据至块设备的速率(kb/s);

  第五列为system,为系统的某些处理操作,当用户模式转换为内核模式时,也是会发生中断的,只不过系统调用是通过软中断的方式来决定的,包含的信息分别为:

    system:
        in:interrupts,中断速率;
        cs:context switch,上下文切换的速率;

  最后一列为CPU的信息,在这个信息中字段很多,那么这些字段分别解释为:

    cpu:
        us:user space
        sy:system
        id:idle
        wa:wait
        st:stolen

  该命令的选项为:

    选项:
        -s:显示内存统计数据;

1.3 pmap命令

  pmap命令用起来并不复杂,用来显示及报告内存的进程映射表,进程映射表就是任何一个进程所使用的内存空间看上去是连续的,但这些内存页会被放置在不连续的物理内存空间中,那么该命令就是显示内存信息。

  那么该命令的使用格式为:

    pmap [options] PID [PID ...]
        -x:显示详细格式的信息;
        
    另一种查看方式:cat /proc/PID/maps

1.4 glances命令

  glannes命令也是最近出现的一款管理进程的工具,由Python语言发言其功能非常强大的命令,而且支持C/S架构模式,远程查看。
微信截图_20180528191316.png

  对于该命令来讲,有许多的内建子命令,但可以省略,而使用选项也很多,我们简单的介绍一些常用选项来举例说明。

    内建命令:
        使用h键来进行获取;
        
    常用选项:
        -b:以bytes为单位显示网上速率;
        -d:关闭磁盘I/O模块;
        -m:关闭mount模块;
        -n:关闭network模块;
        -t#:刷新时间间隔;
        -l:每个CPU的相关数据单独显示;
        --export-csv FILENAME.csv:输出格式;
        -f /PATH/TO/SOMEDIR:设定输出文件的位置;

  接下来我们使用C/S模式下运行glances。那么说明由客户端远程连接服务端,在服务模式中指明选项为-s-B,后面跟上其IP地址,而IP地址的指向就是本机的某地址,其作用用于监听。

C/S模式下运行glances命令:
    服务模式:
        glances -s -B IPADDR
        
        IPADDR:本机的某地址,用于监听;

  而客户端模式我们使用-c选项,后面跟上服务端的IP地址。

    客户端模式:
        glances -c IPADDR
        
        IPADDR:远程服务器地址;

1.5 dstat命令

  dstat命令也是新晋出现的一款工具,而且已经收入到base源中,该命令的功能非常强大,它是一种非常精巧的查看系统使用率的一款命令工具,这款工具几乎柔和了我们之前所学到那几款命令工具的功能,那么该命令的使用格式为:

    dstat [-afv] [options...] [delay [count]]

默认输入dstat命令的界面为:

微信截图_20180528203623.png

  当我们不给任何选项时,默认的选项为-cdngy,那么我们总结一下其常用选项:

    常用选项:
        -c, --cpu:显示CPU相关的信息;
            -c #,#,...,total
        -d, --disk:显示磁盘相关的信息;
            -D sda,sdb,...total
        -g:显示page相关的信息;
        -m:Memory的相关统计数据;
        -n:Interface的相关统计数据;
        -p:显示process的相关统计数据;
        -r:显示io 请求的相关统计数据;
        -s:显示swapped的相关统计数据;
        
        --tcp:
        --udp:
        --raw:
        --socket:
        
        --ipc:
        
        --top-cpu:显示最占用CPU的进程;
        --top-io:最占用io的进程;
        --top-men:最占用内存的进程;
        --top-lantency:延迟最大的进程;

1.6 kill命令

  kill命令顾名思义,就是杀死,其实真正的意义为向进程发送信号的,也可终止某一个进程。

kill命令:
    kill - terminate a process
    
    用于向进程发送信号,以实现对进程的管理;

  我们可以使用-l选项来显示当前系统上可用的信号类型,需要注意的是,只有管理员才有权限能够kill掉进程。

    显示当前系统可用信号:
        kill -l [signal]
        
        每个信号的标识方法有三种:
            (1) 信号的数字标识;
            (2) 信号的完整名称;
            (3) 信号的简要名称;

  那么我们向进程发送信号,可以使用-s选项,也可以不使用就可以直接跟上其可用数字信号就可以。

    向进程发送信号:
        kill [-s signal|-SIGNAL] pid...

  在平时的操作中,我们常用的信号有:

    常用信号:
        1) SIGHUP:无须关闭进程而让其重读配置文件;
        2) SIGINT:终止正在运行的进程,相当于Ctrl+c;
        9) SIGKILL:杀死运行中的进程;
        15) SIGTERM:终止运行中的进程;
        18) SIGOUT:
        19) SIGSTOP:

1.7 killall命令

  当有许多进程一一处理很麻烦时,需要斩草除根时,必要时杀人灭口是非常关键的一个手段,正所谓好人做到低,使用killall命令可以做到这一点,该命令的用法也很容易理解。与kill命令不同是,killall命令是根据进程名直接杀死进程,而不用指定PID

killall命令:
    killall [-SINGAL] program


猜你喜欢

转载自blog.51cto.com/tianxie/2121405
今日推荐