shell脚本

文章介绍了如何使用bash脚本来实现Linux系统的监控,包括磁盘占用率、CPU使用率、内存使用率、进程数和登录用户数的监测。当这些指标超过预设阈值时,会将告警信息写入日志文件,并通过邮件发送。此外,还设置了crontab计划任务每半小时执行一次该脚本,以实现定期监控。
摘要由CSDN通过智能技术生成

一、if条件语句

1、单分支if语句(参考书上112页的两个案例)

(1)判断挂载点目录,若不存在则自动创建

(2)判断当前用户是否为root,如果不是则报错并执行“exit  1”退出脚本,不再执行其他代码。

2、双分支if语句(参考书上113和114页的两个案例)

(1)判断目标主机是否存活,显示检测结果

(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则输出提示“警告,vsftpd服务不可用”。(插入linux系统安装光盘,安装一下vsftpd软件包)。

3、多分支if语句(参考书上115页的案例)

(1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。

二、编写系统监控脚本(开centos7.3-2虚拟机)

实验要求如下

  1. 使用df命令提取出根分区的磁盘占用率,赋值给变量DUG
  2. 使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
  3. 使用free命令提取出内存使用率,赋值给变量MUG。
  4. 使用ps命令统计进程数,赋值给变量PUG
  5. 使用who命令统计登录的用户数,赋值给UUG
  6. 判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
  7. 判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。

1、编写sysmon.sh脚本

[root@localhost ~]# vi /root/sysmon.sh

#!/bin/bash

# 提取性能监控指标(磁盘占用、CPU使用、内存使用)

DUG=$(df -hT | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')

CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $13}' | awk -F. '{print $1}'))

MUG=$(expr $(free | grep "Mem" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

PUG=$(ps aux|wc  -l)

UUG=$(who|wc  -l)

# 设置告警日志文件、告警邮箱

ALOG="/tmp/alert.txt"

AMAIL="root "

# 判断是否记录告警

if [ $DUG -gt 90 ]

then

    echo "磁盘占用率:$DUG %" >> $ALOG

fi

if [ $CUG -gt 80 ]

then

    echo "CPU使用率:$CUG %" >> $ALOG

fi

if [ $MUG -gt 90 ]

then

    echo "内存使用率:$MUG %" >> $ALOG

fi

if [ $PUG –gt 200 ]

then

    echo “启动的进程超过了200,太多了” >>$ALOG

fi

if [ $UUG –gt 5 ]

then

    echo “登录的用户超过5个了,太多了” >>$ALOG

fi

# 判断是否发送告警,将告警信息显示在屏幕上,最后删除告警日志文件

if [ -f $ALOG ]

then

    cat $ALOG | mail -s "Host Alert" $AMAIL

    rm -rf $ALOG

fi

    2、设置脚本执行权并手动执行脚本

[root@localhost ~]# chmod +x /root/sysmon.sh

[root@localhost ~]#/root/sysmon.sh

再将脚本里80和90的数改小一些,如改为2,再次执行脚本测试。

[root@localhost ~]# /root/sysmon.sh

通过执行下面命令查看结果

[root@localhost ~]# mail

       

3、设置crontab计划任务

(1)确认系统服务crond已经运行。

[root@localhost ~]# systemctl status crond

crond (pid  5839) 正在运行...

(2)添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]# crontab -e

*/30 * * * * /root/sysmon.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值