Linux常用命令

常用监控命令

top

$top
    top - 09:14:56 up 264 days, 20:56,  1 user,  load average: 0.02, 0.04, 0.00
    Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
    Mem:    377672k total,   322332k used,    55340k free,    32592k buffers
    Swap:   397308k total,    67192k used,   330116k free,    71900k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  2856  656  388 S  0.0  0.2   0:49.40 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S  0.0  0.0   7:15.20 ksoftirqd/0
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0


  • 第一行

    • 09:14:56 : 系统当前时间
    • 264 days, 20:56 : 系统开机到现在经过了多少时间
    • 1 users : 当前2用户在线
    • load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息



  • 第二行

    • Tasks:任务;
    • 87 total:很好理解,就是当前有87个任务,也就是87个进程。
    • 1 running:1个进程正在运行
    • 86 sleeping:86个进程睡眠
    • 0 stopped:停止的进程数
    • 0 zombie:僵死的进程数



  • 第三行

    • Cpu(s):表示这一行显示CPU总体信息
    • 0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
    • 0.7%sy:内核占用CPU时间百分比
    • 0.0%ni:改变过优先级的进程占用CPU的百分比
    • 99.3%id:空闲CPU时间百分比
    • 0.0%wa:等待I/O的CPU时间百分比
    • 0.0%hi:CPU硬中断时间百分比
    • 0.0%si:CPU软中断时间百分比
    • 注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;



  • 第四行

    • Men:内存的意思
    • 8175320kk total:物理内存总量
    • 8058868k used:使用的物理内存量
    • 116452k free:空闲的物理内存量
    • 283084k buffers:用作内核缓存的物理内存量



  • 第五行

    • Swap:交换空间
    • 6881272k total:交换区总量
    • 4010444k used:使用的交换区量
    • 2870828k free:空闲的交换区量
    • 4336992k cached:缓冲交换区总量



  • 进程信息

    • 再下面就是进程信息:
    • PID:进程的ID
    • USER:进程所有者
    • PR:进程的优先级别,越小越优先被执行
    • NInice:值
    • VIRT:进程占用的虚拟内存
    • RES:进程占用的物理内存
    • SHR:进程使用的共享内存
    • S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
    • %CPU:进程占用CPU的使用率
    • %MEM:进程使用的物理内存和总内存的百分比
    • TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    • COMMAND:进程启动命令名称



  • 使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多; 注:通过”shift + >”或”shift + <”可以向右或左改变排序列 如果只需要查看内存:可用free命令。只查看uptime信息(第一行),可用uptime命令;
  • 在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况
  • top -Hp 查看指定进程 可通过Threads判断线程数
top -Hp 11757
top - 19:36:11 up 266 days,  2:43,  1 user,  load average: 0.31, 0.18, 0.13
Threads: 115 total,   0 running, 115 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8010424 total,   733756 free,  5278396 used,  1998272 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2421932 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
11767 admin     20   0 8204136   4.7g  18876 S  0.3 62.0  32:55.74 java
11757 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11762 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:32.20 java
11763 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.34 java
11764 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.36 java
11765 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.31 java
11766 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.39 java
11768 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:02.17 java
11770 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:02.90 java
11771 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:04.30 java
11772 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:06.85 java
11773 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.16 java
11774 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:18.34 java
11796 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   2:27.85 java
11797 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.62 java
11798 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.35 java
11799 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11800 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11801 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   1:32.81 java
11802 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   1:31.72 java
11803 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:22.92 java
11804 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.19 java
11805 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.67 java
11806 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.16 java
11807 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11808 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   3:57.39 java
11824 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.24 java
11855 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:03.40 java
11856 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.75 java
11858 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:03.75 java
11868 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:11.62 java
11882 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java

free

  • 查询可用内存
  • 区分buffer 和 cache
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.

uptime

uptime
 17:38:53 up 265 days, 46 min,  1 user,  load average: 0.17, 0.09, 0.12
  • 系统时间 运行时间 连接数(每个终端算一个连接) 1,5,15 分钟的系统平均负载(运行队列中的平均进程数)

load average

  • 3个数字的含义:分别表示系统在过去1分钟、5分钟、15分钟内运行进程队列中的平均进程数量。运行队列,没有等待IO,没有WAIT,没有KILL的进程通通都进这个队列。
  • 用交通流量来做类比

    • 1、单核CPU - 单车道 - 数字在0.00-1.00之间正常

      • 0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。
      • 1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。
      • 1.00-* 表示路况不太好了,如果到达2.00表示有桥上车辆一倍数目的车辆正在等待。这种情况你必须进行检查了。
    • 2、多核CPU - 多车道 - 数字/CPU核数 在0.00-1.00之间正常

      • 多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。
    • 单核负载在0.7以下是安全的,超过0.7就需要进行优化了。
    • 看5分钟和15分钟的比较好,即后面2个数字
    • 获得CPU核心数目 grep 'model name' /proc/cpuinfo | wc -l

