第1章
Shell脚本编程入门
随着“互联网+”时代的到来,Linux操作系统在服务器领域的市场份额不断增长。由于Linux服务器在互联网企业的大规模部署和应用,因此需要一批专业的技术人员去管理Linux服务器,即Linux运维工程师。
Linux运维工程师的基本工作之一是搭建相关编程语言的运行环境,使程序能够高效、稳定、安全地在服务器上运行。优秀的Linux运维工程师不但需要拥有架设服务器集群的能力,还需要拥有使用不同的编程语言开发常用的自动化运维工具或平台的能力,从而实现高效运维,提升运维团队整体作战实力,为业务提供强有力的支撑,保障业务和服务7 × 24小时不间断运行。
Linux运维工程师日常工作包括但不限于以下内容。
● 自动部署多版本操作系统,如批量部署CentOS 7.7或CentOS 8.0等,并针对不同版本操作系统的参数进行调试和优化。
● 部署程序运行环境,如网站后台开发语言采用PHP,搭建Nginx、Apache、MySQL以及PHP运行时所需环境等。
● 及时修复操作系统漏洞,防止服务器被攻击,这些漏洞包括Linux操作系统本身的漏洞和各个应用软件的漏洞。
● 根据项目需求批量升级软件,如JDK 1.8在性能方面获得了重大突破,如果现阶段服务器压力较大,可以考虑将JDK 1.7升级到JDK 1.8。
● 监控服务器运行状态,保障服务持续可用,业务不受宕机影响。服务器宕机后可以实现对业务无感知的集群快速切换,保障业务可持续运营。
● 分析系统和业务日志,及时发现服务器或网络存在的慢请求增多和网络超时等问题,第一时间通知相关人员修复和解决相关问题。
● 对服务器资源合理规划和精确管理,节省成本,控制预算。
● 分析反向代理或负载均衡器的连接数或运行日志,评估服务器性能和用户行为。
● 对服务器不断加固,如合理设置防火墙策略,部署入侵检测系统,及时发现可能存在的系统漏洞或系统异常行为。
因此,Linux运维工程师需要熟练掌握Shell编程及相关的自动化运维工具。本章从Shell脚本编程入门开始讲解,带领读者踏上Linux自动化运维之路。
1.1
熟练掌握Linux指令的重要性
熟练掌握Linux指令是Linux系统架构师的必备技能之一。Linux相关从业者,尤其是Linux系统管理员和Linux系统架构师,应熟练掌握Linux指令的常用操作,原因如下。
● 指令比图形界面更加高效。
● 指令可以完成图形界面不能完成的任务,如自动批量部署500台服务器。
● 指令比图形界面更加灵活。
Linux系统初始化环境脚本和Web应用脚本主要是Shell指令和进程判断等的组合体,因此熟练掌握并应用Linux指令是学习Shell编程的必备条件之一,而熟练掌握Shell编程是学习Linux自动化运维的基础和前提,为以后进阶学习基于Python的自动化运维打下坚实的基础。一句话总结:“基础不牢,地动山摇”。
1.2
Shell的基本概念
Shell是Linux操作系统指令集的概称,是属于操作系统层面的、基于指令集的人机交互界面的脚本级程序运行环境。
Shell是一种操作系统的应用级脚本。Shell脚本提供了一个人机交互界面,用户通过该界面访问可操作系统内核的服务。
1.初识Shell脚本
计算机只能理解由0和1组成的二进制语言。
早期计算机通过二进制语言来执行指令。二进制语言对人类来说难以理解,读、写都很不友好。后来,操作系统里提供了一种叫作Shell的特殊程序,Shell接收英文格式(大多数情况下是英文)指令,如果指令有效,就会被传递给内核,并执行一系列操作。
Shell是用户和Linux内核沟通的“桥梁”,用户的大部分工作是通过Shell完成的。Shell既是一种指令语言,又是一种脚本设计语言。作为指令语言,它交互式地解释和执行用户输入的指令;作为脚本设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。