linux编辑器Vim与Shell脚本、流程控制语句与计划任务程序Crond

本文介绍了Linux系统管理中Vim编辑器的使用,包括配置主机名、网卡信息和软件仓库。接着讲解了Shell脚本的编写,涉及参数接收、条件测试和流程控制语句。最后,探讨了一次性和周期性计划任务的设置,如at和crontab。通过实例展示了如何在Linux环境中进行高效自动化操作。
摘要由CSDN通过智能技术生成

一、Vim文本编辑器

是vi编辑器的提升版本,最大的改进当属添加代码着色的功能,在某些场景能够自动修正错误代码。同时vim编辑器设置了三种模式:命令模式、末行模式、编辑模式。每种模式都支持不同的命令快捷键。

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

在这里插入图片描述

输入模式:正常的文本输入,i键进入光标当前位置、a键进入光标后一位、o键在光标的下面再建一空行

末行模式:保存或退出,设置编辑环境

在这里插入图片描述

1、配置主机名称

主机之间可以通过类似于域名的名称来互相访问,主机名大多保存在/etc/hostname,通过vim编辑器修改文件,可以使用hostname检查是否修改成功。

2、配置网卡信息

网卡ip地址配置的是否正确是两台服务器可以相互通信的前提,配置网络服务就是编辑网卡配置文件。网卡配置文件存放在/etc/sysconfig/network-scripts中,文件为ifcfg-nes160。使用vim编辑器修改网卡文件,参数分别为:

设备类型:TYPE=Ethernet
地址分配模式:BOOTPROTO=static
网卡名称:NAME=ens160
是否启动:ONBOOT=yes
IP地址:IPADDR=192.168.10.10
子网掩码:NETMASK=255.255.255.0
网关地址:GATEWAY=192.168.10.1
DNS地址:DNS1=192.168.10.1

修改保存后,重启网卡设备

nmcli connection reload ens160

3、配置软件仓库

YUM与DNF软件仓库的配置文件是通用的,建议在rhel8中使用dnf,因为它更高效,支持多线程安装软件。在/etc/yum.repos.d/中配置文件,步骤为:

[root@linuxprobe ~]# cd /etc/yum.repos.d/
[root@linuxprobe yum.repos.d]# vim rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

仓库名称:具有唯一性的标识名称,不应与其他软件仓库发生冲突。
描述信息(name):可以是一些介绍性的词,易于识别软件仓库的用处。
仓库位置(baseurl):软件包的获取方式,可以使用FTP或HTTP下载,也可以是本地的文件(需要在后面添加file参数)。
是否启用(enabled):设置此源是否可用;1为可用,0为禁用。
是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。
公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。

按配置参数中所填写的仓库位置挂载光盘,并把光盘挂载信息写入/etc/fstab文件中

[root@linuxprobe yum.repos.d]# mkdir -p /media/cdrom 
[root@linuxprobe yum.repos.d]# mount /dev/cdrom /media/cdrom
mount: /media/cdrom: WARNING: device write-protected, mounted read-only.
[root@linuxprobe yum.repos.d]# vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0

尝试使用软件仓库的dnf命令来安装Web服务,软件包名称为httpd,安装后出现“Complete!”则代表配置正确:

[root@linuxprobe ~]# dnf install httpd -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
AppStream 3.1 MB/s | 3.2 kB 00:00
BaseOS 2.7 MB/s | 2.7 kB 00:00
Dependencies resolved.
………………省略部分输出信息………………
Installed:
httpd-2.4.37-10.module+el8+2764+7127e69e.x86_64
apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-openssl-1.6.1-6.el8.x86_64
apr-1.6.3-9.el8.x86_64
apr-util-1.6.1-6.el8.x86_64
httpd-filesystem-2.4.37-10.module+el8+2764+7127e69e.noarch
httpd-tools-2.4.37-10.module+el8+2764+7127e69e.x86_64
mod_http2-1.11.3-1.module+el8+2443+605475b7.x86_64
redhat-logos-httpd-80.7-1.el8.noarch

Complete!

二、编写Shell脚本

Shell脚本命令工作方式有以下两种:
交互式:用户输入一条命令就立即执行;
批处理:由用户事先编写一个完整的shell脚本,Shell会一次性执行脚本中诸多命令。

Shell脚本格式

#脚本声明(#!),告诉系统使用哪种Shell解释器来执行该脚本
#!/bin/bash
#命令....

