目录
硬编码
硬编码的缺点
实验
文件测试
整数比较
if语句的结构
单分支结构
双分支结构
多分支结构
使用case分支语句sys
注册为系统服务调用脚本
服务管理方式
硬编码
硬编码(Hard Coding)是指在程序代码中直接使用固定值,而不是通过变量、配置文件或参数来动态获取这些值
比如在脚本中写入一个ping命令,目标的IP地址固定为192.168.10.101(直接嵌入常量或固定逻辑),这就是硬编码
硬编码的缺点
- 难以维护:当需要修改硬编码的值时,需要直接修改源代码,并重新编译、部署应用。这增加了出错的风险和维护成本。
- 缺乏灵活性:硬编码使得程序在不同环境中运行时缺乏灵活性。例如,开发环境和生产环境的配置可能不同,如果使用硬编码,就需要为每个环境分别修改代码。
- 可读性和可管理性差:随着项目规模的增大,硬编码会导致代码难以阅读和管理,特别是当这些值分散在多个文件和模块中时。
实验
文件测试
-d 选项用于检查指定的路径是否存在且为目录
这条命令检查 /aaa 是否存在且为目录。如果 /aaa 存在且是一个目录,则 test 命令返回退出状态码 0。如果 /aaa 不存在,或者存在但不是一个目录,则 test 命令返回退出状态码 1。
- test -f /aaa 检查 /aaa 是否存在且为普通文件。
- 退出状态码 1 表示 /aaa 不存在或者存在但不是一个普通文件。
- test -e /aaa 检查 /aaa 是否存在。
- 退出状态码 1 表示 /aaa 不存在。
- [ -d /mnt ] 检查 /mnt 是否存在且为目录。
- 退出状态码 0 表示 /mnt 存在且是一个目录。
- [ 条件 ] 是 test 条件 的另一种语法形式。
- 测试权限
整数比较
-eq:第一个数等于(Equal)第二个数。
-ne:第一个数不等于(Not Equal)第二个数。
-gt:第一个数大于(Greater Than)第二个数。
-lt:第一个数小于(Lesser Than)第二个数。
-le:第一个数小于或等于(Lesser or Equal)第二个数。
-ge:第一个数大于或等于(Greater or Equal)第二个数。
这个命令的输出 1% 表示根文件系统的利用率为1%。这意味着根文件系统当前使用的磁盘空间占总容量的1%。
if语句的结构
单分支结构
vim aaa.sh
bash aaa.sh查看语句
双分支结构
vim bbb.sh
- -c 3:发送 3 个 ICMP 请求。
- -i 0.2:每个请求之间间隔 0.2 秒。
- -W 3:等待每个请求的响应时间为 3 秒。
- $1:目标主机地址,由脚本运行时提供。
- &>/dev/null:将命令的标准输出和标准错误重定向到 /dev/null,即不显示任何输出。
这里的 [ $? -eq 0 ] 是一个条件测试,用于检查前一个命令(即 ping 命令)的退出状态码:
- $?:表示上一个命令的退出状态码。
- -eq 0:检查退出状态码是否等于 0。
如果 ping 命令成功(即目标主机可达),退出状态码为 0,条件为真。
bash bbb.sh 192.168.2.149测试信息
多分支结构
vim ccc.sh
vim
bash ccc.sh测试
使用case分支语句sys
vim ddd.sh
bash ddd.sh测试运行结果
开启权限 chmod +x eee
注册为系统服务调用脚本
修改脚本文件,增加必须的规则(chkconfig)
35:开机自启的运行级别(3、5),也可以写为 "-" 表示所有运行级别
80:启动优先级(当系统启动时,开机自启的优先级,数字越大,优先级越低)
20:关闭优先级(关闭系统时,关闭服务的优先级)
再将文件拷贝到指定位置
在脚本中加入了chkconfig规则就可以通过chkconfig命令将脚本注册为系统服务
注册为系统服务后,就可以通过service命令对该服务进行操作
系统启动时自动运行该服务
服务管理方式
- systemctl
- 串行启动
- 如果系统的守护进程是systemd,管理系统服务的就是 systemctl
- systemctl start|stop|restart|reload|status|enable|disable httpd
- systemctl 选项 服务名称
- service
- 并行启动
- 如果系统的守护进程是init,管理系统服务的就是 service 管理(在CentOS 7往后,系统内的init是systemd的链接)
- service httpd start|stop|restart|reload|status
- service 服务名称 选项
- 通过chkconfig 服务名 on 将该服务设为开机自启
- 需要将脚本文件放置在 /etc/init.d/ 目录下
- 该脚本需要有执行权(chmod +x)