vmstat

  • 监视内存使用情况,vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。
  • 可对操作系统的虚拟内存、进程、IO 读写、CPU 活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进 行深入分析
  • 可观察每秒上下文切换数
vmstat 2 20
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 731272 169216 1833540    0    0     1     7    0    0  2  1 98  0  0
 0  0      0 731256 169216 1833540    0    0     0    36  742 1312  0  0 100  0  0
 0  0      0 733284 169216 1833540    0    0     0    38 2074 2814  7  2 91  0  0
 0  0      0 733036 169216 1833540    0    0     0     0  724 1293  0  0 100  0  0
 1  0      0 731052 169216 1833540    0    0     0    48 1295 1954  4  1 96  0  0
 0  0      0 731052 169216 1833540    0    0     0     0  720 1301  0  0 100  0  0
 0  0      0 731052 169216 1833540    0    0     0     0  757 1323  0  0 100  0  0
 0  0      0 730804 169216 1833548    0    0     0    36  867 1402  0  0 99  0  0
 0  0      0 730804 169216 1833548    0    0     0    76  774 1332  0  0 100  0  0
 0  0      0 731052 169216 1833552    0    0     0    70 1442 2084  4  1 95  0  0
 1  0      0 727732 169216 1833552    0    0     0    24  867 1429  0  0 99  0  0
 0  0      0 731176 169216 1833552    0    0     0    16 1262 1892  3  1 96  0  0
 0  0      0 731176 169216 1833552    0    0     0     8  769 1300  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0    26  769 1329  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0     4  802 1364  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0     0  693 1272  0  0 100  0  0
 0  0      0 730680 169216 1833552    0    0     0    16 1341 2010  4  1 96  0  0
 0  0      0 730680 169216 1833552    0    0     0    26 1049 1592  1  1 99  0  0
 0  0      0 731548 169216 1833552    0    0     0    16 1341 1980  4  1 95  0  0
 0  0      0 731532 169216 1833552    0    0     0    22  728 1304  0  0 100  0  0

Procs(进程):

  • r: 运行队列中进程数量
  • b: 等待IO的进程数量

Memory(内存):

  • swpd: 使用虚拟内存大小
  • free: 可用内存大小
  • buff: 用作缓冲的内存大小
  • cache: 用作缓存的内存大小

Swap:

  • si: 每秒从交换区写到内存的大小
  • so: 每秒写入交换区的内存大小

IO:(现在的Linux版本块的大小为1024bytes)

  • bi: 每秒读取的块数
  • bo: 每秒写入的块数

system:

  • in: 每秒中断数,包括时钟中断
  • cs: 每秒上下文切换数

CPU(以百分比表示)

  • us: 用户进程执行时间(user time)
  • sy: 系统进程执行时间(system time)
  • id: 空闲时间(包括IO等待时间)
  • wa: 等待IO时间

pidstat

  • 用于细致地观察进程,可监控 CPU、IO、内存。
  • 示例:-p 指定进程,-u 表示监控 CPU(-t 表示监控线程,-d 表示监控磁盘 io 的情况),每秒采样 1 次,共采样 4 次。
  • -u
pidstat -p 11757 -u  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:01 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:59:02 PM  1000     11757    1.00    0.00    0.00    1.00     3  java
07:59:03 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:04 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:05 PM  1000     11757    1.00    0.00    0.00    1.00     3  java
07:59:06 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:07 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:08 PM  1000     11757    2.00    0.00    0.00    2.00     3  java
07:59:09 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:10 PM  1000     11757    1.00    0.00    0.00    1.00     3  java
  • -r 内存使用情况统计
pidstat -p 11757 -r  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:35 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
07:59:36 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:37 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:38 PM  1000     11757      1.00      0.00 8205164 4963196  61.96  java
07:59:39 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:40 PM  1000     11757      6.00      0.00 8205164 4963196  61.96  java
07:59:41 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:42 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:43 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:44 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java

minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ:      该进程使用的虚拟内存(以kB为单位)
RSS:      该进程使用的物理内存(以kB为单位)
%MEM:     该进程使用内存的百分比
Command:  拉起进程对应的命令
  • -d
pidstat -p 11757 -d  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:58 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
07:59:59 PM  1000     11757      0.00      0.00      0.00  java
08:00:00 PM  1000     11757      0.00      0.00      0.00  java
08:00:01 PM  1000     11757      0.00      0.00      0.00  java
08:00:02 PM  1000     11757      0.00      0.00      0.00  java
08:00:03 PM  1000     11757      0.00      0.00      0.00  java
08:00:04 PM  1000     11757      0.00      0.00      0.00  java
08:00:05 PM  1000     11757      0.00      0.00      0.00  java

kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)
kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)
Command: 拉起进程对应的命令
上一篇:[实变函数]3.2 可测集 (measurable set)


下一篇:linux常用命令