高性能Linux服务器运维实战:shell编程、监控告警、性能优化与实战案例
上QQ阅读APP看书,第一时间看更新

2.6 企业生产环境shell脚本案例汇总

通过前面介绍的shell知识,可以轻松地编写shell脚本了,本节主要介绍一些企业中常用、常见的shell脚本应用案例,读者可以在自己编写shell程序的时候,参考这些脚本的编写逻辑和思路。

因为环境不同,下面所有脚本仅仅是个示例,如果要拿过来使用,需要对脚本中的IP、路径、用户等特殊信息进行修改。

2.6.1 统计Linux进程相关数量信息脚本

这个脚本是对系统中运行的进程数和进程状态进行一个整体统计,内容如下:

这个脚本主要学习的是编写的逻辑和思路。通过这个思路可以延伸出多个服务器状态监测脚本。

2.6.2 监控主机的磁盘空间脚本

对磁盘空间的监控,也可以通过脚本完成,下面脚本完成的功能是监控每个磁盘分区,当磁盘分区使用空间超过90%时,就通过sendEmail来发送邮件告警。脚本内容如下:

对磁盘的监控来说,这个脚本非常有用,可以设置告警的阈值,超过阈值,就发送邮件进行告警。sendEmail是个开源工具,可以从http://caspian.dotconf.net/menu/Software/SendEmail/下载最新版本。

2.6.3 批量自动创建用户脚本

Linux运维中经常需要批量创建用户。下面这个脚本完成的功能就是批量创建一批用户,用户名是有规律指定的,密码是随机生成的,脚本执行完毕,用户名和密码都保存在文件中。脚本内容如下:

这个脚本中没有特别需要修改的地方,复制代码,直接执行即可,默认会创建ixdba1~ixdba10这10个系统用户,用户号和密码保存在list_user文件中。

2.6.4 服务器状态监控脚本

对服务器的状态监控有多种方式,非常灵活,下面是日常运维最常用的几种方式,通过脚本实现了自动监控。

1.根据PID过滤进程所有信息

这个脚本是根据PID过滤进程所有信息,然后给出进程状态和占用资源信息,代码如下:

2.根据进程名查看进程状态

此脚本是根据输入程序的名字过滤出所对应的PID,并显示出详细信息,代码如下:

3.根据提供的用户查询该用户所有信息

此脚本是根据用户名查询该用户的所有信息,代码如下:

2.6.5 Linux加固系统的自动化配置脚本

加固系统是Linux基础运维的必备工作,下面这个脚本完成的功能是对系统用户和账号进行安全加固,脚本内容如下:

2.6.6 检测MySQL服务状态脚本

1.检查MySQL服务是否存活

下面是一个最简单的监控MySQL状态的脚本,内容如下:

这个脚本其实是借助了mysqladmin命令,这个是需要大家牢记的。

2.检查MySQL主从同步状态

MySQL主从复制架构在企业中应用很广,而对主从复制状态的监控,也是运维必备的工作。如何监控主从复制状态呢?看下面脚本的监控逻辑,内容如下:

这个脚本就是通过登录MySQL,然后查询主从复制的两个状态值Slave_SQL_Running和Slave_IO_Running,如果两个值都是Yes,那么就认为正常。其中的USER和PASSWD需要更改为自己环境的数据库用户名和密码。

2.6.7 备份MySQL脚本

对MySQL数据库进行备份是运维必需的工作之一,备份一般是通过写脚本,然后将脚本放到计划任务中自动完成的,本节介绍一下常用的自动备份脚本如何编写。

1.基于mysqldump的备份脚本

下面这个脚本是基于mysqldump的备份,也就是将数据库备份成SQL文件,内容如下:

对MySQL进行备份,在数据量较少的时候使用mysqldump还是很方便的,而在大量数据需要备份时,这个mysqldump就力不从心了,需要考虑主从或者其他备份方案。

2.通过mysqldump备份并压缩备份文件的脚本

下面这个脚本是上面脚本的升级版本,内容如下:

这个脚本也是通过mysqldump进行数据库的备份,不同的是它对备份出来的SQL文件进行了压缩和校验,并且删除一周之前的备份。

2.6.8 一键自动化安装Nginx脚本

一键自动化安装脚本,对于自动化运维来说,非常有用,下面就是一个简单的一键自动化安装脚本,内容如下:

这个脚本仅仅编写了一键安装Nginx的功能,还有更多的,例如,一键安装MySQL、PHP、Zabbix等,大家可以仿照Nginx的例子自行编写。

2.6.9 查找指定网段活跃IP脚本

下面脚本用来查找指定网段内活跃的IP地址,查找结果自动重定向到ip.txt文件中,以备查验,脚本内容如下:

2.6.10 监控网站页面是否正常访问脚本

监控网页状态是Web运维的必备工作。如何监控网页状态呢?下面给出一个思路,代码如下:

这段代码是通过curl获取网页的状态码。如果状态码返回200,那么认为正常,否则认为异常,并将监控状态写到日志文件中。其实对网页的监控,大部分都是通过页面返回的状态码来判断的。

shell的熟练编写,语法是基础,更多的是多实践、多练习,从别人给出的案例中找到编写的思路和逻辑。另外,编写shell脚本,一定要加上注释。