/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
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

配置主机名称

  1. vim /etc/hostname

配置网卡信息

第1步:首先切换到 /etc/sysconfig/network-scripts 目录中(存放着网卡的配置文件)。
第2步:使用Vim编辑器修改网卡文件 ifcfg-eno16777728 ,逐项写入下面的配置参数并保存退出。
第3步:重启网卡 systemctl restart network

  1. 设备类型:TYPE=Ethernet
  2. 地址分配模式:BOOTPROTO=static/dhcp
  3. 网卡名称:NAME=ens160
  4. 是否启动:ONBOOT=yes
  5. IP地址:IPADDR=192.168.10.10
  6. 子网掩码:NETMASK=255.255.255.0
  7. 网关地址:GATEWAY=192.168.10.1
  8. DNS地址:DNS1=192.168.10.1

配置软件仓库

搭建并配置软件仓库的大致步骤如下所示。

  • 第1步:进入到 /etc/yum.repos.d/ 目录中(因为该目录存放着软件仓库的配置文件)。
  • 第2步:使用Vim编辑器创建一个名为 rhel8.repo 的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面的配置参数并保存退出。

    1. [BaseOS]
    2. # Yum 软件仓库的名称描述,易于识别仓库用处。
    3. name=BaseOS
    4. # 提供的方式包括 FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。
    5. baseurl=file:///media/cdrom/BaseOS
    6. # 设置此源是否可用;1 为可用,0 为禁用
    7. enabled=1
    8. # 设置此源是否校验文件;1 为校验,0 为不校验。
    9. gpgcheck=0
    10. # 若上面参数开启校验,那么请指定公钥文件地址。
    11. 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会一次性执行脚本中诸多的命令。

    编写简单的脚本

    1. #!/bin/bash
    2. #For Example BY hengfly.com
    3. pwd
    4. ls -al

    第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;
    第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;
    第三、四行的可执行语句也就是我们平时执行的Linux命令了。

    接收用户的参数

    Linux系统中的Shell脚本语言早就考虑到了这些,已经内设了用于接收参数的变量,变量之间可以使用空格间隔。例如$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值。

    1. [root@linuxprobe ~]# vim example.sh
    2. #!/bin/bash
    3. echo "当前脚本名称为$0"
    4. echo "总共有$#个参数,分别是$*。"
    5. echo "第1个参数为$1,第5个为$5。"
    6. [root@linuxprobe ~]# bash example.sh one two three four five six
    7. 当前脚本名称为example.sh
    8. 总共有6个参数,分别是one two three four five six
    9. 1个参数为one,第5个为five

    判断用户的参数

    测试语句格式: [ 条件表达式 ]
    按照测试对象来划分,条件测试语句可以分为4种:

  • 文件测试语句;

  • 逻辑测试语句;
  • 整数值比较语句;
  • 字符串比较语句。

    文件测试所用的参数

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

逻辑测试语句

  • &&是逻辑“与”,只有当前面语句执行成功的时候才会执行后面的命令。
  • ||是逻辑“或”,只有当前面语句执行失败的时候才会执行后面的命令。
  • !是逻辑“非”,代表对逻辑测试结果取反值,之前是正确则变错误,错误则变正确。

    可用的整数比较运算符

    | 操作符 | 作用 | | :—- | :—- | | -eq | 是否等于 | | -ne | 是否不等于 | | -gt | 是否大于 | | -lt | 是否小于 | | -le | 是否等于或小于 | | -ge | 是否大于或等于 |

常见的字符串比较运算符

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

流程控制语句

if条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。

  1. # 单分支结构
  2. if 条件测试操作
  3. then shell命令
  4. fi
  5. # 双分支结构
  6. if 条件测试操作
  7. then shell命令1
  8. else shell命令2
  9. fi
  10. # 多分支结构
  11. if 条件测试操作1
  12. then shell命令1
  13. elif 条件测试操作2
  14. then shell命令2
  15. else
  16. shell命令3
  17. fi

for条件循环语句

  1. for 变量名 in 取值列表
  2. do
  3. shell命令
  4. done

while条件循环语句

  1. while 条件测试操作
  2. do
  3. shell命令
  4. done

case条件测试语句

case条件测试语句和switch语句的功能非常相似!
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。

  1. case 变量值 in
  2. 模式1)
  3. shell命令1
  4. ;;
  5. 模式2)
  6. shell命令2
  7. ;;
  8. *)
  9. 默认shell命令
  10. esac

计划任务服务程序

经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解。

  • 一次性计划任务:今晚 11 点 30 分开启网站服务>
  • 长期性计划任务:每周一的凌晨 3 点 25 分把/home/wwwroot 目录打包备份为 backup.tar.gz。

在使用at命令来设置一次性计划任务时,默认采用的是交互式方法。

  1. # 第一种方式
  2. at 25:37
  3. echo date
  4. 此处同时按下Ctrl+d键结束编写计划任务
  5. # 第二种方式
  6. echo "systemctl restart httpd" | at 23:30
  7. # 第三种方式:把计划任务写入到Shell脚本中,当用户激活后再开始倒计时执行
  8. at now +2 MINUTE
  9. systemctl restart httpd
  10. 此处同时按下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 删除计划任务

分、时、日、月、星期

  1. # 下载
  2. yum install vixie-cron
  3. yum install crontabs
  4. # 启动
  5. systemctl start crond.service
  6. # 查看状态
  7. systemctl status crond.service
  8. # 编辑计划任务
  9. crontab -e