1、top

top - 21:16:58 up 16 min,  4 users,  load average: 0.17, 0.08, 0.06

时间 / uptime / 用户数 / 负载:1分钟 5分钟 15分钟(每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。)   
Tasks:  68 total,   1 running,  67 sleeping,   0 stopped,   0 zombie

任务:总数 / 运行数 / 休眠 / 停止 / 僵尸    
%Cpu(s): 0.3 us,  0.0 sy, 0.0 ni, 99.7 id,   0.0 wa,  0.0 hi,  0.0 si,  0.0 st

cpu(按1 显示所有cpu信息)/ 用户空间 / 内核空间 / 由于nice改变过优先级的进程 / 空闲cpu / IO等待 / 硬中断 /  软中断

%st(Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比    
KiB Mem :  1883740 total,  1676912 free,    57412 used,   149416 buff/cache

物理内存总量 / 空闲内存总量 / 使用中内存总量 / 缓存的内存量    
KiB Swap:        0 total,        0 free,        0 used.  1678004 avail Mem

交换区总量 / 空闲 / 使用中 / 缓存

如果出于习惯去计算可用内存数,这里有个近似的计算公式:free + buffers + cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 

进程id /  进程所有者 /  进程优先级 / nice值  -高优先级 +低优先级 / 进程使用的虚拟内存总量 /  进程使用的, 未被换出的物理内存大小  RES=CODE + DATA /

共享内存大小 / 进程状态(D不可中断的睡眠状态 R 运行 S 睡眠 T 跟踪/停止 Z 僵尸进程)/ cpu占用 / 物理内存 / 总计cpu时间 1/100s/  进程名称    
        

命令格式:
top [-] [d] [p] [q] [c] [C] [S]    [n]
参数说明:
d:  指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p:  通过指定监控进程ID来仅仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S: 指定累计模式
s : 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i:  使top不显示任何闲置或者僵死进程。
c:  显示整个命令行而不只是显示命令名
在top命令的显示窗口,我们还可以输入以下字母,进行一些交互:
Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
l,t,m     Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info      
0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode      
f,F,X     Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width
L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right     
R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify      
c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify      
x,y     . Toggle highlights: 'x' sort field; 'y' running tasks      
z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')      
u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria      
n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)      
C,...   . Toggle scroll coordinates msg for: up,down,left,right,home,end
k,r       Manipulate tasks: 'k' kill; 'r' renice     
d or s    Set update interval      
W,Y       Write configuration file 'W'; Inspect other output 'Y'      
q         Quit ( commands shown with '.' require a visible task display window )      Press 'h' or '?' for help with Windows,

# dstat  查看cpu信息

[root@ali-cs ~]# dstat -c   
 ----total-cpu-usage----    
 usr sys idl wai hiq siq    
  0   0  99   0   0   0    
  0   0 100   0   0   0    
  0   0 100   0   0   0    
  0   0 100   0   0   0    
  0   1  99   0   0   0    
  0   0 100   0   0   0    
  0   0  99   1   0   0

{

linux 关闭普通用户

  1. 先用“who”命令查询当前登录的用户

  2. 然后用“ps -u 用户名”命令查看该用户的pid

  3. 再使用“kill pid”命令,杀掉他的sshd或者是shell进程

修改sshd_config

  • 打开/etc/ssh/sshd_config

  • 添加或修改:

    • ClientAliveInterval 120

    • ClientAliveCountMax 0

  • 重启生效

    • service sshd restart

}

2、iostat

