你们好,我是阿铭,从13年我开始作Linux运维培训,直接或间接学过我教程或课程的朋友应该有数十万人。大部分同窗给个人反馈是,Linux shell是很难啃的一个知识板块。虽然,你们学的很仔细,shell相关的语法也所有掌握,但当拿到一个需求时,就是写不出或写很差一个完美的shell脚本。php
这个现象很正常,举个例子,在金庸的武侠小说里,武功盖世秘籍有不少(如,降龙十八掌),对于一个普通人来说,就算各个招式都能打的倒背如流,然而并无什么卵用,由于他没有任何的内力。而咱们这个shell脚本其实就是一门“盖世绝学”,但你在没有修炼“内功”的状况下,shell知识点不管你学的多么好,依然不能写出好的代码来。java
这里所谓的“内功”就是经验。咱们常常听作开发的朋友讲,没写够10万行代码就不合格,有的企业招开发人员,也比较在乎他写过多少行代码,一个开发人员写过的代码越多,说明他的经验越丰富。咱们写shell脚本不也是写代码吗?记得,我刚作运维那年,几乎天天都在写shell脚本,简单的两三行,复杂的上百行,各类各样的小需求,感受仅仅一两个月,个人shell脚本能力有了明显的提高。node
所以,我准备出一个专栏《20天精通Linux Shell脚本》(拖到底部有彩蛋!),以20个实际工做场景的shell脚本案例展开讲解,它们不只涵盖了shell脚本常见的语法、思路以及技巧,并且还会扩展一些Linux相关的知识。但愿订阅本专栏的朋友可以耐心读完每个案例,而且必定要动手写一写,这样你才会真正学到其精髓。程序员
20个案例的核心内容是什么?web
下面是对这20个案例的简单介绍。shell
案例1,用shell脚本实现备份MySQL数据库,数据库的重要性不言而喻,因此作好数据备份是一个合格运维工程师的必备。数据库
案例2,监控一台Nginx服务器的状态码是否有502状态码,502在Nginx服务器上广泛存在,它极大影响了用户体验,一旦出现502问题就须要第一时间发现并找到问题所在。小程序
案例3,批量添加100个用户,并给用户设置随机密码,密码设定后还须要给它存放到一个日志文件里,方便查询。服务器
案例4,用shell脚本自动封访问量异常的IP,并每隔一段时间把再也不发起请求的IP给解封,这个功能彷佛在web服务器上很实用。多线程
案例5,用脚本监控本机的磁盘使用状况,包括使用空间以及inode使用量,磁盘空间一旦写满,会影响系统正常运行,有必要实时检查磁盘使用状况,一旦达到设定阈值要第一时间通知到咱们。
案例6,检测两台机器同一个目录下的文件是否有差别,在负载均衡集群中一般是多台服务器上跑了一样的网站,因此须要保证文件内容是一致的。
案例7,用shell脚本监控MySQL主从架构,看主从的状态是不是正常的,主从不正常就会致使数据不一样步,数据不一致将严重影响业务可用性。
案例8,用shell脚本编写一个运维工具,当运行它的时候,会列出一个命令列表,用户只须要按对应数字就能够运行列表中的命令。
案例9,用shell脚本监控本机的网卡流量,当网卡流量为0时,须要重启网卡。
案例10,用shell脚本检测指定域名是否快到期,以避免域名到期没有续费被回收。
案例11,给定一我的员列表,用shell脚本把这些人员分组,好比指定小组的个数,而后脚本能够自动地将这些人员随机地分红若干个小组。
案例12,当备份的数据库量很大时,若是使用传统的循环遍历方法会花费很长的时间,这是由于shell脚本默认是单线程的,而本脚本须要实现多线程,这样就能够提高备份数据库的速度。
案例13,在使用CDN的状况下,各地用户访问到的节点是不一样的,但若是某个节点有问题时,会影响到部分用户访问,因此须要写一个shell脚原本监测全部节点是否正常。
案例14,一台服务器上运行着Apache+PHP+MySQL服务,上面跑着不少网站,每增长一个网站都须要修改httpd.conf增长一个虚拟主机,而且须要在MySQL数据库里增长一个库,并增长一个MySQL的用户。若是是手动操做这些步骤仍是比较繁琐的,该shell脚本能够批量实现这些操做。
案例15,在工做中会遇到各类各样xml格式的文件,有时的需求是,须要把xml文件里面的内容进行格式化输出。
案例16,生产环境中,每每有多台Tomcat服务器在运行,有时须要重启Tomcat服务,若是手动执行则须要登陆每一台机器,很是麻烦,那么编写一个shell脚本自动登陆远程机器并重启Tomcat服务就颇有必要。
案例17,在咱们的服务器上跑着各类各样的服务,因此就有了不少日志,日志切割能够用shell脚本实现,可是切割完的老日志,随着时间的推移会愈来愈多,那么如何把这些老日志归档就须要写一个脚原本按照预设规则来完成。
案例18,一台阿里云的ECS里运行着Nginx+PHP-FPM+MySQL服务,近期收到IO使用率很高的告警,可是这个问题是一瞬间,时间很短,每次登陆这台机器的时候发现IO并无什么问题,因此写一个脚本监控磁盘IO的使用率,当有问题时须要近一步排查具体的问题。
案例19,一台Tomcat服务器上运行着多个实例,而每个实例都有记录日志,当遇到问题或者有什么特殊需求时,就须要挨个查看这些实例的日志,为了提高效率因此须要编写一个定制化的shell脚本。
案例20,虽然目前已经有了各类各样的工具能够实现代码部署,但在早期并无这样方便好用的工具,固然一些小公司也用不着这样的工具,而是用shell脚原本实现的。
学完这20个案例你将收获什么?
无论你是0基础的Linux初学者,仍是入行几年的老鸟,阅读完这20个案例,都会让你从中得到撰写shell脚本的技巧、思想以及Linux相关的技能。对于想要快速提高本身shell脚本能力的朋友来讲,这20个案例就像一剂良药,它们会助你在运维工做中越战越猛!
另外这个专栏对于java程序员以及php程序员也是有极大的帮助,我相信当你学完这20个实战案例并认真吸取其精华后,你就能够拥有至少两年的Linux shell实战经验!
专栏地址:《20天精通Linux Shell脚本》
彩蛋
安卓小程序端“51CTO订阅专栏”,专栏订阅优惠¥12