/dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。
Vim文本编辑器
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。
- 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
- 输入模式:正常的文本录入。
- 末行模式:保存或退出文档,以及设置编辑环境。
命令模式中最常用的一些命令
| 命令 | 作用 | | :—- | :—- | | dd | 删除(剪切)光标所在整行 | | 5dd | 删除(剪切)从光标处开始的5行 | | yy | 复制光标所在整行 | | 5yy | 复制从光标处开始的5行 | | n | 显示搜索命令定位到的下一个字符串 | | N | 显示搜索命令定位到的上一个字符串 | | u | 撤销上一步的操作 | | p | 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面 |
行模式中最常用的一些命令
| 命令 | 作用 |
|---|---|
| :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 |
| ?字符串 | 在文本中从下至上搜索该字符串 |
| /字符串 | 在文本中从上至下搜索该字符串 |
配置主机名称
vim /etc/hostname
配置网卡信息
第1步:首先切换到 /etc/sysconfig/network-scripts 目录中(存放着网卡的配置文件)。
第2步:使用Vim编辑器修改网卡文件 ifcfg-eno16777728 ,逐项写入下面的配置参数并保存退出。
第3步:重启网卡 systemctl restart network 。
设备类型:TYPE=Ethernet地址分配模式:BOOTPROTO=static/dhcp网卡名称:NAME=ens160是否启动:ONBOOT=yesIP地址:IPADDR=192.168.10.10子网掩码:NETMASK=255.255.255.0网关地址:GATEWAY=192.168.10.1DNS地址:DNS1=192.168.10.1
配置软件仓库
搭建并配置软件仓库的大致步骤如下所示。
- 第1步:进入到
/etc/yum.repos.d/目录中(因为该目录存放着软件仓库的配置文件)。 第2步:使用Vim编辑器创建一个名为
rhel8.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面的配置参数并保存退出。[BaseOS]# Yum 软件仓库的名称描述,易于识别仓库用处。name=BaseOS# 提供的方式包括 FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。baseurl=file:///media/cdrom/BaseOS# 设置此源是否可用;1 为可用,0 为禁用enabled=1# 设置此源是否校验文件;1 为校验,0 为不校验。gpgcheck=0# 若上面参数开启校验,那么请指定公钥文件地址。gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release
仓库名称:具有唯一性的标识名称,不应与其他软件仓库发生冲突。 描述信息(name):可以是一些介绍词,易于识别软件仓库的用处。 仓库位置(baseurl):即软件包的获取方式,可以使用FTP、HTTP与本地file。 是否启用(enabled):设置此源是否被使用,1为使用,0为禁用。 是否检查(gpgcheck):设置此源是否被校验,1为校验,0为禁用。 公钥位置(gpgkey):若上面参数开启了校验功能,则此处为公钥文件位置。若没有开启,此省略不写。
第3步:按配置参数中所填写的仓库位置挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中。
第4步:使用“dnf install httpd -y”命令检查软件仓库是否已经可用。
编写Shell脚本
Shell脚本命令的工作方式有两种:交互式和批处理。
交互式(Interactive):用户每输入一条命令就立即执行。
批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。
编写简单的脚本
#!/bin/bash#For Example BY hengfly.compwdls -al
第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;
第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;
第三、四行的可执行语句也就是我们平时执行的Linux命令了。接收用户的参数
Linux系统中的Shell脚本语言早就考虑到了这些,已经内设了用于接收参数的变量,变量之间可以使用空格间隔。例如$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值。
[root@linuxprobe ~]# vim example.sh#!/bin/bashecho "当前脚本名称为$0"echo "总共有$#个参数,分别是$*。"echo "第1个参数为$1,第5个为$5。"[root@linuxprobe ~]# bash example.sh one two three four five six当前脚本名称为example.sh总共有6个参数,分别是one two three four five six。第1个参数为one,第5个为five。
判断用户的参数
测试语句格式:
[ 条件表达式 ]
按照测试对象来划分,条件测试语句可以分为4种:文件测试语句;
- 逻辑测试语句;
- 整数值比较语句;
- 字符串比较语句。
文件测试所用的参数
| 操作符 | 作用 | | :—- | :—- | | -d | 测试文件是否为目录类型 | | -e | 测试文件是否存在 | | -f | 判断是否为一般文件 | | -r | 测试当前用户是否有权限读取 | | -w | 测试当前用户是否有权限写入 | | -x | 测试当前用户是否有权限执行 |
逻辑测试语句
- &&是逻辑“与”,只有当前面语句执行成功的时候才会执行后面的命令。
- ||是逻辑“或”,只有当前面语句执行失败的时候才会执行后面的命令。
- !是逻辑“非”,代表对逻辑测试结果取反值,之前是正确则变错误,错误则变正确。
可用的整数比较运算符
| 操作符 | 作用 | | :—- | :—- | | -eq | 是否等于 | | -ne | 是否不等于 | | -gt | 是否大于 | | -lt | 是否小于 | | -le | 是否等于或小于 | | -ge | 是否大于或等于 |
常见的字符串比较运算符
| 操作符 | 作用 |
|---|---|
| = | 比较字符串内容是否相同 |
| != | 比较字符串内容是否不同 |
| -z | 判断字符串内容是否为空 |
流程控制语句
if条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。
# 单分支结构if 条件测试操作then shell命令fi# 双分支结构if 条件测试操作then shell命令1else shell命令2fi# 多分支结构if 条件测试操作1then shell命令1elif 条件测试操作2then shell命令2elseshell命令3fi
for条件循环语句
for 变量名 in 取值列表doshell命令done
while条件循环语句
while 条件测试操作doshell命令done
case条件测试语句
case条件测试语句和switch语句的功能非常相似!
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。
case 变量值 in模式1)shell命令1;;模式2)shell命令2;;*)默认shell命令esac
计划任务服务程序
经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解。
- 一次性计划任务:今晚 11 点 30 分开启网站服务>
- 长期性计划任务:每周一的凌晨 3 点 25 分把/home/wwwroot 目录打包备份为 backup.tar.gz。
在使用at命令来设置一次性计划任务时,默认采用的是交互式方法。
# 第一种方式at 25:37echo date此处同时按下Ctrl+d键结束编写计划任务# 第二种方式echo "systemctl restart httpd" | at 23:30# 第三种方式:把计划任务写入到Shell脚本中,当用户激活后再开始倒计时执行at now +2 MINUTEsystemctl restart httpd此处同时按下Ctrl+d键结束编写计划任务
at命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -f | 指定包含命令的任务文件 |
| -q | 指定新任务名称 |
| -l | 显示待执行任务列表 |
| -d | 删除指定待执行任务 |
| -m | 任务执行后给用户发邮件 |
contab
Linux系统能够周期性地、有规律地执行某些具体的任务,那么Linux系统中默认启用的crond服务简直再适合不过了。创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。
contab命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -e | 编辑计划任务 |
| -u | 指定用户名称 |
| -l | 列出任务列表 |
| -r | 删除计划任务 |
分、时、日、月、星期
# 下载yum install vixie-cronyum install crontabs# 启动systemctl start crond.service# 查看状态systemctl status crond.service# 编辑计划任务crontab -e