1、接收用户参数

为了让ShellShell脚本程序更好满足客户一些实时需求,内设了用于接收参数的变量,变量之间使用空格间隔。
$0对应的是当前Shell脚本程序的名称,
$#对应的是总共有多少参数,
$对应所有位置的参数值,
$?对应上次命令的在执行返回值,
$1,$2,$3分别对应着第N个位置的参数值

在这里插入图片描述

2、判断用户参数

为了进一步处理接收到的用户参数,需要条件测试输入信息是否有效,测试语句格式:【 条件表达式 】
注意:条件表达式两边均具有一个空格
按照测试对象来划分,条件测试语句可分为4种:

2.1文件运算符

用指定条件判断文件是否存在或权限是否满足等情况的运算符,具体表如下所示

运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

[ -d /etc/fstab ],返回值为0,则是目录
[ -f /etc/fstab ] ,返回值为0,则是一般文件

2.2逻辑运算符

用于对测试结果进行逻辑分析

逻辑“与”的运算符号是&&,前面执行成功后才会执行后面的命令
逻辑“或“”的运算符号是||,前面执行失败才会执行后面的命令
逻辑“非“”的运算符号是!,对测试结果取反值

#当前登录用户为root
[ ! $user = root ] && echo "user" || echo "root"
#执行顺序:判断当前用户为root,非逻辑取反,则逻辑与不会执行ehco "user",逻辑或执行echo "root"

2.3整数比较运算符

整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作。

运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

为true,则返回值为0
为flase,则返回值为1

2.4字符串比较运算符

用于判断测试字符串是否为空值,或两个字符串是否相同。

运算符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空

三、流程语句

为了能够根据真实工作需求调整具体的执行命令、根据某些条件实现自动循环执行,shell可以通过流程控制语句来满足上诉需求。

1、if条件测试语句

让脚本根据实际情况自动执行相应的命令。从技术角度讲,分为单分支结构、双分支结构、多分支结构。
单分支结构:

if  条件测试操作   
    then 命令序列 
fi

双分支结构:

if 条件测试操作
  then 命令序列1
  else 命令序列2
fi

多分支结构:

if 条件测试操作1
 then 命令序列1
elif 条件测试操作2
 then 命令序列2
else 命令系列3
fi

2、for条件循环语句

允许脚本一次性读取多个信息,然后逐一对信息进行操作处理(数据有范围)

for 变量名 in 取值列表
do 
   命令序列
done

3、while条件循环语句

让脚本根据某些条件来重复执行命令的语句

while 条件测试操作
do 
    命令序列
done 

4、case条件测试语句

与switch语句功能相似,在多个范围内匹配,如果匹配成功执行相关命令,不在范围内执行星号(*)中定义的默认命令

case 变量值 in
模式1)
  命令序列1
  ;;
模式2)
  命令序列2
  ;;
  ......
*)
  默认序列
esac

四、计划任务

计划任务分为一次性计划任务与长期性计划任务

1、at

一次性计划任务只执行一次,一般用于临时的工作需求。可以用at命令实现这种功能,只需要写成“at 时间”的形式就行。如果想要查看已设置好但还未执行的一次性计划任务,可以使用at -l命令;要想将其删除,可以使用“atrm 任务序号”。

参数作用
-f指定包含命令的任务文件
-q指定新任务名称
-l显示待执行任务列表
-d删除指定待执行任务
-m任务执行后给用户发邮件

还有一种特殊场景,当用户激活该脚本后再开始倒计时执行。使用“at now +2 MINUTE”的方式进行操作,这表示2分钟(MINUTE)后执行这个任务,也可以将其替代成小时(HOUR)、日(DAY)、月(MONTH)等词汇:

2、crontab

Linux系统中默认启用的crond服务适合周期性的执行任务。创建、编辑计划任务的命令为crontab -e查看当前计划任务的命令为crontab -l删除某条计划任务的命令为crontab -r。另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。

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

用crond服务设置任务的参数格式为 :

分、时、日、月、星期 命令
在这里插入图片描述

注意事项:
在crond服务的配置参数中,一般会像Shell脚本那样以#号开头写上注释信息,这样在日后回顾这段命令代码时可以快速了解其功能、需求以及编写人员等重要信息。
计划任务中的分字段必须有数值,绝对不能为空或是*号,而日和星期字段不能同时使用,否则就会发生冲突
所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twdnote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值