第十五章 linux系统日常管理

笔者在前面介绍的内容都为linux系统基础类的,如果你现在把前面的内容全部很好的掌握了,那最好了不过笔者要说的是,即使你完全掌握了,你现在还是不能作为一名合格的linux系统管理员的,毕竟系统管理员要会做的事情太多了本章以及后面章节笔者会陆续教给你作为linux系统管理员所必备的知识只要你熟练掌握那绝对可以胜任一个最初级的管理员职位,不过只是初级的,因为你还需要在日常的管理工作中获得成长
监控系统的状态

1. w查看当前系统的负载

[image]

相信所有的linux管理员最常用的命令就是这个’w’了,该命令显示的信息还是蛮丰富的第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等其实,在这些信息当中,笔者认为我们最应该关注的应该是第一行中的’load average:’后面的三个数值

第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值这个值的意义是,单位时间段内CPU活动进程当然这个值越大就说明你的服务器压力越大一般情况下这个值只要不超过你服务器的cpu数量就没有关系,如果你的服务器cpu数量为8,那么这个值若小于8,就说明你的服务器没有压力,否则就要关注一下了到这里你肯定会问,如何查看服务器有几个cpu

[image]

就是用这个命令了。’/proc/cpuinfo’这个文件记录了cpu的详细信息目前市面上的服务器通常都是24cpu,在linux看来,它就是8cpu。查看这个文件时则会显示8段类似的信息,而最后一段信息中processor :后面跟的是’7’。所以查看当前系统有几个cpu,你可以使用这个命令:’ grep -c 'processor' /proc/cpuinfo’ 。

[image]

2. vmstat监控系统的状态

[image]

上面讲的w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU,内存,磁盘等)有压力就无法判断了通过vmstat就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu.请重点关注一下红色标出的项

1procs显示进程相关信息

2memory内存相关信息

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

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

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

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

3swap内存交换情况

4io磁盘使用情况

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

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

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

6CPU显示cpu的使用状态

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

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

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

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


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

[image]

笔者用vmstat时,经常用这样的形式,’vmstat 1 5’表示每隔1秒钟打印一次系统状态,连续打印5当然你也可以‘vmstat 1 ‘表示每隔1秒钟打印一次系统状态,一直打印,除非你按ctrl + c强制结束

3. top显示进程所占系统资源

[image]

这个命令用于动态监控进程所占系统资源,每隔3秒变一次这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(load average进程数(Tasks、cpu使用情况内存使用情况以及交换分区使用情况其实上面这些内容可以通过其他命令来查看,所以用top重点查看的还是下面的进程使用系统资源详细状况这部分东西反映的东西还是比较多的,不过需要你关注的也就是几项:%CPU, %MEM, COMMAND这些项目所代表的意义,不用笔者介绍相信你也能看懂吧

[image]

另外笔者使用top命令时还常常使用-bn1这个组合选项,它表示非动态打印系统资源使用情况,可以用在脚本中,你不妨记一下,以后也许你会用得到

4. sar监控系统状态

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

1)查看网卡流量‘sar -n DEV ‘

[image]

IFACE这列表示设备名称,rxpck/s表示每秒进入收取的包的数量,txpck/s表示每秒发送出去的包的数量,rxbyt/s表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量后面几列不需要关注[image]

另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果你的系统格式Redhat或者CentOS那么sar的库文件一定是在/var/log/sa/目录下的

[image]

2)查看历史负载‘sar -q’

[image]

这个命令有助于我们查看服务器在过去的某个时间的负载状况

关于sar的介绍笔者不愿写太多,毕竟介绍太多会给你带来更多的压力,其实笔者介绍这个命令的目的只是让你学会查看网卡流量(这是非常有用的)如果你很感兴趣那就man一下吧,它的用法太多了

5. free查看内存使用状况

[image]

只要你敲一个free然后回车就可以当前系统的总内存大小以及使用内存的情况从上图中可看到当前系统内存总大小为235128(单位是k)已经使用120368,剩余94760。其实真正剩余并不是这个94760,而是第二行的213388,真正使用的也是第二行的21740。这是因为系统初始化时,就已经分配出很大一部分内存给缓存,这部分缓存用来随时提供给程序使用,如果程序不用,那这部分内存就空闲所以,[image]

6. ps查看系统进程

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

[image]

对了,就是这个’ps aux’。笔者也经常看到有的人喜欢用’ps -elf’大同小异,显示的信息基本上是一样的。 ps命令还有更多的用法,笔者不再做介绍,因为你只要会用这个命令就足够了,请man一下下面介绍上图上出现的几个参数的意义

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命令是笔者在工作中用的非常多的命令之一,所以请记住它吧关于ps命令的使用,笔者经常会连同管道符一起使用,用来查看某个进程或者它的数量

