运维开发网

Red Hat Enterprise Linux 8 第四课

运维开发网 https://www.qedev.com 2021-04-12 13:16 出处:51CTO 作者:applehdf
Vim文本编辑器Vim的发布最早可以追溯到1991年,英文全称为:“Vi IMproved”,也就是对vi编辑器的提升版本,其中最大的改进当属对代码的着色功能,亦有些编程场景能够自动修正错误代码。每当在讲课时遇到需要让学生记住的知识点时,为了能让他们打起精神来,我都会突然提高嗓门,因此有句话他们记得尤其深刻:“在Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。而且在日常工
Vim文本编辑器

Vim的发布最早可以追溯到1991年,英文全称为:“Vi IMproved”,也就是对vi编辑器的提升版本,其中最大的改进当属对代码的着色功能,亦有些编程场景能够自动修正错误代码。

每当在讲课时遇到需要让学生记住的知识点时,为了能让他们打起精神来,我都会突然提高嗓门,因此有句话他们记得尤其深刻:“linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。刘遄老师写作本书的目的是让读者切实掌握linux系统的运维方法,而不是仅仅停留在“会用某个操作系统”的层面上,所以我们这里选择使用Vim文本编辑器,它默认会安装在当前所有的Linux操作系统上,是一款超棒的文本编辑器。

Vim之所以能得到广大厂商与用户的认可,原因在于Vim编辑器中设置了三种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法(见图4-1)。

命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

输入模式:正常的文本录入。

末行模式:保存或退出文档,以及设置编辑环境。

Red Hat Enterprise Linux 8 第四课

命令模式中最常用的一些命令

命令作用
dd删除(剪切)光标所在整行
5dd删除(剪切)从光标处开始的5行
yy复制光标所在整行
5yy复制从光标处开始的5行
n显示搜索命令定位到的下一个字符串
N显示搜索命令定位到的上一个字符串
u撤销上一步的操作
p将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。末行模式中常用的命令如表4-2所示。

表4-2                                                   末行模式中最常用的一些命令

命令作用
:w保存
:q退出
:q!强制退出(放弃对文档的修改内容)
:wq!强制保存退出
:set nu显示行号
:set nonu不显示行号
:命令执行该命令
:整数跳转到该行
:s/one/two将当前光标所在行的第一个one替换成two
:s/one/two/g将当前光标所在行的所有one替换成two
:%s/one/two/g将全文中的所有one替换成two
?字符串在文本中从下至上搜索该字符串
/字符串在文本中从上至下搜索该字符串

编写Shell脚本

可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性。要想正确使用Shell中的这些功能特性,准确下达命令尤为重要。Shell脚本命令的工作方式有两种:交互式和批处理。

交互式(Interactive):用户每输入一条命令就立即执行。

批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

判断用户的参数

学习是一个登堂入室、由浅入深的过程。在学习完Linux命令、掌握Shell脚本语法变量和接收用户输入的信息之后,就要踏上新的高度—能够进一步处理接收到的用户参数。

在本书前面章节中讲到,系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错;反之则自动创建。Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回非零值。条件测试语法的执行格式如图4-16所示。切记,条件表达式两边均应有一个空格。

Red Hat Enterprise Linux 8 第四课

图4-16  条件测试语句的执行格式


按照测试对象来划分,条件测试语句可以分为4种:

文件测试语句;

逻辑测试语句;

整数值比较语句;

字符串比较语句。

    可用的整数比较运算符

操作符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于
 if条件测试语句

if条件测试语句可以让脚本根据实际情况自动执行相应的命令。从技术角度来讲,if语句分为单分支结构、双分支结构、多分支结构;其复杂度随着灵活度一起逐级上升。

if条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。单分支的if语句属于最简单的一种条件判断结构,语法格式如图4-17所示。

Red Hat Enterprise Linux 8 第四课

 for条件循环语句

for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,当要处理的数据有范围时,使用for循环语句再适合不过了。for循环语句的语法格式如图4-20所示。

Red Hat Enterprise Linux 8 第四课

while条件循环语句

while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。while语句的语法格式如图4-21所示。

Red Hat Enterprise Linux 8 第四课

case条件测试语句

如果您之前学习过C语言,看到这一小节的标题肯定会会心一笑“这不就是switch语句嘛!”是的,case条件测试语句和switch语句的功能非常相似!case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。case语句的语法结构如图4-22所示。

Red Hat Enterprise Linux 8 第四课


计划任务服务程序

经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。尽管我们现在已经有了功能彪悍的脚本程序来执行一些批处理工作,但是,如果仍然需要在每天凌晨两点敲击键盘回车键来执行这个脚本程序,这简直太痛苦了(当然,也可以训练您的小猫在半夜按下回车键)。接下来,刘遄老师将向大家讲解如何设置服务器的计划任务服务,把周期性、规律性的工作交给系统自动完成。

计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解。

一次性计划任务:今晚23点30分重启网站服务。

长期性计划任务:每周一的凌晨3点25分都把/home/wwwroot目录打包备份为backup.tar.gz。

一般可以会使用“at now +2 MINUTE”的方式操作,这样代表2分钟(MINUTE)后执行这个任务,也可以替代成小时(HOUR)、日(DAY)、月(MONTH)等词汇:

[root@Linuxprobe ~]# at now +2 MINUTE
warning: commands will be executed using /bin/sh
at> systemctl restart httpd
at> 此处请同时按下<Ctrl>+<d>键来结束编写计划任务
job 3 at Wed Oct 14 22:50:00 2020

还有些时候,我们会希望linux系统能够周期性地、有规律地执行某些具体的任务,那么linux系统中默认启用的crond服务简直再适合不过了。创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。crontab命令的参数及其作用如表4-7所示。

表4-7                                               contab命令的参数及其作用

参数作用
-e编辑计划任务
-u指定用户名称
-l列出任务列表
-r删除计划任务

在正式部署计划任务前,请先跟刘遄老师念一下口诀“分、时、日、月、星期 命令”。这是使用crond服务设置任务的参数格式(其格式见表4-8)。需要注意的是,如果有些字段没有被设置,则需要使用星号(*)占位,如图4-23所示。

Red Hat Enterprise Linux 8 第四课

Red Hat Enterprise Linux 8 第四课


0

精彩评论

暂无评论...
验证码 换一张
取 消