# iostat -help   
 Usage: iostat [ options ] [ <interval> [ <count> ] ]    
 Options are:    
 [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]    
 [ -j { ID | LABEL | PATH | UUID | ... } ]    
 [ [ -T ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]    
 [ <device> [...] | ALL ]
avg-cpu:  %user   %nice %system %iowait  %steal   %idle   
                     0.24    0.00    0.14           0.15       0.00       99.47

cpu相关,具体与top相似

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util   
 vda               0.01         0.11    0.85    0.38    18.72     2.38    34.36     0.02   14.27   13.69   15.58   1.50   0.18    
 vdb               0.00         0.00    0.04    0.00     0.25     0.29    29.86     0.00    0.57    0.40   11.75   0.42   0.00

设备 /每秒有多少读请求被merge了  /每秒有多少写请求被merge了  /每秒读请求数 /每秒写请求数 /每秒读入的数据量/每秒写入的数据量 /请求的平均大小(扇区) /请求的平均队列长度  /I/O请求平均执行时间,包括发送请求和执行的时间(毫秒)/平均执行时间(毫秒) /占用cpu时间的百分比 显示带宽利用率

              Blk_read
  读入块的当总数.

              Blk_wrtn
  写入块的总数.

              kB_read/s
  每秒从驱动器读入的数据量,单位为K.

              kB_wrtn/s
  每秒向驱动器写入的数据量,单位为K.

              kB_read
  读入的数据总量,单位为K.

              kB_wrtn
  写入的数据总量,单位为K.

              rrqm/s
  将读入请求合并后,每秒发送到设备的读入请求数.

              wrqm/s
  将写入请求合并后,每秒发送到设备的写入请求数.

              r/s
  每秒发送到设备的读入请求数.

              w/s
  每秒发送到设备的写入请求数.

              rsec/s
  每秒从设备读入的扇区数.

              wsec/s
  每秒向设备写入的扇区数.

              rkB/s
  每秒从设备读入的数据量,单位为K.

              wkB/s
  每秒向设备写入的数据量,单位为K.

              avgrq-sz
  发送到设备的请求的平均大小,单位是扇区.

              avgqu-sz
  发送到设备的请求的平均队列长度.

              await
  I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.

              svctm
  发送到设备的I/O请求的平均执行时间.单位是毫秒.

              %util
  在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
  当这个值接近100%时,表示设备带宽已经占满.

3.vmstat(VirtualMeomoryStatistics,虚拟内存统计)

Usage: vmstat [options] [delay [count]]
Options: 
-a, --active           active/inactive memory 
-f, --forks            number of forks since boot/显示自开机以来forks的总数,包括fork、vfork和clone system calls,总数和tasks创建的数量是一致的 
-m, --slabs            slabinfo -n, --one-header       do not redisplay header 
-s, --stats            event counter statistics/显示各种事件计数器表和内存统计信息,这显示不重复。 
-d, --disk             disk statistics 
-D, --disk-sum         summarize disk statistics 
-p, --partition <dev>  partition specific statistics 
-S, --unit <char>      define display unit 
-w, --wide             wide output 
-t, --timestamp        show timestamp
-h, --help     display this help and exit 
-V, --version  output version information and exit
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 386264  79544 1350508    0    0     2    21  163   59  0  0 100  0  0

r 表示运行队列(就是说多少个进程真的分配到CPU)/b 表示阻塞的进程/虚拟内存已使用的大小/空闲物理内存/用作缓冲区的内存/用做高速缓存的内存/换出的交换页/换入的交换页/写入磁盘的块数/从磁盘读出的块数/每秒的中断数/每秒上下文切换次数/用户空间/系统空间/空闲时间/等待IO/从虚拟设备中获得的时间/



4、SAR

System Activity Reporter系统活动情况报告
Usage: sar [ options ] [ <interval> [ <count> ] ]   
 Options are:   
 [ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]   
 [ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]   
 [ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]   
 [ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]   
 [ -j { ID | LABEL | PATH | UUID | ... } ]   
 [ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]   
 [ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

cpu资源监控

sar -u 10 3    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
04:21:46 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle    
04:21:56 PM     all      0.10      0.00      0.10      0.00      0.00     99.80    
04:22:06 PM     all      0.20      0.00      0.00      0.00      0.00     99.80    
04:22:16 PM     all      0.00      0.00      0.10      0.00      0.00     99.90    
Average:        all      0.10      0.00      0.07      0.00      0.00     99.83

1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU

inode/文件/其他内核监控

[root@ali-cs ~]# sar -v 10 3    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
04:25:51 PM dentunusd   file-nr  inode-nr    pty-nr    
04:26:01 PM    116978       704     33342         2    
04:26:11 PM    116978       704     33342         2

输出项说明:

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的pty数量

内存和交换空间监控

sar -r 5 2    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
04:30:20 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty    
04:30:25 PM    377356   1506384     79.97     80416   1249276    195068     10.36    625220    740468       292    
04:30:30 PM    377356   1506384     79.97     80416   1249276    195068     10.36    625216    740468       292    
Average:       377356   1506384     79.97     80416   1249276    195068     10.36    625218    740468       292

输出项说明:

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

active表示这些[内存]数据正在使用种,或者刚被使用过。
inactive表示这些[内存]中的数据是有效的,但是最近没有被使用。
Dirty:  指需要写回磁盘的数据大小
Linux kernel设计了两种LRU list: active list 和 inactive list, 刚访问过的页面放进active list,长时间未访问过的页面放进inactive list,这样从inactive list回收页面就变得简单了。
内核线程kswapd会周期性地把active list中符合条件的页面移到inactive list中,这项转移工作是由refill_inactive_zone()完成的
至于在源代码中看到的ACTIVE_ANON和ACTIVE_FILE,分别表示anonymous pages和mapped pages。用户进程的内存页分为两种:与文件关联的内存(比如程序文件、数据文件所对应的内存页)和与文件无关的内存(比如进程的堆栈,用malloc申请的内存),
前者称为file pages或mapped pages,后者称为anonymous pages,File pages在发生换页(page-in或page-out)时,是从它对应的文件读入或写出;anonymous pages在发生换页时,是对交换区进行读/写操作。

内存分页监控

sar -B 5 2    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
06:03:41 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff    
06:03:46 PM      0.00      0.00     13.57      0.00     12.57      0.00      0.00      0.00      0.00    
06:03:51 PM      0.00      0.00      5.41      0.00      5.21      0.00      0.00      0.00      0.00    
Average:         0.00      0.00      9.50      0.00      8.90      0.00      0.00      0.00      0.00

输出项说明:

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

I/O和传送速率监控

sar -b 5 2    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
06:06:41 PM       tps      rtps      wtps   bread/s   bwrtn/s    
06:06:46 PM      0.00      0.00      0.00      0.00      0.00    
06:06:51 PM      0.00      0.00      0.00      0.00      0.00    
Average:         0.00      0.00      0.00      0.00      0.00

输出项说明:

tps:每秒钟物理设备的 I/O 传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

进程队列长度和平均负载状态监控

sar -q 5 2    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
06:10:27 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked    
06:10:32 PM         0       103      0.00      0.01      0.05         0    
06:10:37 PM         0       103      0.00      0.01      0.05         0    
Average:            0       103      0.00      0.01      0.05         0

输出项说明:

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

系统交换活动信息监控

sar -W 5 2    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
06:12:22 PM  pswpin/s pswpout/s    06:12:27 PM      0.00      0.00    
06:12:32 PM      0.00      0.00    Average:         0.00      0.00

输出项说明:

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

设备使用情况监控

sar -d 5 2 -p    Linux 3.10.0-514.6.2.el7.x86_64 (ali-cs)     06/24/2017     _x86_64_    (1 CPU)
06:13:28 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util    
06:13:33 PM       vda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00    
06:13:33 PM       vdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
06:13:33 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util    
06:13:38 PM       vda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00    
06:13:38 PM       vdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util    
Average:          vda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00    
Average:          vdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

其中:

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.

rd_sec/s:每秒读扇区的次数.

wr_sec/s:每秒写扇区的次数.

avgrq-sz:平均每次设备I/O操作的数据大小(扇区).

avgqu-sz:磁盘请求队列的平均长度.

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.

%util:I/O请求占CPU的百分比,比率越大,说明越饱和.

1. avgqu-sz 的值较低时,设备的利用率较高。

2. 当%util的值接近 1% 时,表示设备带宽已经占满。

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看



free

Usage:     free [options]
Options:     
-b, --bytes         show output in bytes     
-k, --kilo          show output in kilobytes     
-m, --mega          show output in megabytes     
-g, --giga          show output in gigabytes        
--tera          show output in terabytes     
-h, --human         show human-readable output        
--si            use powers of 1000 not 1024     
-l, --lohi          show detailed low and high memory statistics     
-t, --total         show total for RAM + swap     
-s N, --seconds N   repeat printing every N seconds     
-c N, --count N     repeat printing N times, then exit     
-w, --wide          wide output
--help     display this help and exit     
-V, --version  output version information and exit

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-g : 以 GB 为单位显示内存

--tera:  以TB为单位显示内存

free -m 
               total        used        free      shared  buff/cache   available 
 Mem:           1839          65         368           0        1406        1586 
 Swap:             0           0           0

全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)

已用:已用内存(全部计算 - 空间+缓冲+缓存)

空闲:未使用内存(/proc/meminfo 中的 MemFree 项)

共用:主要被 tmpfs 使用的内存(/proc/meminfo 中的 Shmem 项)

缓冲:被内核缓冲使用的内存(/proc/meminfo 中的 Buffers 项)

缓存:被页面缓存和 slab 使用的内存(/proc/meminfo 中的 Cached 和 ×××eclaimable 项)

实际空闲内存(新版)

第二行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。

-h:人类可读格式

-l:显示最低和最高的内存统计

free -lh   
              total        used        free      shared  buff/cache   available   
 Mem:           1.8G         65M        368M        352K        1.4G        1.5G   
 Low:           1.8G        1.4G        368M   
 High:            0B          0B          0B   
 Swap:            0B          0B          0B

-t:显示内存总和列;

-s<间隔秒数>:持续观察内存使用状况;

-w : 取消缓冲和缓存内存的输出

free -wh   
              total        used        free      shared     buffers       cache   available   
 Mem:           1.8G         65M        368M        352K         78M        1.3G        1.5G   
 Swap:            0B          0B          0B