学习目标:
1、会使用Linux常用命令来查询系统信息
2、会使用Linux系统命令查看网络相关信息

任务1.1监控系统的状态
任务描述
主要实现查看系统负载信息和查看系统内存、网卡、进程等信息

任务实施

使用w查看当前系统的负载,示例如下:

linux监控文件修改api_linux监控文件修改api

查看服务器有几个cpu,示例代码如下:

linux监控文件修改api_系统资源_02

‘/proc/cpuinfo’这个文件记录了cpu的详细信息。目前市面上的服务器通常都是2颗4核cpu,在linux看来,它就是8个cpu。查看当前系统有几个cpu,我们可以使用命令‘cat /proc/cpuinfo |grep processor’查看分别有几个cpu,也可以使用命令‘grep -c ‘processor’ /proc/cpuinfo’查看一共有多少个cpu。

使用vmstat监控系统的状态,示例代码如下:

linux监控文件修改api_linux_03

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

我们使用 vmstat 查看系统状态的时候,通常都是使用下面的形式来查看的,示例如下。

linux监控文件修改api_linux_04

上面的代码表示,每隔一秒钟打印一次状态,共打印5次。

top显示进程所占系统资源,示例如下:

linux监控文件修改api_系统资源_05

这个命令用于动态监控进程所占系统资源,每隔3秒变一次。这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。重点在于: %CPU, %MEM, COMMAND 这些项目所代表的意义,RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top 状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。

经常用的一个命令 top -bn1 它表示非动态打印系统资源使用情况,示例如下:

linux监控文件修改api_linux监控文件修改api_06

和 top 命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。

free查看内存使用情况,示例如下:

linux监控文件修改api_示例代码_07

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

ps查看系统进程

作为系统管理员,一定要知道你所管理的系统都有那些进程在运行,在windows下只要打开任务管理器即可查看。在Linux下,其实在上面介绍的top命令就可以,但是不容易看,当然还有专门显示系统进程的命令,示例代码如下:

linux监控文件修改api_linux监控文件修改api_08

PID :进程的id,这个id很有用,在Linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill 进程的pid 有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid
STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要了解)
D 不能中断的进程(通常为IO)
R 正在运行中的进程
S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态
T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配
X 已经死掉的进程(这个好像从来不会出现)
Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
< 高优先级进程
N 低优先级进程
L 在内存中被锁了内存分页
s 主进程
l 多线程进程

  • 代表在前台运行的进程
    关于ps命令经常连同管道符一起使用,用来查看某个进程或者它的数量,示例如下:

上面的4是不对的,需要减掉1,因为使用了grep命令时,grep命令本身也算作一个。

netstat查看网络状况(如果系统没有这个命令,需要yum install -y net-tools进行安装),示例如下:

linux监控文件修改api_系统资源_09

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。笔者最常用的关于netstat的命令就是这个 netstat -lnp (打印当前系统启动哪些端口)以及 netstat -an (打印网络连接状况)这两个命令非常有用。一定要记住。
如果所管理的服务器是一台提供web服务(80端口)的服务器,那么就可以使用 netstat -an |grep 80 查看当前连接web服务的有哪些IP了。