shell - 变量,流程控制

1. 查看内存 
 free -m
 free -m|awk '/^Mem/ {print $3/$2*100}'
2. 监控内存使用超过80 报警
free_use = free -m|awk '/Mem/ {print $3/$2*100}'
echo ${free_use%.*}   # 从后往前删,用%
if [ ${free_use%.*} -gt 80];then
    echo "内存超80"
fi

3. 创建10个文件,将txt 改为txt.bak, 把bak文件打包为123, 还原文件的名字
touch /backup/file{1..10}.txt
find /backup -iname "*.txt"
new_file = $(find /backup -iname "*.txt"|sed -r 's#(.*)#mv \1 \1.bak#g')|bash
打包
tar czf /backup/123.tar.gz $(find /backup -iname "*.bak")
还原
find /backup -iname "*.bak"|sed -r 's#(.*).bak#mv \1.bak \1#g'|bash
4 rename 修改名称
rename jpg jpeg *.jpg
5. string="Bigdata process is Hadoop,Hadoop,hadoop is open source project"
-- 1. 打印string 长度
-- 2. 删除字符串所有的Hadoop
-- 3. 替换第一个Hadoop 为linux
-- 4. 替换全部Hadoop 为Linux
用户输入1,2,3,4执行对应的功能,输入 q|Q 退出

shell 变量的运算

1. 整数运算, expr, $(()), $[]
+ - * / %
# expr $num1 + $num2
# echo $(( $num + $num1 ))
# $[ $num + $num1 ]
2. 小数运算
echo "2^4" |bc
echo "scale=1;6/4" |bc
echo "scale=2;6/4" |bc  
awk 'BEGIN{print 1/2}'

流程控制

if [ ];then
    echo
else
    echo
fi

if [ ];then
elif[ ];then
elif[ ];then
else
fi
#例1
#!/usr/bin/bash
if [ $# -ne 1 ];then
        echo "only one paramter"
        exit
fi
if grep "$1" /etc/passwd;then
        echo 'ok'
else
fi    

if语句中的文件比较

-r 文件存在且可读为真
-w 文件存在且可写
-x 文件存在且可执行
-d 文件存在且为目录
-f 文件存在且为普通文件
-e 文件或目录存在为真
-s 文件存在且至少有一个字符
加 ! 取反
if [ -f /etc/hosts ]; then
    echo $?
fi
[ -f /etc/hosts ] && echo $? || echo '不存在'

dir=/ect1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir不存在"


# 备份mysql , 手动输入要备份的库名称
1. 提示用户输入 read
2. 输入数据库名称,执行mysqldump 备份
3. 备份到哪, /backup/mysql

User=root
Pwd=123
[ -d /backup/mysql ] || mkdir -p /backup/mysql
read -p " database name: " db
usr/bin/mysqldump -u$User -p$Pwd --single-transaction -R -B $db >/backup/mysql/db01_$(date +%F).sql

例: 检查服务是否运行的脚本

# 判断服务是否运行
#systemctl status sshd
# $# 表示传参的个数
if [ $# -ne 1 ];then
    echo "please enter 服务名"
    exit
fi 
systemctl status "$1" &>/dev/null
rc=$?
if [ $rc -eq 0 ];tehn
    echo "在运行"
else
    echo "没在运行"
fi

磁盘使用率超过80% 发邮件报警

# 查看磁盘
df -h
disk_use=$(df -h|grep "/$"|awk '{print $(NF-1)}')
if [ ${disk_use/\%/} -ge 80 ];then
    echo "大于80"
else
    echo "正常"
fi

猜你喜欢

转载自www.cnblogs.com/Afrafre/p/11405712.html