htop

 htop工具使用详解 

 特点:top 的增强版,支持图形界面的鼠标操作,可以横向或者纵向浏览进程列表,杀死进程时不需要输入进程编号

  安装:通过yum install -y htop

[root@iZ28qzns9m4Z ~]# yum install htop
Loaded plugins: langpacks
base                                               | 3.6 kB     00:00     
epel                                               | 4.3 kB     00:00     
extras                                             | 3.4 kB     00:00     
updates                                            | 3.4 kB     00:00     
(1/3): epel/x86_64/updateinfo                        | 362 kB   00:00     
(2/3): epel/x86_64/primary_db                        | 3.5 MB   00:00     
(3/3): updates/7/x86_64/primary_db                   | 4.0 MB   00:01     
Package htop-1.0.3-3.el7.x86_64 already installed and latest version
Nothing to do
[root@iZ28qzns9m4Z ~]#

wKiom1YPXmDi6-OxAA6IBUzNBjo848.jpg



















F1帮助 

F2设定

1.Meters

设定顶端的 显示信息,分为左右两侧,Left column 表示左侧的显示的信息,Right column表示右侧显示的信息,如果要新加选项,可以选择Available meters添加,F5新增到上方左侧,F6新增到上方右侧。Left column和Right column下面的选项,可以选定信息的显示方式,有LED、Bar(进度条)、Text(文本模式),可以根据个人喜好进行设置

wKiom1YPZDnBu-W6AAFzgarO5UQ850.jpg2. Display options

Linux htop工具使用详解选择要显示的内容,按空格 x表示显示,选择完后,按F10保存

wKioL1YPZH7w3dYxAAICVsrXi_o460.jpg

wKiom1YPZG_wJjy2AARPGNJxHdw751.jpg

3.Colors

Linux htop工具使用详解设定界面以什么颜色来显示,个人认为用处不大,各人喜好不同,假如我们选择Black on White后显示效果如下

wKioL1YPZR_TwoweAACht2twmZ4341.jpg

4.Colums

作用是增加或取消要显示的各项内容,选择后F7(向上移动)、F8(向下移动)、F9(取消显示、F10(保存更改))此处增加了PPID、PGRP,根据各人需求,显示那些信息

wKiom1YPZUKBQgpZAAFPfX-_qEg678.jpg

wKioL1YPZVKBUetmAAWD9Jmpo3U935.jpg

 

F3搜索

wKiom1YPYwHzuJnBAAKFWbSqwGQ950.jpg 

F4增量进程过滤器

wKioL1YPZdrDPd1_AAEfMLZTU98716.jpg

F5显示树状结构

wKioL1YPZpGgyYS1AAhZ86DUU8c156.jpg

F6选择排序方式

wKioL1YPZqPhwI67AAUexVuEU6U367.jpg

F7 可减少nice值提高对应进程的优先级 数值越小越重要,优先级越高

wKioL1YPZr2ytb_XAAEbxqt33_U100.jpg

F8可增加nice值,降低对应进程的优先级 

wKiom1YPZsXyvR49AAJSMIVonb4766.jpg

F9可对进程传递信号 杀死进程

F10结束 

htop常用交互式命令:

u: 过滤仅显示选定用户的进程;

s: 跟踪选定的进程所发起的系统调用;

l: 显示选定进程所打开的文件;

t: 显示进程的层次结构;

a: 设定进程的cpu亲缘性;(将选定的进程绑定在指定的CPU上)

 选项:

-d #: 延迟时长

-u USERNAME: 仅显示指定用户的进程;

-s COLUMN: 根据指定的字段进行排序;

vmstat :

 是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况,相比top,可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率

wKiom1YPaAGAYjCMAAEXT4XY7BI740.jpg

  用法:vmsate [delay [count]]  

