top、free、vmstat、iostat、pmap、glances、dstat、iotop、lsof
动态监控系统状态 ,在命令行输入top,界面如下
1. |top - 21:01:47 up 10:45, 4 users, load average: 0.04, 0.03, 0.05|
|命令uptime信息|
2. |Tasks: 259 total, | 1 running, |258 sleeping, | 0 stopped, | 0 zombie
| 总进程数 | 活动进程 | 睡眠进程 | 停止进程 | 僵尸进程|
3. |%Cpu(s): | 0.1 us, | 0.2 sy, | 0.0 ni, | 99.8 id,| 0.0 wa, | 0.0 hi, | 0.0 si, | 0.0 st|
| cpu状态 |用户占用比例|内核占用|改变过ni优先级的进程占用| 空闲占比 |等待IO时间| 硬中断 |软终端|丢失的时间片|
4. |KiB Mem : 1514076 total, | 76768 free, | 791284 used, | 646024 buff/cache|
| 总内存 | 剩余量 | 使用量 |用于缓存的量|
5. |KiB Swap: 3145724 total, | 3145724 free, | 0 used. | 503752 avail Mem |
| 虚拟内存总量 | 空闲量 | 使用量 |缓冲的交换区总量|
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
742 root 20 0 320060 6536 5072 S 0.3 0.4 0:49.45 vmtoolsd
首部信息显示隐藏开关
排序:
管理指令:
####7.5.1 htop命令:EPEL源
与top命令相似,UI设计前卫一些
内存空间使用状态
格式:free[OPTION]
选项
-b:以字节为单位
-m:以MB为单位
-g:以GB为单位
-h:易读模式
-t:显示RAM+swap的总和
-s n:刷新间隔为n秒
-c n:刷新n次后即退出
执行结果
buffers,解决速度不匹配问题;cache缓存,提高访问速度的
[v9@hai7 ~]$free
total used free shared buffers cached
1:Mem: 1003020 887824 115196 4104 89252 428612
2:-/+ buffers/cache: 369960 633060
3:Swap: 2097148 1076 2096072
虚拟内存信息
格式
vmstat [options][delay[count]]
选项:
-s:显示内存的统计数据
示例:
vmstat 1
动态观察,1秒刷新一次
vmstat 1 10
执行10次退出,1秒执行一次
执行结果说明
vmstat -n
|procs| |-----------memory--------| |-swap-| -|---io---|-|system ||-------cpu-----|
1 2 3 4 5 6
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 107296 94720 442468 0 0 5 1 17 16 0 0 100 0 0
与vmstat使用方法相似,统计CPU和设备IO信息
示例1. 监控设备adv1的扩展数据,每秒刷新一次,执行10次
[v9@hai7 ~]$iostat -x -d sda1 1 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda1 0.00 0.00 0.01 0.00 0.09 0.00 8.42 0.00 0.07 0.07 0.14 0.07 0.00
示例2. 以k为单位显示磁盘使用情况,每2秒刷新一次
[v9@hai7 ~]$iostat -d -k 2
示例3. 默认执行结果示例
[v9@hai7 ~]$iostat
1:Linux 2.6.32-754.el6.x86_64 (hai6) 09/06/2018 _x86_64_ (4 CPU)
2:avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.16 0.00 0.00 99.81
3:Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.01 0.03 0.00 1540 0
sda 0.46 19.71 2.57 1047842 136528
进程对应的内存映射,与文件/proc/PID(进程编号)/maps类似
格式
pmap [options] pid […]
选项
-x:显示详细格式的信息
执行示例,查看进程7795的内存占用信息
[v9@hai7 ~]$pmap -x 7795
7795: nano
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 168 112 0 r-x-- nano
0000000000629000 8 8 4 rw--- nano
0000000001fd9000 528 468 468 rw--- [ anon ]
... <==省略
[v9@hai7 ~]$cat /proc/7795/maps <==与pmap显示内容相似
EPEL源,可以跨网络监控
格式
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file][-o output]
常用选项:
选项 | 含义 |
---|---|
-b | 以Byte为单位显示网卡数据速率 |
-d | 关闭磁盘I/O模块 |
-f /path/to/somefile | 设定输入文件位置 |
-o{HTML | CSV} |
-m | 输入格式 |
-n | 禁用mount模块 |
-t | 延迟时间间隔 |
-1 | 每个CPU的相关数据单独显示 |
内建命令
选项 | 含义 |
---|---|
a | 按进程自动排序 |
l | 显示或隐藏日志 |
c | 按 CPU% 排序 |
b | Bytes or bits for network I/O |
m | 按 MEM% 排序 |
w | 删除警告日志 |
p | 按用户排序 |
x | 删除警告和关键日志 |
i | 按I/O使用状况排序 |
1 | 流显示每个CPU内核的使用情况 |
d | 显示隐藏磁盘读写状况 |
h | 帮助信息 |
f | 显示系统信息 |
t | View network I/O as combination |
n | 显示网络状态 |
u | View cumulative network I/O |
s | 显示传感器信息 |
q | 离开程序 |
y | hddtemp统计信息 |
C/S模式下运行glances命令,跨网络访问
系统资源统计,代替vmstat,iostat
格式
dstat [-afv] [options…] [delay[count]]
选项
选项 | 含义 |
---|---|
-c | 显示cpu相关信息 |
-C | 此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息 |
-d | 显示disk相关信息 |
-D | total,sda,sdb… |
-g | 显示page相关统计数据 |
-m | 显示memory相关统计数据 |
-n | 显示network相关统计数据 |
-p | 显示process相关统计数据 |
-r | 显示io请求相关统计数据 |
-s | 显示swapped相关统计数据 |
-y | 系统状态 |
- -socket | 用来显示tcp udp端口状态 |
- -ipc | 显示ipc消息队列,信号等信息 |
- -top-cpu | 显示最占用CPU的进程 |
- -top-io | 显示最占用io的进程 |
- -top-mem | 显示最占用内存的进程 |
- -top-latency | 显示延迟最大的进程 |
- -output | 将状态信息以##.csv后缀定向到指定目录下 |
示例
默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1
dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0| 0 0 | 424B 346B| 0 0 | 121 104
0 0 100 0 0 0| 0 0 | 240B 346B| 0 0 | 102 92
system:int、csw分别为系统的中断次数(interrupt)和上下文切换(context switch)
是一个用来监视磁盘I/O使用状况的top类工具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
[root@hai7 ~]$iotop
1:Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
2:Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
3: PID PRIO< USER DISK READ DISK WRITE SWAPIN IO COMMAND
1936 ?dif root 0.00 B/s 0.00 B/s 0.00 % 0.00 % tracker-extract
1943 ?dif root 0.00 B/s 0.00 B/s 0.00 % 0.00 % tracker-miner-fs
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
界面如上所示
iotop常用参数
选项 | 含义 |
---|---|
-o,–only | 只显示正在成I/O的进程或线程,除了传参,可以在运行过程总按o生效 |
-b,–batch | 非交互模式,一般用来记录日志 |
-n NUM,–iter=NUM | 设置监测的次数,默认无限。在非交互模式下很有用 |
-d SEC,–delay=SEC | 设置每次检测的间隔,默认1秒,接受非整型数据例如1.1 |
-p PID,–pid=PID | 指定检测的进程/线程 |
-u USER,–user=USER | 指定监测某个用户产生的I/O |
-P --processes | 仅显示进程,默认iotop显示所有线程 |
-a,–accumulated | 显示累计的I/O,而不是带宽 |
-k,–kilobytes | 使用KB单位,而不是对人友好的单位,在非交互模式下,脚本编程有用 |
-t,–time | 加上时间戳,非交互非模式 |
-q,–quiet | 禁止头几行,非交互模式,有三种指定方式 |
-q | 只在第一次监测时显示列名 |
永远不显示列名 | |
-qqq | 永远不显示I/O汇总 |
交互按键
按键 | 用途 |
---|---|
left和right方向键 | 改变排序 |
r | 反向排序 |
o | 切换至选项–only |
p | 切换至–processes选项 |
a | 切换至–accumulatd选项 |
q | 退出 |
i | 改变线程的优先级 |
list open files查看当前系统文件的工具,在Linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议(TCP)和用户数据协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
格式
lsof [选项]
选项
选项 | 含义 |
---|---|
-a | 列出打开文件存在的进程 |
-c | 显示command列中包含指定字符的进程所打开的文件 |
-g | 列出GID号进程详情 |
-d FD | 列出占用该文件号的进程 |
+d /DIR/ | 列出目录下被打开的文件 |
+D /DIR/ | 递归列出目录下被打开的文件 |
-n目录 | 列出使用NFS的文件 |
-i条件 | 列出符合条件的进程(4、6、协议、:端口、@ip) |
-p进程号 | 列出指定进程号所打开的文件 |
-u | 列出UID号进程详情 |
-h | 列出UID号进程详情 |
-v | 显示版本信息 |
-n | 不反向解析网络名字 |
示例
[root@hai7 ~]$tty
/dev/pts/0
[root@hai7 ~]$lsof /dev/pts/0
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2189 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 2189 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 2189 root 2u CHR 136,0 0t0 3 /dev/pts/0
[root@hai7 ~]$lsof -p 2189
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2189 root cwd DIR 8,3 4096 64 /data
bash 2189 root mem REG 8,2 106070960 101092451 /usr/lib/locale/locale-archive
... <==省略部分内容
bash 2189 root 0u CHR 136,0 0t0 3 /dev/pts/0
通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例如:sshd等,也可以通过制定ip查看该ip的网络连接情况
lsof -i -n
lsof [email protected]
通过参数-i:端口,可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
lsof -i:80 -n
查看指定状态的网络连接
lsof -n -P -i TCP -s TCP:ESTABLISHED
-n:no host names, -p:no port names
-i:TCP指定协议
-s:指定协议状态通过多个参数可以清晰的查看网络连接情况、协议连接情况等
1. 确定文件是在使用中
[root@hai7 ~]$lsof /var/log/messages
2. 删除文件
[root@hai7 ~]$rm -f /var/log/messages
3. 查看文件进程,拿到进程编号
[root@hai7 ~]$lsof |grep /var/log/messages
4. 进入对应进程下的fd文件
[root@hai7 ~]$cd /proc/1027/fd/
5. 查看文件列表,可以看到带有(deleted)的文件
[root@hai7 ~]$ll
lrwx------ 1 root root 64 Sep 6 14:15 3 -> socket:[28141]
l-wx------ 1 root root 64 Sep 6 14:15 4 -> /var/log/messages (deleted) <==丢失的文件
6. 恢复文件,查看丢失的文件,这里会显示内容,重定向到删除目录
[root@hai7 ~]$cat /proc/1027/fd/4>/var/log/messages
[root@hai7 ~]$ls /var/log/messages
/var/log/messages <==已恢复
$lsof -i tcp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 744 rpc 8u IPv4 15285 0t0 TCP *:sunrpc (LISTEN)
rpcbind 744 rpc 11u IPv6 15288 0t0 TCP *:sunrpc (LISTEN
用来删除执行中的程序或工作,kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看
格式
kill [选项] [参数]
选项
-l :列出指定编号的信息,不指定则列出全部的信息名称
-n:指定信号,编号或名称都可以
-u:指定用户
信号
编号 | 名称 | 作用 |
---|---|---|
1 | SIGHUP | 无须关闭进程而让其重读配置文件 |
2 | SIGINT | 终止正在运行的进程;相当于Ctrl+c\ |
3 | SIGQUIT | 相当于ctrl+\ |
9 | SIGKILL | 强制杀死正在运行的进程 |
15 | SIGTERM | 终止正在运行的进程 |
18 | SIGCONT | 继续运行 |
19 | SIGSTOP | 后台休眠 |
1: 找到对应PID
[root@hai7 ~]$ps -C nano
PID TTY TIME CMD
4763 pts/0 00:00:00 nano
2:终止进程,指定信号15
[root@hai7 ~]$kill -n 15 4812
[root@hai7 ~]$echo $$ <==查看当前bash进程
2189
[root@hai7 ~]$kill 2189 <==尝试终止进程,没有终止
[root@hai7 ~]$kill -9 2189 <==使用9信号,强制终止
[root@hai7 ~]$pidof httpd <==httpd有很多进程,也可以直接终止父进程
9919 9918 9917 9916 9915 9914 9913 9912 9909
[root@hai7 ~]$killall -15 httpd <==这里主要为说明killall用法
与pgrep用法相似,查找同时可以终止进程
选项 | 含义 |
---|---|
-signal | 发送信号给匹配到的进程 |
-u uid | effective user,生效者 |
-U uid | real user ,真正发起运行命令者 |
-t terminal | 与指定终端相关的进程 |
-l | 显示进程名(pgrep可用) |
-a | 显示完整格式的进程名(pgrep可用) |
-P pid | 显示指定进程的子进程 |
pkill -9 "^http"
[root@hai7 ~]$pkill -t pts/1 <==结束部分运行进程
[root@hai7 ~]$pkill -t pts/1 -9 <==连同终端一起关闭