系列文章目录
输出Hello World
通过位置变量创建 Linux 系统账户及密码
- 系列文章目录
- 分析
- 代码实现
- 运行结果
分析
对于磁盘容量,可以使用df
命令查看指定指定分区的磁盘使用情况。比如
然后我们需要从这段输出中提取我们想要的信息。在这里就是Available字段的值。我们使用awk来完成:df / | awk '/\//{print $4}’
。其中这个 awk
命令的作用是在输入中查找包含斜杠(/
)的行,并打印这些行的第四个字段。
对于内存的使用情况,可以使用free
命令:
- total: 总物理内存。
- used: 已经被使用的物理内存。
- free: 空闲的物理内存。
- shared: 多个进程共享使用的内存。
- buff/cache: 用于缓存的内存,包括文件缓存和用于内核的缓冲区。
- available: 可用内存,表示系统可以立即分配给进程或用于缓存的内存。
同样,我们使用awk命令提取想要的信息:free | awk '/Mem/{print $4}'
,这个命令是通过匹配包含字符串 “Mem” 的行,并打印该行的第四个字段,即空闲内存的大小。
至于给指定用户发送邮件,可以使用mail
命令。比如 echo "这是邮件正文" | mail -s "邮件主题" recipient@example.com
。这个例子中,echo
命令用于创建邮件正文,-s
选项用于指定邮件主题,而 recipient@example.com
是收件人的电子邮件地址。
代码实现
#! /bin/bash
# 该脚本实现的功能:实时监控本机内存和硬盘剩余空间 ,剩余内存小于500M、
# 根分区剩余空间小于1000M时,发送报警邮件给 root管理员
# 提取根分区剩余空间
disk_size=$(df / | awk '/\//{print $4}')
# 提取内存剩余空间
mem_size=$(free | awk '/Mem/{print $4}')
while :
do
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
if [ $disk_size -lt 512000 ] && [ $men_size -lt 1024000 ]
then
mail -s "Warning" root <<EOF
资源不足
EOF
fi
done