[root@iZ28qzns9m4Z ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 291464 173488 319600    0    0     0     1   14   24  0  0 100  0  0
 0  0      0 291488 173488 319600    0    0     0     0  467  247  1  0 99  0  0
 0  0      0 291488 173488 319600    0    0     0     8  479  243  0  1 100  0  0
 0  0      0 291552 173488 319600    0    0     0     0  506  257  0  0 100  0  0
 0  0      0 291556 173488 319600    0    0     0     0  446  248  0  0 100  0  0

注:2为执行频率为2秒一次,5为一共执行5次 

 procs:

r: 等待运行的进程的个数;(队列长度)

b:处理不可中断睡眠状态的进程的个数;(即IO阻塞队列长度)  

  memory:

swpd: 交换内存使用量;

free: 空间的物理内存量;

buffer: 用于buffer的内存总量;

cache: 用于cache的内存总量;  

  swap:

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

so: 数据离开swap的速率(kb/s)  

  io

bi: 从块设备读入数据到系统的速率(kb/s)

bo: 保存数据至块设备的速率(kb/s)  

  system

in: 中断速率

cs: 进程切换的速率  

  cpu 

us:用户CPU时间,us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。 

sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id:空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用   率,sy是系统CPU使用率。

wa:等待IO CPU时间。

选项:

  -s:显示内存的状态统计数据

[root@iZ28qzns9m4Z ~]# vmstat -s
      1016656 K total memory
       725196 K used memory
       365492 K active memory
       195836 K inactive memory
       291460 K free memory
       173488 K buffer memory
       319596 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
       110198 non-nice user cpu ticks
          587 nice user cpu ticks
       113672 system cpu ticks
    161711582 idle cpu ticks
        11229 IO-wait cpu ticks
           39 IRQ cpu ticks
         5372 softirq cpu ticks
       196502 stolen cpu ticks
       227801 pages paged in
      1315272 pages paged out
            0 pages swapped in
            0 pages swapped out
    794969704 interrupts
    382508916 CPU context switches
   1442223029 boot time
        83643 forks
[root@iZ28qzns9m4Z ~]#

glances 

glances 是一款用于 Linux、BSD 的开源命令行系统监视工具,它使用 Python 语言开发,能够监视 CPU、负载、内存、磁盘 I/O、网络流量、文件系统、系统温度等信息

安装:

[root@iZ28qzns9m4Z ~]# cat /etc/yum.repos.d/epel.repo 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
http://mirrors.aliyuncs.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

glances: 

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


常用选项:

 -b: 以Byte/s为单位显示网卡设备数据交换速率;

 -B @IP|host :绑定服务器端 IP 地址或者主机名称

 -c @IP|host:连接 glances 服务器端

 -C file:设置配置文件默认是 /etc/glances/glances.conf 

 -d:关闭磁盘 I/O 模块

 -e:显示传感器温度

 -f file:设置输出文件(格式是 HTML 或者 CSV)

 -m:关闭挂载的磁盘模块

 -n:关闭网络模块

 -p PORT:设置运行端口默认是 61209 

 -P password:设置客户端 / 服务器密码

 -s:设置 glances 运行模式为服务器

 -t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767 

 -h : 显示帮助信息

 -v : 显示版本信息。

 -o {HTML|CSV}:

 -r: 关闭进程列表功能模块

 -1:单独显示每颗CPU相关负载数据信息;

wKioL1YPeQbA0aJmAAn3mr8vAeY546.jpg

交互命令:

 h : 显示帮助信息

 q : 离开程序退出

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

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

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

 p: 按照进程名称排序

 d : 显示磁盘读写状况 

 w : 删除日志文件

 l :显示日志

 s: 显示传感器信息

 f : 显示系统信息

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

wKiom1YPdobxHClFAAZfA8HCa40874.jpgglances支持远程模式:

即可以以C/S模式工作:

  Server: 以监听模式启动glances;

  Client: 以远程模式启动glances,远程连入指定服务器,并Server上的相关性能数据;

①安装pip-python  

wget --no-check-certificate   下载程序包 
tar zxvf pip-1.4.1.tar.gz  
cd pip-1.4.1/
python setup.py install
pip install -U Markdown
yum install lm_sensors 安装监控主板程序包
pip install Jinja2 
glances -o HTML -f /var/www/html
glances -o CSV -f /home/cjh/glances.csv 输出为csv 格式
libreoffice --calc %U /tmp/glances.csv

wKiom1YPeV6C38M7AAMf7YBw8J8832.jpg

服务模式:

glances -s -B IPADDR

  -B: 用于指明监听的本地地址;

  客户端模式:

glances -c IPADDR

  -c: 用于连入的服务器的地址;

dstat:

 dstat: 整合了vmstat, iostat, netstat and ifstat四款工具的功能;

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

-c: 显示cpu性能指标相关的统计数据;

-d: 显示disk相关的速率数据;

-g: 显示page相关的速率数据;

-i: 显示interrupt相关的速率数据;

-l: 显示load average相关的统计数据;

-m: 显示memory相关的统计数据;

-n: 显示网络收发数据的速率;

-p: 显示进程相关的统计数据,

-r: io请求的速率;

-s: 显示swap的相关数据

-y: 显示系统相关的数据,包括中断和进程切换;

--top-cpu:显示最占用CPU的进程;

--top-bio:显示最消耗block io的进程;

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

--top-mem:显示最占用内存的进程;

--ipc: 显示进程间通信相关的速率数据;

--raw: 显示raw套接的相关的数据;

--tcp: 显示tcp套接字的相关数据;

--udp: 显示udp套接字的相关数据;

--unix: 显示unix sock接口相关的统计数据;

--socket: 显示网络接口统计数据

-a: -cdngy

想输出一个csv格式的文件用于以后,可以通过下面的命令

dstat –output /tmp/sampleoutput.csv -cdn

wKiom1YPfSvTDugjAAO-aCgSPG4315.jpg

kill以及 killall

signal: 传递给进程的短小信息

    Linux主机支持的进程间可用到的信息:

    (1) kill -l

    (2) man 7 signal  

    向进程发信号:

        kill [-SIGNAL] PID 

        默认的信号为SIGTERM;

        

        信号表示方式:

        (1) 完整名称,例如SIGINT

        (2) 简写名称,例如INT

        (3) 数据代称,例如2

        常用信号:

        SIGHUP: 1, 通知进程重读其配置文件以让新的配置生效,但不用重新启动进程;

        SIGINT:2, 打断正在运行中的进程,相当于键盘组合键Ctrl+c

        SIGKILL:9, 强行中止正在运行中的进程

        SIGTERM: 15, 安全中止正在运行中的进程

        SIGSTOP: 19, 暂停进程

        SIGCONT: 18, 继续运行指定进程

kill相似的一组进程:

    killall [-SIGNAL] PROGRAM

[root@iZ28qzns9m4Z pip-1.4.1]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Sep14 ?        00:00:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 Sep14 ?        00:00:00 [kthreadd]
root       330     1  0 Sep14 ?        00:00:04 /usr/lib/systemd/systemd-journald
root       342     1  0 Sep14 ?        00:00:00 /usr/sbin/lvmetad -f
root       348     1  0 Sep14 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       424     1  0 Sep14 ?        00:00:01 /usr/sbin/rsyslogd -n
root       426     1  0 Sep14 ?        00:00:11 /usr/lib/systemd/systemd-logind
dbus       427     1  0 Sep14 ?        00:00:22 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
nscd       429     1  0 Sep14 ?        00:00:03 /usr/sbin/nscd
root       444     1  0 Sep14 ?        00:00:04 /usr/sbin/crond -n
root       459     1  0 Sep14 tty1     00:00:00 /sbin/agetty --noclear tty1
ntp        466     1  0 Sep14 ?        00:00:10 /usr/sbin/ntpd -u ntp:ntp -g
root       512     1  0 Sep14 ?        00:00:00 /sbin/iprupdate --daemon
root       515     1  0 Sep14 ?        00:00:00 /sbin/iprinit --daemon
root       534     1  0 Sep14 ?        00:00:00 /sbin/iprdump --daemon
root       643     1  0 Sep14 ?        00:12:08 /usr/local/aegis/aegis_update/AliYunDunUpdate
root       890     1  0 Sep14 ?        00:00:00 /usr/sbin/gshelld
root       943     1  0 Sep14 ?        00:33:30 /usr/local/aegis/aegis_client/aegis_00_79/AliYunDun
root       961     1  0 Sep14 ?        00:32:43 /usr/local/aegis/alihids/AliHids
root      2972     1  0 Sep18 ?        00:00:37 /usr/sbin/httpd -DFOREGROUND
apache   11291  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11292  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11293  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11294  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     18579 21752  0 09:55 ?        00:00:00 sshd: root@pts/0
root     18581 18579  0 09:55 pts/0    00:00:00 -bash
root     18687     2  0 11:10 ?        00:00:00 [kworker/0:2]
root     18858     2  0 14:01 ?        00:00:00 [kworker/0:1]
apache   18869  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18870  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18871  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18872  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18876  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18992  2972  0 14:29 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     19018     2  0 15:00 ?        00:00:00 [kworker/0:0]
root     19039 18581  0 15:03 pts/0    00:00:00 ps -ef
root     21752     1  0 Sep20 ?        00:00:00 /usr/sbin/sshd -D
root     32457     2  0 Sep17 ?        00:00:00 [kworker/0:1H]
[root@iZ28qzns9m4Z pip-1.4.1]# killall httpd
[root@iZ28qzns9m4Z pip-1.4.1]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Sep14 ?        00:00:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root       261     2  0 Sep14 ?        00:00:00 [ext4-dio-unwrit]
root       330     1  0 Sep14 ?        00:00:04 /usr/lib/systemd/systemd-journald
root       342     1  0 Sep14 ?        00:00:00 /usr/sbin/lvmetad -f
root       348     1  0 Sep14 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       424     1  0 Sep14 ?        00:00:01 /usr/sbin/rsyslogd -n
root       426     1  0 Sep14 ?        00:00:11 /usr/lib/systemd/systemd-logind
dbus       427     1  0 Sep14 ?        00:00:22 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
nscd       429     1  0 Sep14 ?        00:00:03 /usr/sbin/nscd
root       444     1  0 Sep14 ?        00:00:04 /usr/sbin/crond -n
root       459     1  0 Sep14 tty1     00:00:00 /sbin/agetty --noclear tty1
ntp        466     1  0 Sep14 ?        00:00:10 /usr/sbin/ntpd -u ntp:ntp -g
root       512     1  0 Sep14 ?        00:00:00 /sbin/iprupdate --daemon
root       515     1  0 Sep14 ?        00:00:00 /sbin/iprinit --daemon
root       534     1  0 Sep14 ?        00:00:00 /sbin/iprdump --daemon
root       643     1  0 Sep14 ?        00:12:08 /usr/local/aegis/aegis_update/AliYunDunUpdate
root       890     1  0 Sep14 ?        00:00:00 /usr/sbin/gshelld
root       943     1  0 Sep14 ?        00:33:31 /usr/local/aegis/aegis_client/aegis_00_79/AliYunDun
root       961     1  0 Sep14 ?        00:32:43 /usr/local/aegis/alihids/AliHids
root     18579 21752  0 09:55 ?        00:00:00 sshd: root@pts/0
root     18581 18579  0 09:55 pts/0    00:00:00 -bash
root     18687     2  0 11:10 ?        00:00:00 [kworker/0:2]
root     18858     2  0 14:01 ?        00:00:00 [kworker/0:1]
root     19018     2  0 15:00 ?        00:00:00 [kworker/0:0]
root     19047 18581  0 15:04 pts/0    00:00:00 ps -ef
root     21752     1  0 Sep20 ?        00:00:00 /usr/sbin/sshd -D
root     32457     2  0 Sep17 ?        00:00:00 [kworker/0:1H]
[root@iZ28qzns9m4Z pip-1.4.1]#

前台作业:通过终端启动,并且在停止之前也会一直占据终端;

后台作业:作业启动之时与终端无关,或者是在前台启动,但启动后转为与终端无关模式运行;

1、对于已经启动并处于运行中的作业:Ctrl+z

注意: 作业被送往后台后,默认处于stopped状态;

2、对于尚未启动的作业: COMMAND &

注意: 此两类方式相关作业,仍然与终端相关;这意味着,终端终止,将会导致与此终端相关的所有作业被终止;

剥离进程与终端的关系:

# nohup COMMAND &

作业控制命令:

  fg [[%]job_num]:把指定的作业调回前台;

  bg [[%]job_num]:把调往后台的指定的作业启动起来,让其后台默默运行;但此作业必须支持运行    于后台;

  kill [%job_num]:终止指定的作业;  

进程优先级调整:

静态优先级:

通过指定进程的nice值来调整其优先级;用户 空间运行的进程一般都有其nice值;

nice值: -20, 19

优先级:  100, 139

默认启动进程时,其nice值为0, 其优先级为120;

(1) 对于尚未启动的进程:

# nice -n N COMMAND

(2) 对于已经启动并处于运行中的进程:

# renice -n N PID 

注意:普通用户默认只能调低优先级即仅能够调大nice,;

[root@iZ28qzns9m4Z ~]# top &
[1] 959
[root@iZ28qzns9m4Z ~]# jobs
[1]+  Stopped                 top
[root@iZ28qzns9m4Z ~]# glances &
[2] 969
[root@iZ28qzns9m4Z ~]# jobs
[1]-  Stopped                 top
[2]+  Stopped                 glances
[root@iZ28qzns9m4Z ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 852348  11224  80356    0    0   529    14  522  307  1  1 91  3  4
[root@iZ28qzns9m4Z ~]# ^C
[root@iZ28qzns9m4Z ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 852292  11224  80388    0    0   519    14  521  306  1  1 92  2  4
[root@iZ28qzns9m4Z ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 852508  11224  80388    0    0   502    14  515  304  1  1 92  2  4
^Z
[3]+  Stopped                 vmstat 2
[root@iZ28qzns9m4Z ~]# jobs
[1]   Stopped                 top
[2]-  Stopped                 glances
[3]+  Stopped                 vmstat 2

Welcome to aliyun Elastic Compute Service! #重启终端后台作业消失

[root@iZ28qzns9m4Z ~]# jobs
[root@iZ28qzns9m4Z ~]# 
[root@iZ28qzns9m4Z ~]# vi aaa

[2]+  Stopped                 vi aaa
[root@iZ28qzns9m4Z ~]# job
-bash: job: command not found
[root@iZ28qzns9m4Z ~]# jobs
[1]-  Stopped                 glances
[2]+  Stopped                 vi aaa
[root@iZ28qzns9m4Z ~]# fg %1
glances
[root@iZ28qzns9m4Z ~]# glances &
[3] 1067
[root@iZ28qzns9m4Z ~]# jobs
[2]-  Stopped                 vi aaa
[3]+  Stopped                 glances
[root@iZ28qzns9m4Z ~]# bg 2
[2]- vi aaa &
[root@iZ28qzns9m4Z ~]# jobs
[2]+  Stopped                 vi aaa
[3]-  Stopped                 glances
[root@iZ28qzns9m4Z ~]#