十、系统监控


一、进程


1、进程的含义
程序运行时,进入内存,就叫进程
程序是静态的,消耗磁盘空间
进程是动态的,是cpu资源和内存

2、查看进程
a 显示所有包括终端的进程
x 显示所有包括不连接终端的进程(如守护进程)
u 显示进程所有者的信息
p 显示指定进程 ID 的信息
-e 显示所有进程
-f 显示进程的父进程
-l 以长列表的方式显示信息
-o 属性,… 显示定制的信
ps
ps aux
top
-elf
ps efx -o %cpu 查看某些特定信息
ps efx -o pid,%cpu


3、RHEL6 第一个进程init
RHEL7 第一个进程systemd

4、进程的状态
PID :进程的id
STAT :表示进程的状态
D 不能中断的进程(通常为IO)
R 正在运行中的进程
S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态
T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配
X 已经死掉的进程(这个好像从来不会出现)
Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
< 高优先级进程
N 低优先级进程
L 在内存中被锁了内存分页
s 主进程
l 多线程进程
+ 代表在前台运行的进程
TIME 进程实际运行的时间
COMMAND 进程运行了什么命令

5、top
动态查看系统进程,默认top每3s刷新一次
M 按内存排序
P 按cpu排序
r renice进程的nice值
k 杀掉进程
每隔1s刷新1次
top -d 1
z 改变颜色
看其他cpu状态(看其他core) 按0,1,2,3
top -bn1 非动态打印系统资源


6、杀进程,发信号
kill -15 pid 整洁的关闭
kill -9 pid 直接杀掉进程

前台转到后台 ctrl+z 将进程转入后台,并停止
jobs 查看后台的任务
后台运行
bg %任务号 在后台运行
fg %任务号 调到前台运行

杀掉后台的任务
kill -信号 %任务号
默认kill发出15号信号


7、pstree查看进程树
pgrep 进程搜索
选项:
pgrep –U root
pgrep–G redhat
eg:pgrep -u -t u1
pgrep -u u1 -l -t tty2


kill -9 3213
killall杀死进程树
eg:killall -9 sshd

8、进程优先级
优先级=优先的系数+nice
不同进程的优先系数不一样,由内核绝对系数
一般进程的优先级 20
用户可以调节nice值
nice -20到19(数值越大级别越低)
nice -n -20 程序 (没有运行的程序)
renice -n -20 pid号(已经运行的进程)
RH442调优讲修改系数
chrt
普通用户只能向正数调,相当于越调越慢

在top中修改nice
r --- pid --- nice值


二、系统状态


1、w查看当前系统的负载和登录系统的用户 uptime是第一行
15:23:46 up 3:34, 2 users, load average: 0.03, 0.05, 0.00
当前时间 系统登录时间 登录用户数 平均负载 1分钟 5内分钟 15分钟
平均负载数小于cpu数量,说明当前服务器没有压力

2、cat /proc/cpuinfo
grep -c 'processor' /proc/cpuinfo

3、vmstat 监控系统的状态
w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 512 5392 37460 213276 0 0 100 549 153 59 1 4 93 1 0


1)procs 显示进程相关信息

r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

2)memory 内存相关信息

swpd :表示切换到交换分区中的内存数量 ;

free :当前空闲的内存数量;

buff :缓冲大小,(即将写入磁盘的);

cache :缓存大小,(从磁盘中读取的);

3)swap 内存交换情况

si :由交换区写入到内存的数据量;

so :由内存写入到交换区的数据量;

4)io 磁盘使用情况

bi :从块设备读取数据的量(读磁盘);

bo: 从块设备写入数据的量(写磁盘);

5)system 显示采集间隔内发生的中断次数

in :表示在某一时间间隔中观测到的每秒设备中断数;

cs :表示每秒产生的上下文切换次数;

6)CPU 显示cpu的使用状态

us :显示了用户下所花费 cpu 时间的百分比;

sy :显示系统花费cpu时间百分比;

id :表示cpu处于空闲状态的时间百分比;

wa :表示I/O等待所占用cpu时间百分比;

st :表示被偷走的cpu所占百分比(一般都为0,不用关注);


关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

vmstat 1 每隔1秒打印一次状态,一直打印,Ctrl + c 结束
vmstat 1 5 每隔一秒钟打印一次状态,共打印5次

4、sar监控系统状态
sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果您系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。
1)查看网卡流量 sar -n DEV
2)查看历史负载 sar -q

5、free查看内存使用状况
[root@localhost ~]# free
total used free shared buffers cached
Mem: 326616 137332 189284 0 34480 73336
-/+ buffers/cache: 29516 297100
Swap: 2097144 1144 2096000


当前系统内存总大小为326616(单位是k)已经使用137332, 剩余189284. 其实真正剩余并不是这个189284, 而是第二行的297100, 真正使用的也是第二行的29516, 这是因为系统初始化时,就已经分配出很大一部分内存给缓存,这部分缓存用来随时提供给程序使用,如果程序不用,那这部分内存就空闲。所以,查看内存使用多少,剩余多少请看第二行的数据。另外我们还可以加-m 或者-g选项分别以M或G为单位打印内存使用状况:


5、netstat 查看网络状况
netstat -lnp 打印当前系统启动哪些端口
netstat -an 打印网络连接状况

6、抓包工具tcpdump
安装tcpdump命令:yum install -y tcpdump
tcpdump -nn -i eth0

在linux下给在线用户发消息
write 用户名
mesg n 不接受消息 (下线)
mesg y 接受消息 (上线)

原文地址:https://www.cnblogs.com/xmdjb/p/10949455.html