[工具] Shell 检测性能指标 (例如:剩余硬盘空间、内存空间等)

介绍

基本信息

名称: 检测性能指标(例如:剩余硬盘空间、内存空间等)
作用: 检测性能指标(例如:剩余硬盘空间、内存空间等)

使用方法

1. 给此脚本添加执行权限
2. 执行此脚本

脚本

#!/bin/bash

ip=`ip a s | awk '/[1-2]?[0-9]{0,2}\.[1-2]?[0-9]{0,2}/&&!/127.0.0.1/{print $2}'`
host=`hostname`
disk=`df -h | awk '/\/$/{print $5}'`
mem=`free -m | awk '/Mem/{print $4}'`
cpu=`top -bn 1 | awk -F',' '/^%Cpu/{print $4 }' | awk '{print $1}'`
soft=`rpm -qa | wc -l`
port=`ss -ntulap | wc -l`

echo "$ip $host disk $disk"
echo "$ip $host mem $mem"
echo "$ip $host cpu $cpu"
echo "$ip $host soft $soft"
echo "$ip $host port $port"
echo

[命令] Linux 命令 top (显示资源和进程)

内容一:top 命令解析

1.1 top 命令输出结果

# top
top - 14:16:16 up 6 days, 20:52,  4 users,  load average: 0.00, 0.00, 0.00
Tasks: 393 total,   1 running, 392 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   5848752 total,  5709944 used,   138808 free,     4960 buffers
KiB Swap:  2103292 total,        0 used,  2103292 free.  4507072 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S   %CPU  %MEM     TIME+ COMMAND                                      
    8 root      20   0       0      0      0 S  0.332 0.000   2:12.60 rcu_sched                                    
  716 z0042h2+  20   0   15484   2840   2132 R  0.332 0.049   0:00.09 top                                          
31993 root      20   0       0      0      0 S  0.332 0.000   0:00.08 kworker/u32:2                                
    1 root      20   0  189604   5892   4120 S  0.000 0.101   2:35.86 systemd                                      
    2 root      20   0       0      0      0 S  0.000 0.000   0:00.72 kthreadd                                     
    4 root       0 -20       0      0      0 S  0.000 0.000   0:00.00 kworker/0:0H

1.2 top 命令输出结果简介

1.2.1 top 命令输出结果分类

1) 前 5 行是整体的统计信息
2) 后面的是具体的进程信息

1.2.2 统计信息说明
1.2.2.1 第 1 行信息

1) 14:16:16 系统当前时间
2) 20:52 系统运行了多久
3) 4 users 系统当前登录用户数
4) load average: 0.00, 0.00, 0.00 系统平均负载


补充:
1) 其中的三个数值分别代表:1,5,15 分钟的系统平均负载
2) 单核 CPU 的情况下:0.00 代表 0 负载,1.00 代表满载,超过 1 代表超负荷
3) 理想情况是:CPU 的核心数 * 0.7 = 整个系统的理想负载

1.2.2.2 第 2 行信息

1) Tasks: 393 total 总进程数
2) 1 running 正在运行的进程数
3) 392 sleeping 睡眠进程数
4) 0 stopped 停止进程数
5) 0 zombie 僵尸进程数

1.2.2.3 第 3 行信息


注意:
1) 这一行默认是所有 CPU 核心加在一起的平均值,如果有 1 个核心那满值就是 100%,如果有 5 个核心那总值就是 500%
2) 如果此时输入数字 1 ,则可以切换至每个单核 CPU 的负载情况,再输入数字 1,则可以再切换回来

1) 0.0 us 用户空间占用 CPU 的百分比
2) 0.0 sy 内核空间占用 CPU 的百分比
3) 0.0 ni 非实时的进程的优先级,取值范围为从 -20 到 19,数值越小优先级越高
4) 100.0 id 空闲的 CPU 的百分比
5) 0.0 wa CPU 等待输入输出的时间百分比
6) 0.0 hi 服务因硬件中断所消耗的时间百分比
7) 0.0 si 服务因软件中断所消耗的时间百分比
8) 0.0 st 虚拟机被物理机偷去的 CPU 时间百分比

1.2.2.4 第 4 行信息

1) 5848752 total 总物理内存量
2) 5709944 used 已经使用的物理内存量
3) 138808 free 剩余的物理内存量
4) 4960 buffers 用作内核缓存的内存量

1.2.2.5 第 5 行信息

1) 2103292 total 总交换分区量
2) 0 used 已经使用的交换分区量
3) 2103292 free 剩余交换分区量
4) 4507072 cached Mem 用作缓存的交换分区量

