149个Linux Shell脚本经典实战案例,收藏备用(附PDF)

教育   2024-11-13 10:12   北京  

随着互联网不断发展、更新迭代、业务的增长,单纯的人工运维已然无法满足企业日常需求,而且大量工作都是重复性的,因此,自动化脚本替代一些人工重复的工作是必然的。

对于运维工程师来说,shell脚本的掌握程度也越来越重要,在减少重复工作量的同时,还能大幅提升工作效率!归根结底,shell脚本也是运维人员必备的工作技能之一。

今天给大家分享《shell脚本149个案例》共68页,目录清晰,一键搜索定位,代码清晰可复制,电子版更有利于大家随时翻阅,提升实践能力,想要学习、提升的朋友们一定要收藏下来。

由于脚本案例太多,仅拿出一部分作为展示

【领取方式见文末】

【领取方式见文末】




149个超实用的Shell脚本



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案例】

第一时间发给你!!!


老男孩Linux
专注于Linux高级运维、Python开发、大数据培训,为您分享行业前沿的技术,有效的学习方法和有价值的学习资料。
 最新文章