shell
基础知识
指定解析器
#!/bin/bash
#!/usr/bin/env bash
系统环境变量加载顺序:/etc/profile -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
变量
# 只读变量
readonly var
# 删除变量
unset var
# 位置变量$1-$n
系统环境变量
特殊环境变量
字符串
单引号:不识别变量,不能使用转义字符;双引号:可以识别变量,转义字符
# 获取字符串长度
echo ${#var}
# 截取子串
echo ${var:start:end}
# %截取左边,#截取右边 ## %% 贪婪匹配
url=http://www.baidu.com
echo ${url#*.}
echo ${url%.*}
替换 // 贪婪匹配
echo ${url/www/news}
# 找下标
echo `expr index "${url}" www`
# 判断字符串是否为空
#-n 判断⻓度是否⾮零
#-z 判断⻓度是否为零
数组
普通数组:只能数字作为索引
关联数组:数字或字符串作为索引
# 格式:关联数组可以使⽤ declare -A 命令或者在数组赋值时使⽤+= 符号来定义
数组名称[索引名称]=元素的值
# declare -a 查看系统的普通数组
# 查看所有值
echo ${array[*]}
echo ${array[@]} //将数组中的每个元素扩展为⼀个单独的参数
# 查看所有索引
echo ${!array[*]}
# 查看长度
echo ${#array[*]}
# 添加
colors=(white "${colors[@]}" green black)
# 删除
unset array[值]
运算符
# 算术运算符
+ - * / % = == !=
# 布尔
! -o -a
# 逻辑
&& ||
# 字符串
== != -z -n str
[ -z $str1 ] //长度是否为0,为0返回true
[ $str1 ] //不为空返回true
# 文件
-f -d -e -r -x -w
# 比较
-eq -ne -ge -gt -le -lt
控制语句
# 判断
if
case
# 循环
for
while //条件为真
until //条件为flase
select
# break跳过当前循环 continue跳出整个循环
函数
命令的集合,完成特定功能的代码块;方便复用;类似变量,先定义才能执行;函数不调用不执行
#!/bin/bash
fun1(){
echo "函数定义方式1"
}
fun1
function fun2 {
echo "函数定义方式2"
}
fun2
function fun3(){
echo "函数定义方式3"
}
fun3
debug
脚本
服务启动脚本
⾃动化部署脚本
数据库备份脚本
业务监控脚本
安全防护脚本
⼯具封装
- nginx安装:
软件包下载,解压,编译安装的参数配置,make&&make install,返回结果
- 检查服务状态:
判断依赖命令telnet是否存在,测试端口,分析文件内容、判断结果,删除临时文件
- 检查主机存活状态:
ping目标主机3次,接收每次的状态值;判断结果,失败报警;释放变量unset
- 监控cpu、内存和硬盘利用率:
top-n1获取当前cpu使用率,判断cpu使用率释放大于80%,发送报警邮件
获取总内存,使用内存;计算(用量*100/总内存);输出
磁盘监控遍历df -Th符合条件的磁盘数据,判断并输出结果,发送报警邮件
- 监控接口:
curl(先判断该命令),curl访问并输入临时文件mktemp /tmp/check_url.XXX,截取状态码,判断并输出结果,删除临时文件
-
应用程序启动脚本:(根据pid或端口判断)
- go程序
定义判断pid的函数,case判断输入,调用对应函数执行
- java程序
-
mysql备份脚本
定义备份文件、mysql连接参数;执行备份命令;输出备份结果
服务管理进程管理工具-supervisor
所有的模块服务启动使⽤Supervisor 进程管理⼯具或者systemd 进⾏管理
标签:shell,url,echo,判断,数组,array,bash From: https://www.cnblogs.com/mononoke/p/17850246.html