• 进程管理工具htop/glances/dstat的使用


    进程管理工具htop/glances/dstat的使用

    Linux中进程的相关知识

    1、什么是进程呢?

    通俗的来说进程是运行起来的程序。唯一标示进程的是进程描述符(PID)。

    2、进程的分类

    1)根据在linux不同模式下运行分为:

    核心态:这类进程运行在内核模式下,执行一些内核指令(Ring 0)。

    用户态:这类进程工作在用户模式下,执行用户指令(Ring 3)。

    如果用户态的进程要执行一些核心态的指令,此时就会产生系统调用,系统调用会请求内核指令完成相关的请求,就执行的结果返回给用户态进程。

    2)按照进程的状态可分为:

    运行态:running 正在运行的进程

    可中断睡眠态:进程处于睡眠状态,但是可以被中断

    不可中断的睡眠态:进程处于睡眠状态,但是不可以被中断

    停止态:stoped 不会被内核调度

    僵死态:zombie产生的原因是进程结束后,它的父进程没有wait它,所导致的。

    3)按照操作的密集程度

    CPU密集型:进程在运行时,占用CPU时间较多的进程。

    I/O密集型:进程在运行时,占用I/O时间较多的进程。

    通常情况下,I/O密集型的优先级要高于CPU密集型。

    4)按照进程的处理方式

    批处理进程:

    交互式进程:

    实时进程:

    3、进程的优先级

    进程的有优先级,是用0-139数字来表示的,数字优先级从小到大依次是:0-99,139-100。

    优先级分为2类:

    实时优先级:0-99,是由内核维护的

    静态优先级:100-139,可以使用nice来调整,nice值的取值范围是[-20,19),分别对应100到139。nice默认值是0。

    动态优先级:由内核动态维护,动态调整。

    进程管理工具htop/glances/dstat的使用

    通用状态显示

    # R 进程以什么用户身份运行

    # PID 进程描述符 具有唯一性

    # %CPU 进程运行时所占的cpu百分比

    # %MEM 进程运行时内存所占的百分比

    # VSZ Virtual memory SiZe 虚拟内存使用大小

    # RSS 常驻内存集,所有不能被置换出去的内存集

    # STAT 表示内存状态

    # 常用的状态有:

    # S:可中段睡眠状态

    # R:运行态

    # D:不可中断睡眠态

    # T:停止态

    # Z:僵尸态

    # s:session leader 所谓进程的领导者

    # +:表示是前台进程

    # l:多线程进程

    # N:低优先级进程

    # <:高优先级进程

    # TTY 用来表示终端 显示为"?"的说明是与终端无关的进程

    # START 进程开始时间

    # TIME 进程运行时间

    # COMMAND 执行进程的命令 如果命令被 "[]"包围,说明是内核线程

    htop

    htop是linux进程中的一个互动的进程查看器,一个文本模式的应用程序。与linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主体,可横向或纵向浏览进程列表,并支持鼠标操作。

    Htop界面:在界面下可以支持鼠标操作

    上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间,下面就是进程实时状况。

    下面是 F1~F10 的功能和对应的字母快捷键。

    Shortcut Key

    Function Key

    Description

    中文说明

    h, ?

    F1

    Invoke htop Help

    查看htop使用说明

    S

    F2

    Htop Setup Menu

    htop 设定

    /

    F3

    Search for a Process

    搜索进程

    F4

    Incremental process filtering

    增量进程过滤器

    t

    F5

    Tree View

    显示树形结构

    <, >

    F6

    Sort by a column

    选择排序方式

    [

    F7

    Nice - (change priority)

    可减少nice值,这样就可以提高对应进程的优先级

    ]

    F8

    Nice + (change priority)

    可增加nice值,这样就可以降低对应进程的优先级

    k

    F9

    Kill a Process

    可对进程传递信号

    q

    F10

    Quit htop

    结束htop

    命令行选项(COMMAND-LINE OPTIONS

    -C --no-color        使用一个单色的配色方案

    -d --delay=DELAY     设置延迟更新时间,单位秒

    -h --help           显示htop 命令帮助信息

    -u --user=USERNAME    只显示一个给定的用户的过程

    -p --pid=PID,PID…       只显示给定的PIDs

    -s --sort-key COLUMN     依此列来排序

    -v –version          显示版本信息

    交互式命令(INTERACTIVE COMMANDS

    上下键或PgUP, PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程;

    Space    标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

    U    取消标记所有进程

    s    选择某一进程,按s:strace追踪进程的系统调用

    l    显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件

    I    倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然

    +, -    When in tree view mode, expand or collapse subtree. When a subtree is collapsed a "+" sign shows to the left of the process name.

    a (在有多处理器的机器上)    设置 CPU affinity: 标记一个进程允许使用哪些CPU

    u    显示特定用户进程

       Memory 使用排序

    P    CPU 使用排序

       Time+ 使用排序

    F    跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。

    K    显示/隐藏内核线程

       显示/隐藏用户线程

    Ctrl-L    刷新

    Numbers    PID 查找: 输入PID,光标将移动到相应的进程上

    Htop使用:

    F1或者点击鼠标F1那,帮助

    F2设置文档:

    F3进程

    鼠标点击Search 或者按下F3 或者输入"/"输入进程名进行搜索,例如搜索ssh

    按下F4,进入过滤器,相当于关键字搜索,不区分大小写,例如过滤dev

    输入"t"或按下F5,显示树形结构,意思跟pstree 差不多,能看到所有程序树状执行的结构,这对于系统管理来说相当方便,理清程序是如何产生的,当然树状结构的浏览也可以依照其他数据来排序。

    按下F6 就可以选择依照什么来排序,最常排序的内容就是cpu吧!

    F7F8分别对应nice-nice+F9对应kill给进程发信号,选好信号回车就OK

     显示某个用户的进程,在左侧选择用户

    输入"u",在左侧选择用户

    也许你用惯了top,我们也可以用top来打开htop。可以使用命令别名来修改。

    glances:

    glances:另一款进程状态监视工具,支持远程查看。

    glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]

    -b:以bye为单位显示网卡数据传输单位。

    -d:关闭磁盘IO速率显示

    -f /path/to/somefile:设置输出文件及其格式(网页数据或excel数据)

    -o:输出指定格式

    -m:禁用mount模块(挂载)

    -n:禁用网络模块

    -t #:指定刷新时间间隔,默认3/s

    -1(数字):每个CPU的数据单独显示

    交互式:有许多交互式命令来定义glances的显示信息,以及排序方式等;

    h:显示交互式命令帮助

    服务模式:

    glances -s -B IPADDR

    IPADDR:自己监听的本机地址

    客户端模式:

    glances -c IPADDR

    IPADDR:远程服务器监听的地址

    启动状态

    交互式命令:

    h 查看交互式帮助命令

    常用快捷键:

    h : 显示帮助信息

    q : 离开程序退出

    c :按照 CPU 实时负载对系统进程进行排序

    m :按照内存使用状况对系统进程排序

    i:按照 I/O 使用状况对系统进程排序

    p: 按照进程名称排序

    d : 显示关闭磁盘读写状况

    w : 删除日志文件

    l :显示日志

    s: 显示传感器信息

    f : 显示系统信息

    1 :轮流显示每个 CPU 内核的使用情况(次选项仅仅使用在多核 CPU 系统)

    glances的高级应用

    glances的高级应用让 glances 输出 HTML 格式文件,然后在远程端查看

    需要启动HTML应用需要安装python-jinja2组件

    yum -y install python-jinja2

    显示我已经安装了。将文件保存到/var/www/html文件下,(需要安装nginx组件然后启动)

    在浏览器下输入

    本地相应的会运行glances命令

     

    glances的高级应用让 glances 输出 HTML 格式文件

    本机没有安装查看组件,无法查看,可以复制到windows下查看

    glances 服务器 / 客户端工作方式

    glances 支持服务器/客户端工作方式,可以实现远程监控。首先假设

    服务器 IP 地址:10.0.2.14

    客户端 IP 地址:10.0.2.15

    确保二者都已经安装好 glances 软件包。

    首先在服务器端启动;

    指定客户端IP链接,不是指定的IP无法链接上去。

    然后在另一台启动

    显示连接成功。

     

    绿色表示性能良好,无需做任何额外工作;(此时 CPU 使用率、磁盘空间使用率和内存使用率低于 50%,系统负载低于 0.7)。

    蓝色表示系统性能有一些小问题,用户应当开始关注系统性能;(此时 CPU 使用率、磁盘空间使用率和内存使用率在 50%-70% 之间,系统负载在 0.7-1 之间)。

    品红表示性能报警,应当采取措施比如备份数据;(此时 CPU 使用率、磁盘空间使用率和内存使用率在 70%-90% 之间,,系统负载在 1-5 之间)。

    红色表示性能问题严重,可能宕机;(此时 CPU 使用率、磁盘空间使用率和内存使用率在大于 90%,系统负载大于 5)。

    Dstat

    dstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。直接使用dstat,默认使用的是-cdngy参数,分别显示cpu、disk、net、page、system信息,默认是1秒钟显示一条信息。可以在最后指定显示一条信息的时间间隔,如dstat 5是每5s显示一条,dstat 5 10表示每5s显示一条,一共显示10条后自动退出。

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

    dstat 1 3 :每个一秒钟刷新一次,显示3行自动退出

    -c:cpu

    -d:硬盘

    -D:指定显示哪块硬盘

    -g:页面统计数据

    -i:中断

    -l:负载

    -m:内存

    -n:网卡

    -p:进程的统计数据

    -r:IO统计数据

    -s:swap统计数据

    -t:时间

    -y:上下文切换时间

    --aio:显示异步IO统计数据

    --ipc:ipc相关的信息

    --raw:裸套接字 raw socket

    --tcp:tcp

    --udp:udp

    --socket:(tcp,udp,raw)的数据

    --unix

    --top-cpu:最占用cpu的进程

    --top-bio:显示最占用block(块) IO的进程

    --top-mem:显示最耗费内存的进程

    --top-io:最占用IO的进程

    如想监控swap,process,sockets,并显示监控的时间:

    若要将结果输出到文件可以加--output filename

    这样生成的csv文件可以用excel打开,然后生成图表。

    通过dstat --list可以查看dstat能使用的所有参数,其中上面internal是dstat本身自带的一些监控参数,下面/usr/share/dstat中是dstat的插件,这些插件可以扩展dstat的功能,如可以监控电源(battery)、mysql等。

    下面这些插件并不是都可以直接使用的,有的还依赖其他包,如想监控mysql,必须要装python连接mysql的一些包。

    如我们可以看下当前最消耗IO的进程和最消耗块设备IO的进程可以执行如下命令:

    这里使用了dstat的插件,更多功能有待进一步挖掘。

    参考http://www.ibm.com/developerworks/cn/linux/1304_caoyq_glances/

  • 相关阅读:
    【JAVA、C++】LeetCode 005 Longest Palindromic Substring
    【JAVA、C++】LeetCode 004 Median of Two Sorted Arrays
    【JAVA、C++】LeetCode 003 Longest Substring Without Repeating Characters
    【JAVA、C++】LeetCode 002 Add Two Numbers
    【JAVA、C++】LeetCode 001 Two Sum
    Linux的文件管理
    Ubuntu及Windows ADB设备no permissions的解决方案
    4-[多进程]-互斥锁、Queue队列、生产者消费者
    3 [多进程]-开启多进程
    2-[多进程]-进程理论
  • 原文地址:https://www.cnblogs.com/cishi/p/4132094.html
Copyright © 2020-2023  润新知