Linux管理
1.W是查看Linux系统信息的负载
最需要关注的是load average后边的
2.用vmstat命令来监控系统状态。
#vmstat
r:表示运行或等待cpu时间的片的进程数。不要误认为等待cpu时间片意味着这个进程没有结束,实际上某一时刻的1个cpu只能一个进程占用,其他进城只能等待,而这些等待cpu资源的进程依然是运行状态。如果该数值长期大于cpu的个数,则说明cpu资源不够用了
b:表示等待资源的进程数,这个资源指的是I/O、内存等。如果当磁盘读写非常频繁的时候,写数据就会很慢,此时cpu运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,那只能等待进程慢慢的写入磁盘,这个进程就是b这个状态,如果数值长期大于1,则需要关注一下。
si:表示由交换区写入内存的数据量,单位为KB。
so:表示有内存写入交换去的数据量,单位为KB。
bi:表示从块设备读取数据的量(读磁盘),单位为KB。
bo:表示从块设备写入数据的量(写磁盘),单位为KB。
用vmstat查看系统状态时,通常会使用如下形式:
#vmstat 1 5:每个一秒输出一次,共输出5次
#vmstat 1:每隔一秒输出1次并且一直处于输出状态,按Ctrl+C停止。
3.用top命令来显示进程所占的系统资源。
top命令用与动态监控进程所占的系统资源,每三秒变一次,他的特点是将占用系统资源(cpu、内存、磁盘I/等)最高进程放在最前面。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比。在top状态下使用shift+m键可以按照内存使用大小排序,按1可以列出所有核cpu的使用状态,按q键可以退出top状态。
#top –bn1:表示非动态打印系统资源的使用情况,可以用在shell脚本中。
他和top命令唯一的区别是他可以一次性输出所有信息而非动态显示
-d:指定延迟时常,默认单位为秒
top –d 1 //每一秒刷新一次
-b:刷屏显示(默认一屏显示不完)
top –d 1 –b
-n:显示几屏后退出
top –d 1 –b –n 3
备注:
M:根据驻留内存大小进行排序
P:根据cpu使用百分比进行排序
T:根据累计时间进行排序
l:是否显示平均负载和启动时间
t:是否显示进行和cpu状态相关信息
m:是否显示内存相关信息
c:是否显示完整的命令行信息
q:退出top
k:终止摸个进程
按下k后会出现PID to kill:,此时将要进行杀死的进程号写在这里回车就行了。
4.用sar命令监控系统状态
与其他监控系统的工具相比,他可以打印历史信息,可以显示从当天零点开始到当前时刻的系统状态信息。
如果系统没有安装这条命令,可以使用yum install –y sysstat来安装
#sar –q:用来查看历史负载;有助于我们查看服务器在过去某个时间的负载状况。
#sar –n DEV
如果自己服务器丢包严重,可以查看一下网卡流量是否异常,如果rxpck/s那一列的数值大于4000,或者是rxkB/s这一列的数值大于5000000,有极大的可能是你被攻击了,如果你自己在复制数据中查看这两个人数据的数值特别大,则例外。
IFACE:表示设备的名称
rxpck/s:表示每秒进入收取的包的数量
txpck/s:表示每秒发送出去的包的数量
rxkb/s:表示每秒收取的数据量
txkb/s:表示每秒发送的数据量
5.用free命令来查看内存使用情况
total:内存总的大小
used:真正使用的实际内存大小
free:剩余物理内存大小
buff/cache:分配给buffer和cache的内存总共有多少
buffer:数据经过cpu计算,即将写入磁盘的,这是用的内存为buffer
cpu:要计算时,需要把数据从磁盘读出来,临时先放到内存中,这部分内存就是cache
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况
-m:以MB为单位显示内存使用情况
-o:不显示缓冲区调节列
-s:<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列
-V:现实版本信息
6.BSD风格的
a:所有与终端有关的进程
u:显示进程是由哪个用户启动的
x:所有与终端无关的进程,但不全是。所以通常和a一起使用。
用ps命令来产看系统进程
PID:表示进程的ID,我们在工作中如果想要关闭某个进程,可以使用“kill进程的PID”,不能终止的话还可以加-9,这样虽然可以结束进程,但严重时会造成数据丢失,万不得已最好别用
显示前五行:
备注:
TTY:所关联到的终端,其中的?表示与终端无关
STAT:表示进程状态
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组的进程
比如启动一个bash,在这之前可以启动多个进程,这些进程同属于一个终端;
而前台进程就是从命令行输入的进程,和当前终端相关的。
l:多线路进程
s:会话进程首进程
7.Sysv风格
e:显示所有进程
l:长格式显示
F:额外的完整格式(更多字段)
常用组合:-elF
-ef
-eF
备注:PPID:父进程的ID
NI:优先级(Nice)
PRI:进程优先级编号
WCHAN:进程正在睡眠的内核函数名称:该函数的名称是从/root/system.map文件中获得的
FLAGS:与进程相关的数字标识
PSR:正在运行在哪个CPU上
8.其它选项
-c:可以制定字段
格式:ps –o属性1,属性2,属性3
9.tcpdump工具
当输入命令:tcpdump –nn –I ens33按回车后会出现很多字符串,之后按下Ctrl+C会停止,画品越快说明网卡上的数据包越多。
#tcpdump –nn –i en33 –c 100
-c是指定抓包数量,抓够了自动退出,不用人为取消。
10.uptime
解释:告诉系统运行了多长时间
备注:a.00:55:02 当前时间
b.up 12:38 运行时长
c.2 users 登陆了多少个用户
d.load average:0.00,0.00,0.00 平均负载值
注意:与top命令结果第一行相同
11.进程间通信
A.抛出问题:
Linux各进程之间是不知道彼此存在的,那么两个进程间通信怎么办
比如本机是http的服务终端,也可以是测试端,
思路:可以模拟成两个主机上的进程,因此可以在本机内部完成通信,有这样几种机制:
共享内存:一个进程往内存写东西,一个去读,这样就能通信了。
信号: 一个进程向另一个进程发一个非常简短的信息叫做信号
旗语: 类似于一个进程向另一个进程打手势。
B.重点讲信号
1.显示所有可用信号
kill –l
kill命令主要是用来终止进程的;
2.指定一个信号
a.信号号码:
如:kill -1
Kill -9
b.信号名称:
如:kill –SIGKILL
Kill –SIGHUP
c.信号名称简写:
如:kill –KILL
Kill –HUP