zoukankan      html  css  js  c++  java
  • 进程管理工具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/

  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/cishi/p/4132094.html
Copyright © 2011-2022 走看看