[image]

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

7. netstat查看网络状况

[image]

netstat命令用来打印网络连接状况系统所开放端口路由表等信息笔者最常用的关于netstat的命令就是这个[image]

如果你所管理的服务器是一台提供web服务(80端口)的服务器,那么你就可以使用netstat -an |grep 80开查看当前连接web服务的有哪些IP

8.抓包工具tcpdump

有时候,也许你会有这样的需求,想看一下某个网卡上都有哪些数据包,尤其是当你初步判定你的服务器上有流量攻击这时,使用抓包工具来抓一下数据包,就可以知道有哪些IP在攻击你了

[image]

如果你没有tcpdump这个命令,需要用’yum install -y tcpdump ’命令去安装一下上图中第三列和第四列显示的信息为哪一个IP+port在连接哪一个IP+port,后面的信息是该数据包的相关信息,如果不懂也没有关系,毕竟你不是专门搞网络的,而这里需要你关注的只是第三列以及第四列。-i选项后面跟设备名称,如果你想抓eth1网卡的包,后面则要跟eth1.至于-nn选项的作用是让第三列和第四列显示成IP+端口号的形式,如果不加-nn则显示的是主机名+服务名称

【linux网络相关

1. ifconfig查看网卡IP

ifconfig类似与windowsipconfig,不加任何选项和参数只打印当前网卡的IP相关信息(子网掩码网关等)

[image]

当然ifconfig后面可以跟设备名,只打印指定设备的IP信息

[image]

windows下设置IP非常简单,然而在命令窗口下如何设置?这就需要去修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0了,如果是eth1那么配置文件是/etc/sysconfig/network-scripts/ifcfg-eth1.

[image]

如果想修改IP的话,则只需要修改IPADDR , NETMASK以及GATEWAY即可如果你的linux是通过dhcp服务器自动获得的IP,那么配置文件肯定和上图中的不一样,BOOTPROTO那里会是’dhcp’,如果你要配置成静态IP的话,这里就需要写成’none’。关于如何设置IP以及子网掩码的这些知识属于网络相关的基础知识了,如果你对这方面比较陌生的话,建议你去看看网络相关的资料当修改完IP后需要重启网络服务新IP才能生效,重启命令为’ service network restart’

[image]

另外如果你有多个网卡的情况时,只想重启某一个网卡的话,还可以使用这个命令

[image]

ifdown即停掉网卡,ifup即启动网卡2.给一个网卡设定多个IP

linux系统中,网卡是可以设定多重IP的,笔者曾经管理的一台服务器的eth1就设定了5IP,实在是够变态的

[image]

ifcfg-eth0复制成ifcfg-eth0:1然后编辑ifcfg-eth0:1修改DEVICE以及IPADDR保存后重启网卡

[image]

再次查看eth0上就有两个IP3.查看网卡连接状态

[image]

mii-tool这个命令用来查看网卡是否连接,如图显示[image]

如果你的机器是虚拟机,那么你使用该命令时应该显示成如下:

[image]

这是因为使用的是虚拟网卡,不支持这个工具查看不用多关注此,你记住这个mii-tool命令即可,它可是会经常用到的

4.更改主机名

当装完系统后,默认主机名为localhost,使用hostname就可以知道你的linux的主机名是什么

[image]同样使用hostname可以更改你的主机名

[image]

下次登录时就会把命令提示符[image]中的’localhost’更改成’Aming’。不过这样修改只是保存在内存中,下次重启还会变成未改之前的主机名,所以需要你还要去更改相关的配置文件’/etc/sysconfig/network’。

[image]

HOSTNAME=localhost.localdomain修改成你想要的主机名,这样再重启就会读取这个配置文件中的HOSTNAME.

5.设置DNS

DNS是用来解析域名用的,平时我们访问网站都是直接输入一个网址,而dns把这个网址解析到一个IP。关于dns的概念,如果你很陌生的话,那就去网上查一下吧linux下面设置dns非常简单,只要把dns地址写到一个配置文件中即可这个配置文件就是[image]

resolv.conf有它固有的格式,一定要写成’nameserver IP’的格式,上面那行以’;’为开头的行是一行注释,没有实际意义,建议写两个或多个namserver,默认会用第一个namserver去解析域名,当第一个解析不到时会使用第二个linux下面有一个特殊的文件[image]

它的格式如上图,每一行作为一条记录,分成两部分,第一部分是IP,第二部分是域名关于hosts文件,有几点需要你注意:

1)一个IP后面可以跟

最后修改时间为:2014 年 08 月 13 日 02 时 52 分 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论