每天一个linux命令:top、htop
更多精彩请关注:www.zicreate.com
1.top命令功能
top 命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。但是由于该工具界面很不友好,弄用好的人不多,一般只是用来简单看一下进程占用情况,本文只简单介绍下top的常用功能,重点介绍htop命令。
2.启动top
$ top
top - 15:54:51 up 25 days, 2:08, 1 user, load average: 7.21, 2.27, 0.99
Tasks: 177 total, 11 running, 165 sleeping, 0 stopped, 1 zombie
%Cpu(s): 1.2 us, 0.2 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 15994424 total, 10238564 free, 1489540 used, 4266320 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 13376548 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24963 root 20 0 7252 96 0 R 93.8 0.0 0:52.20 stress
24965 root 20 0 7252 96 0 R 93.8 0.0 0:52.52 stress
24966 root 20 0 7252 96 0 R 93.8 0.0 0:49.96 stress
24970 root 20 0 7252 96 0 R 93.8 0.0 0:51.72 stress
24967 root 20 0 7252 96 0 R 87.5 0.0 0:49.78 stress
24972 root 20 0 7252 96 0 R 81.2 0.0 0:49.42 stress
24971 root 20 0 7252 96 0 R 62.5 0.0 0:49.51 stress
24964 root 20 0 7252 96 0 R 56.2 0.0 0:51.85 stress
24968 root 20 0 7252 96 0 R 50.0 0.0 0:52.07 stress
24969 root 20 0 7252 96 0 R 50.0 0.0 0:49.41 stress
第一行:
top - 15:54:51 up 25 days, 2:08, 1 user, load average: 7.21, 2.27, 0.99
当前系统时间: 15:54:51
系统运行机时间:25 days, 2:08 (重启时会重置)
当前登录用户数量: 1
系统1分钟、5分钟、15分钟负载: 7.21, 2.27, 0.99 如果负荷数据大于当前系统 CPU线程数,说明系统负荷太重。
查看系统 CPU线程数的方法如下:
方法1:
$ lscpu | grep -E "^CPU\(s\)|Socket|Model name"
CPU(s): 64 CPU线程数
Socket(s): 2 CPU数量
Model name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
方法2:
$ cat /proc/cpuinfo | grep 'model name' | wc -l
64
第一行的信息也可以通过 w 或者 uptime 获取:
$ w
05:15:06 up 25 days, 7:19, 2 users, load average: 0.14, 0.15, 0.30
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 demo 19Dec17 2.00s 0.23s 0.06s w
$ uptime
05:15:12 up 25 days, 7:19, 2 users, load average: 0.21, 0.16, 0.31
第二行:
Tasks: 177 total, 11 running, 165 sleeping, 0 stopped, 1 zombie
系统现在共有177个进程,其中处于运行中的有11个,165个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有1个。
僵尸进程:僵尸进程是指的父进程先与子进程退出,子进程dead,但没有进程回收该进程的信息,就成为僵尸进程。僵尸进程在进程表 (processs table)中仍占了一个位置(slot),所以,虽然僵尸进程已经死亡,但是仍然占用了系统资源,如果系统中存在大量僵尸进行会影响系统性能。关于僵尸进程的详细说明见后期文章。
第三行:
%Cpu(s): 1.2 us, 0.2 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
1.2% us — 用户空间占用CPU的百分比。
0.2% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
98.6% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:
KiB Mem : 15994424 total, 10238564 free, 1489540 used, 4266320 buff/cache
15994424 total — 物理内存总量(16GB)
10238564 used — 使用中的内存总量(10GB)
1489540 free — 空闲内存总量(1.4GB)
4266320 buffers — 缓存的内存量 (4GB)
第五行:
KiB Swap: 0 total, 0 free, 0 used. 13376548 avail Mem
0 — 交换区总量
0 — 使用的交换区总量
0 — 空闲交换区总量
13376548 — 缓冲的交换区总量(13GB)
进程信息头
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比,如果出现 200% 这样的是因为有多核。
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
快捷键
按键盘数字“1”,可监控每个逻辑CPU的状况:
$ top
top - 04:42:29 up 16 days, 3:12, 3 users, load average: 0.05, 0.11, 0.18
Tasks: 348 total, 1 running, 346 sleeping, 0 stopped, 1 zombie
%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.3 us, 1.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
按‘q’ 键退出top。
掌握上面的基本top就够用了,要使用更多功能推荐htop。
3. htop
htop 数据界面非常美观,但是在本文中无法显示颜色之类的信息,大致框架如下所示:
$ htop
1 [|| 2.2%] 5 [|| 1.3%]
2 [|||| 5.1%] 6 [ 0.0%]
3 [||| 2.6%] 7 [ 0.0%]
4 [||| 1.4%] 8 [| 1.3%]
Mem[|||||||||||||||||| 2.18G/15.3G] Tasks: 63, 1270 thr; 1 running
Swp[ 0K/0K] Load average: 0.17 0.25 0.37
Uptime: 25 days, 03:10:24
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1 root 20 0 189M 5480 2720 S 0.0 0.0 0:08.84 /usr/lib/systemd/systemd --switched-root --system -
31143 root 20 0 125M 2256 956 S 0.0 0.0 0:01.86 ├─ SCREEN -dmS analysis
31144 root 20 0 112M 2272 1740 S 0.0 0.0 0:00.00 │ ├─ /bin/bash
30264 root 20 0 112M 2196 1692 S 0.0 0.0 0:00.00 │ ├─ /bin/bash
10787 root 20 0 746M 52344 11172 S 0.0 0.3 0:02.18 │ │ └─ python analysis.py
F1Help F2Setup F3SearchF4FilterF5SortedF6CollapF7Nice -F8Nice +F9Kill F10Quit
其实本文到这里已经差不多了,只要你会用 F1 键其他的都可以查看htop的帮助信息。剩下的大家多练习即可。
over.