当前位置: 首页 > news >正文

shell脚本2

  • 条件测试分类

测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

测试命令格式:[  条件表达式  ]

文件测试

格式:[  操作符  文件或目录  ]

-d:测试是否为目录(Directory)

-e:测试目录或文件是否存在(Exist)

-f:测试是否为文件(File)

-r:测试当前用户是否有权限读取(Read)

-w:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

举例:

[  -d  /etc  ]

echo $?

[  -f  /etc  ]

echo $?

[  -e  /abc  ]

echo $?

[  -r    /etc/shadow  ]

echo $?

整数值比较

-eq:等于(Equal)

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-le:小于或等于(Lesser or Equal)

-ge:大于或等于(Greater or Equal)

举例:

统计当前登录用户数量是否大于5

[  $(who|wc -l)  -gt  5  ]

字符串比较

格式1: [  字符串1  =  字符串2 ]

        [  字符串1  !=  字符串2 ]

格式2: [  -z  字符串 ]

[  -z  $user  ]

解释:

[ -z 字符串 ]: 检查字符串是否为空

逻辑测试

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

  • 单分支语句

if  条件判断

then

命令序列

fi

举例:磁盘可用空间大于80%,告警

vim jiaoben.sh

        添加:

used_rate=$(df | grep /$ | awk '{print $5}' | awk -F% '{print $1}')

if [ $used_rate -gt 80 ]

then

        echo "磁盘空间不足,告告告告告告"

fi

让我逐行解释:

used_rate=$(df | grep /$ | awk '{print $5}' | awk -F% '{print $1}'):

    • df 命令用于显示磁盘空间利用情况。
    • grep /$ 用于匹配根目录(以/结尾的行),因为根目录通常是文件系统的最顶层目录。
    • awk '{print $5}' 用于提取匹配行的第五列,即磁盘使用率。
    • awk -F% '{print $1}' 用于去除百分号,只留下数字部分。
    • 最终结果赋值给变量 used_rate。

if [ $used_rate -gt 80 ]:

    • 这是一个条件判断语句,判断 $used_rate 是否大于80%。
    • -gt 是大于的意思,80% 是判断的阈值。

then:

    • 如果条件成立,则执行下面的命令。

echo "磁盘空间不足,告告告告告告":

    • 如果磁盘使用率超过80%,则输出提示信息。

fi:

    • 表示条件判断结束

  • 双分支语句

if  条件判断

then

命令序列

else

命令序列

fi

举例:

httpd服务是否开启,输出相应信息,未开启时请启动,测试主机生存状态

vim  jiaoben2.sh

添加:

netstat -lntp | grep httpd &> /dev/null

if [ $? -eq 0 ]

then

        echo "该服务正在运行中哦"

else

        echo "该服务已停止啦!"

          systemctl start httpd

echo "正在帮哥哥启动服务哦"

fi

  • 多分支语句

if  条件判断1

then

命令序列

elif   条件判断2

then

命令序列

elif   条件判断3

then

命令序列

else

命令序列

fi

举例:输入学生分数,输出成绩是否合格

vim jiaoben3.sh

添加:

read -p "请输入学士分数:" cj

if [ $cj -ge 90 ]

then

        echo "优秀"

elif [ $cj -ge 80 ]

then

        echo "良"

elif [ $cj -ge 60 ]

then

        echo "及格"

else

        echo "不及格"

fi

  • 编写ping测试脚本

vim jiaoben4.sh

添加:

ping -c 3 -i 0.2 -w 1 $1 &> /dev/null

if [ $? -eq 0 ]

then

        echo "目标主机已经建立连接"

else

        echo "目标主机已关闭"

fi

  • 编写如下服务器性能监控脚本

uptime :查看系统负载

$NF:最后一列内容

Mpstat:cpu负载率

        free:查看内存使用率

系统负载长期高于cpu核心数时,告警

vim jiaoben-1.sh

添加:

kernels=$(cat /proc/cpuinfo | grep processor |wc -l )

load=$(uptime | awk '{print $NF}' | awk -F. '{print $1}')

if [ $load -gt $kernels ]

then

        echo "cpu快烧啦!!!"

fi

Cpu使用率大于90%时,告警

vim jiaoben-2.sh

添加:

idle=$(mpstat | grep all | awk '{print $NF}' | awk -F. '{print $1}')

if [ $idle -lt 90 ]

then

        echo "Cpu使用率太高啦!"

fi

内存使用率大于90%时,告警

vim jiaoben-3.sh

添加:

used=$(free |grep Mem |awk '{print $3}')

total=$(free |grep Mem |awk '{print $2}')

used_rate=$(expr $used \* 100 / $total)

if [ $used_rate -gt 90 ]

then

        echo "内存空间不足"

fi

硬盘使用率大于80%时,告警

vim jiaoben-4.sh

添加:

used_rate=$(df | grep /$ | awk '{print $5}' | awk -F% '{print $1}')

if [ $used_rate -gt 80 ]

then

        echo "磁盘空间不足!"

fi

相关文章:

  • k8s基于角色的访问控制(RBAC)
  • 使用ffmpeg 将图片合成为视频,填充模糊背景,并添加两段音乐
  • SiamFC算法深度解析
  • 解决微信开发者工具报错 “Component is not found in path wx://not-found“ 代码修改后热更新报错
  • 【无人机】无人机遥控器设置与校准,飞行模式的选择,无线电控制 (RC) 设置
  • 被封号如何申诉?Google Play开发者账号申诉模版分享
  • ERROR: x264 not found using pkg-config
  • CS144 Lab 6 实战记录:构建 IP 路由器
  • Android学习总结之扩展基础篇(一)
  • AI数字人多模态技术如何提升用户体验?
  • c++——内部类
  • 自由学习记录(57)
  • 2025.5.4机器学习笔记:PINN文献阅读
  • 第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道
  • 【棒球运动】户外运动安全技巧·棒球1号位
  • 【操作系统间文件共享_Samba】三、Samba 在实际场景中的应用案例与故障排除
  • Multi-granular Adversarial Attacksagainst Black-box Neural Ranking Models--阅读笔记
  • 制造工厂如何借助电子看板实现高效生产管控
  • 高可靠性厚铜板制造的关键设备与工艺投入
  • femap许可不足如何解决
  • 人大法工委:涉核领域还需要有一部统领性的基础法律
  • 3岁男童疑遭父亲虐待,杭州警方:在异地发生,嫌疑人已被抓
  • 最高法:“盗链”属于信息网络传播行为,构成侵犯著作权罪
  • 外交部回应菲律宾涉仁爱礁言论:菲方7轮运补均提前通报中方
  • 苗旋已任民航局空管局局长、党委副书记
  • 解放军报社论:谱写新时代双拥工作崭新篇章