文章目录
介绍
uptime—简单查看基本时间和负载
uptime 通过一行信息显示:当前的时间,系统启动执行时长,有几个用户登录,系统(1、5、15分钟内)平均负载。
系统负载是处于可运行runnable或不可中断uninterruptable状态的进程的平均数。可运行状态的进程要么正在使用 CPU 要么在等待使用 CPU。 不可中断状态的进程则正在等待某些 I/O 访问,例如等待磁盘 IO。负载均值的意义根据系统中 CPU 的数量不同而不同,负载为 1 对于一个只有单 CPU 的系统来说意味着负载满了,而对于一个拥有 4 CPU 的系统来说则意味着 75% 的时间里都是空闲的。
root@ubuntu:~# uptime
08:58:46 up 8 days, 1:05, 4 users, load average: 0.01, 0.02, 0.00
top—实时系统进程状态监控
它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程,含义说明如下:
// 当前时间 系统已经运行时间 当前用户数量 平均负载(类似timeup,相应最近5、10和15分钟内的平均负载)
top - 02:06:23 up 7 days, 16:29, 4 users, load average: 0.00, 0.00, 0.00
// 总任务数量 运行任务数量 休眠任务数量 停止任务数量 僵尸进程数量
Tasks: 238 total, 1 running, 237 sleeping, 0 stopped, 0 zombie
// CPU占比 用户空间 内核空间 nice进程 idle空闲 io等待 硬件中断 软件中断
%Cpu(s): 5.4 us, 3.0 sy, 0.0 ni, 91.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
// 内存使用率 物理内存总量 使用中的内存总量 空闲内存总 缓存的内存量
KiB Mem: 2029920 total, 1678308 used, 351612 free, 82656 buffers
// swap交换分区 交换区总量 使用的交换区总量 空闲交换区总量 缓冲的交换区总量
KiB Swap: 1023996 total, 11152 used, 1012844 free. 841576 cached Mem
// 各进程状态
// PID 用户名 调度优先级 nice值 虚拟内存 驻留内存 共享内存 进程的状态 CPU占比 内存占比 全部CPU时间 命令
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2327 wwyy 20 0 1151116 97384 45476 S 6.0 4.8 5:18.25 compiz
1118 root 20 0 389644 65580 27148 S 2.3 3.2 2:21.71 Xorg
2546 wwyy 20 0 662264 34004 23120 S 1.0 1.7 0:58.32 gnome-terminal
1 root 20 0 33920 4144 2676 S 0.0 0.2 0:01.38 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.03 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 0:04.98 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
常用选项参数:
‘d’ - Delay time 3.0 seconds // 指定刷新间隔时间
‘p’ - PID monitoring Off (show all processes) // 指定pid进程信息
‘i’ - Idle tasks On (show all tasks) // 显示僵尸进程
‘c’ - Command line Off (name, not cmdlin // 显示命令行而非命令名称
ps—查看当前系统进程信息快照
ps用于显示一段进程的信息瞬间快照,ps命令时,如果不采用任何的可选项,则其显示的信息是非常有限的,而且往往只显示当前用户所运行的程序。支持多种命令选项:UNIX、BSD、CNU方式;
可用选项: -u 指定用户 -a 全部用户 -p 指定pid
常见的用方法举例如下:
查看系统上全部进程信息 ps aux
root@ubuntu:~# ps axu // a 显示中端下包括其他用户全部程序 x 不以终端机来区分 u 以用户为主格式显示程序状态
//用户名 PID cpu合内存占用 虚存size 实际内存 终端 进程的状态 进程启动时间和日期 命令
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 33920 4144 ? Ss Aug15 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Aug15 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Aug15 0:01 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Aug15 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Aug15 0:06 [rcu_sched]
root 8 0.0 0.0 0 0 ? S Aug15 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S Aug15 0:00 [migration/0]
root 10 0.0 0.0 0 0 ? S Aug15 0:00 [watchdog/0]
root 11 0.0 0.0 0 0 ? S Aug15 0:00 [kdevtmpfs]
root 12 0.0 0.0 0 0 ? S< Aug15 0:00 [netns]
root 13 0.0 0.0 0 0 ? S< Aug15 0:00 [perf]
root 14 0.0 0.0 0 0 ? S Aug15 0:00 [khungtaskd]
root 15 0.0 0.0 0 0 ? S< Aug15 0:00 [writeback]
root 16 0.0 0.0 0 0 ? SN Aug15 0:00 [ksmd]
root 17 0.0 0.0 0 0 ? SN Aug15 0:00 [khugepaged]
free—简单显示系统内存使用情况
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
root@ubuntu:~# free
total used free shared buffers cached
Mem: 2029920 1698952 330968 19472 85432 844572
-/+ buffers/cache: 768948 1260972
Swap: 1023996 11152 1012844
// Mem 行是内存的使用情况。
// -/+ buffers/cache :表示物理内存的缓存统计
// Swap 行是swap空间的使用情况。
// total 列显示系统总的可用物理内存 和 交换空间大小。
// used 列显示已经被分配的物理内存(包含buffers与cach使用的数量,其中可能部分缓存并未实际使用)和交换空间。
// free 列显示还有多少物理内存和交换空间未分配。
// shared 列显示被共享使用的物理内存大小。
// buff/cache 列显示被 buffer 和 cache 使用的物理内存大小,-表示真实使用,+表示可用。
// available 列显示还可以被应用程序使用的物理内存大小。
buffer/cached是为了提高系统IO read的性能用作缓存的空间,当程序使用内存时,buffer/cached会很快地被使用。估算空闲的物理内存时可参考-/+ buffers/cache的free的值,但实际的可用内存要小于这个值,因为不能所有的buffers和cached都释放。
常用选项:-h 更友好的显示 -s [n]间隔几秒输出一次
root@ubuntu:~# free -h
total used free shared buffers cached
Mem: 1.9G 1.6G 321M 19M 83M 824M
-/+ buffers/cache: 752M 1.2G
Swap: 999M 10M 989M
vmstat—查看虚拟内存系统状态
vmstat查看虚拟内存系统,获得有关进程、虚存、页面交换空间及 CPU活动的信息。
root@ubuntu:~# vmstat
// procs r运行队列中进程数量 b等待IO的进程数量
// memory swpd使用虚拟内存大小 free可用内存 buff已使用 cache缓存
// swap si每秒写入交换区 so每秒交换区写磁盘
// io bi每秒读取块 bo每秒写块
// system in每秒中断数 cs每秒上下文切换
// cpu us用户空间耗时 sy内核(系统)耗时 id 挂起时间 wa等io时间 st 虚拟系统耗时
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 11152 349200 84060 842768 0 0 18 17 44 127 1 0 98 0 0
其他常用选项:
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M。默认单位为K
iostat—监视系统磁盘活动输入输出
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
root@ubuntu:~# iostat
Linux 4.4.0-148-generic (ubuntu) 08/24/2020 _x86_64_ (1 CPU)
// cpu使用 用户占用 NICE值用户占比 系统内核占比 io等待占比 空闲占比
avg-cpu: %user %nice %system %iowait %steal %idle
1.25 0.02 0.49 0.02 0.00 98.22
//设备传输 每秒的传输次数 每秒设备读取 每秒设备写入 读取总数据量 写入总数据量
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
fd0 0.00 0.00 0.00 8 0
sda 1.37 17.66 15.32 1525555 1323388
其他常用选项:
-c 只输出CPU -d 只输出设备信息 -x 显示详细扩展信息
iostat interval [count] // interval 采样间隔 count 采样次数
root@ubuntu:~# iostat -x -d 3 2
Linux 4.4.0-148-generic (ubuntu) 08/24/2020 _x86_64_ (1 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
fd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 42.00 42.00 0.00 42.00 0.00
sda 0.02 0.77 1.08 0.28 17.45 15.16 47.97 0.00 1.48 0.89 3.74 0.26 0.04
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
fd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
// rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
// wrqm/s: 每秒对该设备的写请求被合并次数
// r/s: 每秒完成的读次数
// w/s: 每秒完成的写次数
// rkB/s: 每秒读数据量(kB为单位)
// wkB/s: 每秒写数据量(kB为单位)
// avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
// avgqu-sz: 平均等待处理的IO请求队列长度
// await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
// svctm: 平均每次IO请求的处理时间(毫秒为单位)
// %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
netstat—显示网络连接、路由表和网络接口信息
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。
netstat的输出结果可以分为两个部分:1、Active Internet connections 有源TCP连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
root@ubuntu:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 1 0 ip6-localhost:36918 ip6-localhost:ipp CLOSE_WAIT
tcp6 1 0 ip6-localhost:36884 ip6-localhost:ipp CLOSE_WAIT
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 24 [ ] DGRAM 10457 /dev/log
unix 2 [ ] DGRAM 15683
unix 3 [ ] STREAM CONNECTED 14247
unix 3 [ ] STREAM CONNECTED 15406
unix 3 [ ] STREAM CONNECTED 14489
unix 3 [ ] STREAM CONNECTED 14273 @/tmp/dbus-vEQpM97tju
unix 3 [ ] STREAM CONNECTED 14217 @/com/ubuntu/upstart-session/1000/1902
unix 3 [ ] STREAM CONNECTED 38414 @/tmp/dbus-o5oOWEwf
unix 3 [ ] STREAM CONNECTED 14702 /var/run/dbus/system_bus_socket
// Proto:显示连接使用的协议。
// RefCnt:表示连接到本套接口上的进程号。
// Types:显示套接口的类型。
// State:显示套接口当前的状态。
// Path:表示连接到套接口的其它进程使用的路径名。
其他常用选项:
-a (all) 显示所有选项,默认不显示LISTEN相关。 -t 仅显示tcp相关选项。 -u 仅显示udp相关选项。-l 仅列在 Listen的服务状态。
-n 拒绝显示别名,能显示数字的全部转化成数字。 -p 显示建立相关链接的程序名。 -r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
sar—对系统活动信息进行全面 收集/报告/保存
sar:System Activity Reporter系统活动情况报告,是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等,内容非常多。
sar [options] [-A] [-o file] [t [n]]
t为采样间隔,n为采样次数(默认值是1),-o file表示将命令结果以二进制格式存放在文件file中。常用选项
-A:所有报告的总和。相当于:-bBdFHqrRSuvwWy -I SUM -I XALL -m ALL -n ALL -u ALL -P ALL
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动
举例:
root@ubuntu:~# sar -u
Linux 4.4.0-148-generic (ubuntu) 08/24/2020 _x86_64_ (1 CPU)
// all表示全部cpu平均值 用户占比 用户nice占比 内核系统 io等待占比 虚拟系统占比 //空闲占比
09:38:48 AM CPU %user %nice %system %iowait %steal %idle
09:39:11 AM all 1.75 0.00 1.40 0.00 0.00 96.85
09:39:27 AM all 1.50 0.00 1.24 0.00 0.00 97.26
Average: all 1.65 0.00 1.34 0.00 0.00 97.01
root@ubuntu:~# sar -r
Linux 4.4.0-148-generic (ubuntu) 08/24/2020 _x86_64_ (1 CPU)
09:38:48 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
09:39:11 AM 361580 1668340 82.19 85224 844108 2507888 82.12 667492 592340 76
09:39:27 AM 360960 1668960 82.22 85240 844132 2507888 82.12 667508 592356 52
Average: 361270 1668650 82.20 85232 844120 2507888 82.12 667500 592348 64
oot@ubuntu:~# sar -d
Linux 4.4.0-148-generic (ubuntu) 08/24/2020 _x86_64_ (1 CPU)
09:38:48 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
09:39:11 AM dev2-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:39:11 AM dev8-0 0.09 0.00 4.90 56.00 0.00 0.00 0.00 0.00
09:39:11 AM dev8-1 0.09 0.00 4.90 56.00 0.00 0.00 0.00 0.00
09:39:11 AM dev8-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:39:11 AM dev8-5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:39:27 AM dev2-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:39:27 AM dev8-0 0.33 0.00 11.49 35.20 0.00 0.00 0.00 0.00
09:39:27 AM dev8-1 0.33 0.00 11.49 35.20 0.00 0.00 0.00 0.00
09:39:27 AM dev8-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:39:27 AM dev8-5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev2-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev8-0 0.18 0.00 7.55 41.14 0.00 0.00 0.00 0.00
Average: dev8-1 0.18 0.00 7.55 41.14 0.00 0.00 0.00 0.00
Average: dev8-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev8-5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00