随着互联网不断发展、更新迭代、业务的增长,单纯的人工运维已然无法满足企业日常需求,而且大量工作都是重复性的,因此,自动化脚本替代一些人工重复的工作是必然的。
对于运维工程师来说,shell脚本的掌握程度也越来越重要,在减少重复工作量的同时,还能大幅提升工作效率!归根结底,shell脚本也是运维人员必备的工作技能之一。
今天给大家分享《shell脚本149个案例》,共68页,目录清晰,一键搜索定位,代码清晰可复制,电子版更有利于大家随时翻阅,提升实践能力,想要学习、提升的朋友们一定要收藏下来。
由于脚本案例太多,仅拿出一部分作为展示
【领取方式见文末】
【领取方式见文末】
1、查找 Linux 系统中的僵尸进程
#!/bin/bash
# 查找 Linux 系统中的僵尸进程
# awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令
ps aux | awk '{if($8 == "Z"){print $2,$11}}'
2、删除某个目录下大小为 0 的文件
#!/bin/bash
# 删除某个目录下大小为 0 的文件
#/var/www/html 为测试目录,脚本会清空该目录下所有 0 字节的文件
dir="/var/www/html"
find $dir -type f -size 0 -exec rm -rf {} \;
3、连续输入5个100以内的数字,统计和、最小和最大
#!/bin/bash
COUNT=1
SUM=0
MIN=0
MAX=100
while [ $COUNT -le 5 ]; do
read -p "请输入1-10个整数:" INT
if [[ ! $INT =~ ^[0-9]+$ ]]; then
echo "输入必须是整数!"
exit 1
elif [[ $INT -gt 100 ]]; then
echo "输入必须是100以内!"
exit 1
fi
SUM=$(($SUM+$INT))
[ $MIN -lt $INT ] && MIN=$INT
[ $MAX -gt $INT ] && MAX=$INT
let COUNT++
done
echo "SUM: $SUM"
echo "MIN: $MIN"
echo "MAX: $MAX"
4、打印各种格式的时间
#!/bin/bash
# 打印各种时间格式
echo "显示星期简称(如:Sun)"
date +%a
echo "显示星期全称(如:Sunday)"
date +%A
echo "显示月份简称(如:Jan)"
date +%b
echo "显示月份全称(如:January)"
date +%B
echo "显示数字月份(如:12)"
date +%m
echo "显示数字日期(如:01 号)"
date +%d
echo "显示数字年(如:01 号)"
date +%Y echo "显示年‐月‐日"
date +%F
echo "显示小时(24 小时制)"
date +%H
echo "显示分钟(00..59)"
date +%M
echo "显示秒"
date +%S
echo "显示纳秒"
date +%N
echo "组合显示"
date +"%Y%m%d %H:%M:%S"
5、判断文件或目录是否存在
#!/bin/bash
# 判断文件或目录是否存在
if [ $# -eq 0 ] ;then
echo "未输入任何参数,请输入参数"
echo "用法:$0 [文件名|目录名]"
fi
if [ -f $1 ];then
echo "该文件,存在"
ls -l $1
else
echo "没有该文件"
fi
if [ -d $1 ];then
echo "该目录,存在"
ls -ld $2
else
echo "没有该目录"
fi
6、使⽤脚本对输⼊的三个整数进⾏排序
#!/bin/bash
# 依次提示⽤户输⼊ 3 个整数,脚本根据数字⼤⼩依次排序输出 3 个数字
read-p " 请输⼊⼀个整数:"num1
read-p " 请输⼊⼀个整数:"num2
read-p " 请输⼊⼀个整数: "num3
# 不管谁⼤谁⼩,最后都打印 echo "$num1,$num2,$num3"
# num1 中永远存最⼩的值,num2 中永远存中间值,num3 永远存最⼤值
# 如果输⼊的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调
tmp=0
# 如果 num1 ⼤于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最⼩值
if[ $num1-gt $num2]; then
tmp= $num1
num1= $num2
num2=tmp
fi
# 如果 num1 ⼤于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最⼩值
if[ $num1-gt $num3]; then
tmp= $num1
num1= $num3
num3= $tmp
fi
# 如果 num2 ⼤于 num3,就把 num2 和 num3 对调,确保 num2 变量中存的是最⼩值
if[ $num2-gt $num3]; then
tmp= $num2
num2= $num3
num3= $tmp
fi
echo"排序后数据(从⼩到⼤)为: $num1, $num2, $num3"
7、获取本机 MAC 地址
#!/bin/bash
# 获取本机 MAC 地址
ip a s | awk 'BEGIN{print " 本 机 MAC 地 址 信 息 如 下 :"}/^[0‐9]/{print $2;getline;if($0~/link\/ether/){print $2}}' | grep -v lo:
# awk 读取 ip 命令的输出,输出结果中如果有以数字开始的行,先显示该行的地 2 列(网卡名称),
# 接着使用 getline 再读取它的下一行数据,判断是否包含 link/ether
# 如果保护该关键词,就显示该行的第 2 列(MAC 地址)
# lo 回环设备没有 MAC,因此将其屏蔽,不显示
8、提示用户输入年份后判断该年是否为闰年
#!/bin/bash
# 提示用户输入年份后判断该年是否为闰年
# 能被4整除并且并不能被100整除的年份是闰年
# 能被400整除的年份也是闰年
read -p "请输入一个年份:" year
if [ "$year" = "" ];then
echo "没有输入年份"
exit
fi
#使用正则测试变量 year 中是否包含大小写字母
if [[ "$year" =~ [a‐Z] ]];then
echo "你输入的不是数字"
exit
fi
# 判断是否为闰年
if [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then
echo "$year年是闰年"
elif [ $[year % 400] -eq 0 ];then
echo "$year年是闰年"
else
echo "$year年不是闰年"
fi
部分内容展示
上下滚动查看更多
| 资料整理于网络,仅做免费交流分享,如侵权请联系删除!
149个Shell脚本实战案例
【配套PDF版资料】
免费领取,仅限前 200 名
拼手速的时间到了!
扫描上方二维码,备注【shell案例】
第一时间发给你!!!