1.2.3 进程信息说明


补充:
1) 此时按下 “f” 键可以选择要显示的信息
2) 此时按下 “方向” 键翻看想查阅的内容
3) 此时按下 “s” 键可以开启显示这一信息
4) 此时按下 “d” 键可以关闭显示这一信息
4) 带 * 号的是已经选择要显示的信息

1) PID (Process Id) 进程的 id
2) USER (User Name) 进程所有者的用户
3) PR (Priority) 优先级
4) NI (Nice value) nice 值(负值表示高优先级,正值表示低优先级)
5) VIRT ( Virtual Image (kb) ) 进程使用的虚拟内存量,单位 kb
6) RES ( Resident size (kb) ) 进程使用的、未被换出的物理内存大小,单位 kb
7) SHR (Shared Mem size (kb) ) 共享内存大小,单位 kb
8) S (Process Status) 进程状态,可以为 D R S T 和 Z

(补充:D 表示不可中断的睡眠状态,R 表示运行,S 表示睡眠,T 表示跟踪/停止,Z 表示僵尸进程)

9) %CPU (CPU usage) 上上次更新到上次更新时进程 CPU 占用平均百分比

(注意:此值可能会超过 100% ,但不会超过:CPU 总核心数 * 100% )

10) %MEM ( Memory usage (RES) ) 上上次更新到上次更新时进程使用的物理内存百分比
11) TIME+ ( CPU Time, hundredths ) 进上上次更新到上次更新时进程使用 CPU 的总时间,单位 1/100 秒
12) COMMAND (Command name/line) 命令名或命令行 (命令和选项)

内容二:top 非交互式命令选项

1) -b 以批处理模式执行命令
2) -c <command> 在执行了 top 命令之后再直接执行交互命令
3) -d <time> 屏幕刷新间隔时间
4) -i 忽略僵尸进程
5) -s 以安全模式执行命令
6) -S 以累积模式执行命令
7) -i <时间> 设置间隔时间
8) -u <用户> 指定只显示某个用户的进程
9) -p <进程号> 指定只显示某个 PID 的进程
10) -n <次数> 指定显示循环的次数

内容三:top 交互命令 (即是在键入了 top 命令之后再键入以下命令)

3.1 基础操作

按 “h” 显示帮助

3.2 设置操作

1) 按下 “k” 键再按下 “<pid>” 再按下 “<回车>” 键,将某个 pid 为 <pid> 的进程删除
2) 按下 “r” 键再按下 “<ni>” 再按下 “<回车>” 键,将某个进程的 ni 设置为 <ni>,取值范围为从 -20 到 19,数值越小优先级越高

(注意:只有 root 的取值范围才是 -20 到 19 ,普通用户的取值范围是 0 到 19)

3) 按下 “esc” 键,退出 top 命令当前的子状态,如果没有子状态则不退出
4) 按下 “q” 键,退出 top

3.3 显示操作

1) 按下 “d” 键再按 <number> 再按下 “回车” ,将刷新频率修改为 <number> 秒
2) 按下 “s” 键再按 <number> 再按下 “回车”,将刷新的延迟时间修改为 <number> 秒 (默认是 5S)
3) 按下 “n” 键再按 <number> 再按下 “回车”,将显示的行数修改为 <number> 行 (默认显示能满屏的行数)
4) 按下 “f” 键,选择要显示的信息
5) 按下 “i” 键,不显示闲置和僵死进程,再按下 “i” 键会取消
6) 按下 “S” 键,切换到累积模式,再按下 “S” 键会取消
7) 按下 “l” 键,隐藏第 1 行总负载信息,再按下 “l” 键会取消
8) 按下 “t” 键, 隐藏第 2~3 行 CPU 信息,再按下 “t” 键会取消
9) 按下 “m” 键,隐藏第 4~5 行内存信息,再按下 “m” 键会取消
10) 按下 “1” 键,显示 CPU 所有核心的信息,每核显示 1 行,再按下 “1” 键会取消

3.4 排序操作

1) 按下 “M” 键,根据使用内存的大小进行排序
2) 按下 “P” 键,根据使用 CPU 的大小进行排序
3) 按下 “T” 键,根据开启的时间进行排序

内容四:top 命令使用案例

4.1 案例一:显示 top 命令运行 1 秒钟时的信息

# top -bn 1

4.2 案例二:显示 top 命令运行 1 秒钟时的 CPU 占用率最高的进程

# top -bn 1 -i -c