Linux shell编程二:系统监控脚本

系统监控脚本

在/root/bin目录下编写脚本,监控系统中内存、cpu、磁盘的占用率;赋予脚本文件执行权限,执行脚本检查效果;设置计划任务每分钟执行一次脚本。

sysmon.sh

#!/bin/bash
#by lxl

#memory_used_rate 内存使用率
LoadMemory=$(cat /proc/meminfo | awk '{print $2}')
Total=$(echo $LoadMemory | awk '{print $1}')
Free1=$(echo $LoadMemory | awk '{print $2}')
Free2=$(echo $LoadMemory | awk '{print $3}')
Free3=$(echo $LoadMemory | awk '{print $4}')
Used=`expr $Total - $Free1 - $Free2 - $Free3`
Used_Rate=`expr  $Used/$Total*100 | bc -l`
Memory_Used_Rate=`expr  $Used_Rate/1 | bc`

#disk_used_rate  磁盘占用率
Location=/dev/sda1
Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')

#cpu_used_rate  cpu使用率
Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
Free=$(echo $Log | awk '{print $4}')
Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')
Cpu_Used=`expr $Total - $Free`
Cpu_Used_Rate=`expr  $Cpu_Used/$Total*100 |bc -l`

#mail to root
if [ $Memory_Used_Rate -gt 10 ]
then echo "内存使用率:$Memory_Used_Rate%" |mail -s "内存告警" root
fi

echo -e "----------------------------------------"

echo -e "内存使用率:"$Memory_Used_Rate%
echo -e "磁盘占用率:"$Disk_Used_Rate
echo -e "cpu使用率:"$Cpu_Used_Rate%

echo -e "----------------------------------------"
echo -e " "

在这里插入图片描述
其中分为四部分

1、内存使用率

LoadMemory=$(cat /proc/meminfo | awk '{print $2}')
Total=$(echo $LoadMemory | awk '{print $1}')
Free1=$(echo $LoadMemory | awk '{print $2}')
Free2=$(echo $LoadMemory | awk '{print $3}')
Free3=$(echo $LoadMemory | awk '{print $4}')
Used=`expr $Total - $Free1 - $Free2 - $Free3`
Used_Rate=`expr  $Used/$Total*100 | bc -l`
Memory_Used_Rate=`expr  $Used_Rate/1 | bc`

bc命令解释:
bc 命令是任意精度计算器语言,通常在linux下当计算器用。
yum install -y bc

2、磁盘占用率

Location=/dev/sda1
Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')

3、cpu使用率

Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
Free=$(echo $Log | awk '{print $4}')
Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')
Cpu_Used=`expr $Total - $Free`
Cpu_Used_Rate=`expr  $Cpu_Used/$Total*100 |bc -l`

4、邮件发送

if [ $Memory_Used_Rate -gt 10 ]
then echo "内存使用率:$Memory_Used_Rate%" |mail -s "内存告警" root
fi

yum install -y mailx

设置每分钟执行一次
crontab -e
写入 */1 * * * * /root/bin/sysmon.sh
使用crontab -l 查看
在这里插入图片描述
查看收到的邮件:
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux Shell脚本编程是指在Linux中,使用Shell编写程序脚本,以实现一系列自动化任务。ShellLinux中的命令解释器,它能够执行用户输入的命令,并将结果输出到终端上。 在Shell脚本编程中,我们可以使用各种Shell命令、变量、条件判断、循环语句等来编写脚本,以实现自动化任务的目的。Shell脚本可以自动执行一系列命令,可以将多个命令组合成一个任务,还可以实现各种系管理和监控功能。 Shell脚本编程Linux中是非常常见的技能之一,它可以提高系管理效率,减少人工操作错误的可能性,是Linux管理员必备的技能之一。学习Shell脚本编程需要对Linux有一定的了解,同时需要熟悉Shell编程语言,学习过程中需要掌握Shell脚本的基本语法、命令、变量和函数等内容。 ### 回答2: Linux shell脚本编程是一种编写脚本的语言,可以自动完成重复性任务和批量处理命令。shell脚本能够在Linux环境下运行,但并不仅仅适用于Linux,而是适用于所有类Unix系shell有多种,如Bourne shell(sh)、C shell(csh)、Korn shell(ksh)等等,Linux内置的默认shell是bash(Bourne-again shell),因此,大多数时候我们所说的shell实际上是指bash。 在Linux中,我们在终端上敲命令的过程实际上就是在执行shell脚本。在实际应用中,我们可以通过shell脚本在终端上一次性批量执行多个命令,同时,我们也可以根据需要把这些命令写在一个脚本文件中,再通过执行脚本文件来实现执行多个命令的目的。 另外,shell脚本还可以使命令自动完成特定的重复性操作,如备份、文件整理、文件批量转换等,从而提高工作效率。 在编写shell脚本时,我们需要掌握一些基本的语法规则、变量、运算符和流程控制语句等等。例如: - 变量的定义:用$符号定义变量,如a=10,则变量a的值为10。使用变量时需要用$符号引用,如echo $a会输出10。 - 运算符:shell脚本支持多种运算符,如算术运算符(+、-、*、/、%)、字符串运算符(=、!=、-z等)等等。 - 流程控制语句:if-else、for、while等,用来实现条件判断和循环操作等。 总的来说,Linux shell脚本编程是非常实用的技能,尤其是在涉及到批量操作的场景下。掌握好shell脚本的语法规则和常用命令,可以有效提高工作效率,节省时间和精力。 ### 回答3: Linux shell脚本编程,是一种基于命令行的编程方式,用于自动化管理和控制Linux操作系。它可以让我们通过编写一系列的命令和操作,快速地完成系管理、批量操作和数据处理等任务,极大地提高我们的工作效率和精度。 Linux shell脚本编程主要基于bash shell,它是Linux默认的命令行解释器。因此,我们只需要掌握bash shell的基本语法和常用命令,就能进入Linux shell编程的世界。 Linux shell脚本编程的核心是脚本文件,它是一组命令和操作的集合,可以根据需要执行。脚本文件的扩展名通常为.sh。我们可以通过一些编辑器如vim、gedit、nano等来编写脚本文件。脚本文件中的命令和操作,以特定的格式书写,可以通过在命令行终端运行脚本文件来执行。 在shell脚本编程中,变量和运算符是很重要的概念。变量用于保存程序中需要使用的数据,可以是数字、字符、字符串等。运算符用于对变量和常量进行运算,包括算术、比较和逻辑运算。在脚本中,我们可以使用if-else语句、循环语句等控制结构来实现程序逻辑。 此外,Linux shell脚本编程还涉及到正则表达式和管道符等概念。正则表达式可以用来匹配文本或验证数据格式,管道符则可实现多个命令之间的数据传输和协作。 总而言之,通过学习和应用Linux shell脚本编程,我们可以轻松实现系管理、数据处理、批量操作等任务,并且可以根据需要扩展自己所用的命令和脚本,感受到编程的快乐。同时,Shell脚本编程也是Linux管理和运维领域必备的技能之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值