LINUX监控一:监控命令
简单的整理一下常用的linux监控命令
top能实时显示CPU 和内存的使用状况。
top - 01:56:31 up 15:59, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.3%hi, 0.0%si, 0.0%st
Mem: 1012552k total, 369308k used, 643244k free, 87220k buffers
Swap: 2031608k total, 0k used, 2031608k free, 107636k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2301 root 20 0 867m 81m 7344 S 2.3 8.2 2:51.88 mongod
420 root 20 0 0 0 0 S 0.3 0.0 0:02.69 flush-253:0
1 root 20 0 19228 1496 1220 S 0.0 0.1 0:01.12 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:03.37 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.31 watchdog/0
7 root 20 0 0 0 0 S 0.0 0.0 1:23.72 events/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
13 root 20 0 0 0 0 S 0.0 0.0 0:00.84 sync_supers
14 root 20 0 0 0 0 S 0.0 0.0 0:00.52 bdi-default
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
第一行:系统概况
top - 01:56:31 up 15:59, 1 user, load average: 0.00, 0.00, 0.00
分别是:当前时间 系统连续运行的时间 当前登录的用户 平均负载
01:56:31 | 当前时间 |
up 15:59 | 连接运行时间 |
1 user | 当前登录的用户数 |
load average: 0.00, 0.00, 0.00 | 平均负载,分别为1分钟、5分钟、15分钟,该数值除以逻辑CPU的个数>5时表示CPU使用高。 |
第二行:任务情况
Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie | 共71个任务,1个运行,70个休眠,0个停止,0个僵死进程 |
第三行:CPU运行情况
Cpu(s): 0.3%us | 用户空间使用的CPU占比 |
0.0%sy | 系统空间使用的CPU占比 |
0.0%ni | 改变过优先级的进程战用的CPU的占比 |
99.3%id | 空间的CPU占比 |
0.0%wa | IO等待使用的CPU占比 |
0.3%hi | 硬中断的使用的CPU占比 |
0.0%si | 软中断使用的CPU占比 |
0.0%st |
第四行:内存
Mem: 1012552k total | 内存总大小 |
369308k used | 已经使用 |
643244k free | 空闲多少内存 |
87220k buffers | 缓存数量 |
第五行:交换分区
Swap: 2031608k total | 交换分区的总大小 |
0k used | 已经使用的交换分区大小 |
2031608k free | 空闲的交换分区大小 |
107636k cached | 被缓存的交换分区大小 |
第6行:
PID | 进程ID |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级。 |
VIRT | 进程使用的虚拟内存问题,单位KB。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小(真实内存大小). |
SHR | 共享内存大小,单位KB |
S | 进程状态。D不可中断的睡眠状态,R运行,S睡眠,T跟踪/停止,Z僵尸进程 |
%CPU | 上次更新到现在使用的CPU占比 |
%MEM | 进程使用的物理内存占比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程命令 |
2.vmstat
vmstat从总体上显示了系统的状况。一般画[ 两个参数,如vmstat 2 3表示2秒采取一次数据,一共采集3次
[root@node1 ~]# vmstat 2 3
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 632736 95324 108892 0 0 2 6 154 428 0 0 99 0 0
0 0 0 632712 95324 108892 0 0 0 0 144 491 1 0 99 0 0
0 0 0 632712 95324 108892 0 0 0 26 148 496 1 1 99 0 0
r | 运行队列 |
b | 阻塞的进程 |
swpd | 虚拟内存使用的大小,如果数值大于0,说明内存不够用 |
free | 空间的物理内存大小 |
buff | 用于缓存的物理内存大小 |
cache | cache占用的内存的大小 |
si | (swap in)第秒从磁盘读入swap的内存大小 |
so | (swap out)从swap 写入磁盘的 |
bi | (block in)块设备(比如硬盘)接收的块数量,块默认大小1024b.比如写磁盘就会有block in。 |
bo | (block out)块设备发送的块数量。比如读磁盘。一般来说,bi bo都不应该太大。 |
in | (interrupt) CPU 中断次数 |
cs | 每秒上下文切换的次数。在执行系统调用、程序切换等等时要进行上下文切换,很费CPU资源,如果程序总是在做上下文切换,可用的CPU资源就不多。 |
us | 用户的CPU时间 |
sy | 系统使用的CPU时间 |
id | (idle)空闲CPU时间 |
wa | (wait)等待IO的CPU时间 |
st |
相关参数:
[root@node1 ~]# vmstat --help
usage: vmstat [-V] [-n] [delay [count]]
-V prints version.
-n causes the headers not to be reprinted regularly.
-a print inactive/active page stats. 打印活动/不活动的页状态
-d prints disk statistics 打印磁盘情况
-D prints disk table 打印磁盘信息
-p prints disk partition statistics 打印磁盘分区信息
-s prints vm table 打印vm表
-m prints slabinfo slablinfo信息
-t add timestamp to output
-S unit size
delay is the delay between updates in seconds.
unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
count is the number of updates.
3.ps命令
[root@node1 ~]# ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
ps命令的参数非常多,常用的有
1)ps -ef 显示所有进程详细信息
2)ps -efH 所有进程的线程信息
3)ps -AL 长格式显示进程
4)ps -ax 显示服务器上进程
4.iostat
iostat是用来显示磁盘和CPU的情况:
[root@node1 ~]# iostat 2 2
Linux 2.6.32-358.el6.x86_64 (node1) 12/28/2015 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.41 0.00 0.35 0.04 0.00 99.20
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.00 0.00 0.00 288 0
sda 0.72 4.56 13.94 357190 1092500
dm-0 1.98 4.44 13.94 347810 1092448
dm-1 0.00 0.03 0.00 2376 0
deveice: 磁盘
tps: 每秒IO请求数
blk_read/s:每秒读的block个数
blk_wrtn/s:每秒写的block个数
blk_read: 一共读的block个数
blk_wrtn: 一共写的block个数
更详细的信息:
[root@node1 ~]# iostat -x
Linux 2.6.32-358.el6.x86_64 (node1) 12/28/2015 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.40 0.00 0.35 0.04 0.00 99.20
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
scd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 11.19 11.19 0.00
sda 0.19 1.09 0.07 0.65 4.49 13.95 25.49 0.00 2.58 1.72 0.12
dm-0 0.00 0.00 0.24 1.74 4.38 13.95 9.25 0.01 3.53 0.62 0.12
dm-1 0.00 0.00 0.00 0.00 0.03 0.00 8.00 0.00 4.53 1.39 0.00
5.free
[root@node1 ~]# free
total used free shared buffers cached
Mem: 1012552 463420 549132 0 100304 179744
-/+ buffers/cache: 183372 829180
Swap: 2031608 0 2031608
mem:系统层面的各指标.总内存1012522,使用了463420(包括 shared buffers cached),空闲free
-/+buffers/cache:程序层面的指标,shared buffers cached都是可以被程序使用的,所有算在空闲里面
swap:正常情况下不应该被使用,否则就是内存不够用。
6.netstat
[root@node1 ~]# netstat -a
Active Internet connections (servers and established) 网络连接(TCP)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:28017 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 0 *:27017 *:* LISTEN
tcp 0 0 localhost:ssh 192.168.75.1:49742 ESTABLISHED
tcp 0 1 localhost:46531 localhost:27017 SYN_SENT
tcp 0 1 localhost:35646 192.168.75.12:27017 SYN_SENT
tcp 0 0 localhost:ssh 192.168.75.1:58264 ESTABLISHED
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
Active UNIX domain sockets (servers and established) 本地UNIX套接字
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 24929 /tmp/mongodb-27017.sock
unix 2 [ ACC ] STREAM LISTENING 8691 @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 11532 public/cleanup
unix 2 [ ACC ] STREAM LISTENING 11539 private/tlsmgr
Recv-Q Send-Q 指tcp的接收和发送队列,一般情况下都应该为0,队列中没有任务需要等待。
local和foregine分别表示本机和外机的地址,星表示没数据。
state 状态。
常见参数
-a (all)显示所有选项
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
查找特定端口:
netstat -a |grep 27017