Shell 脚本监控磁盘空间

本文介绍如何使用Shell脚本监控磁盘空间占用情况,包括使用df命令获取磁盘信息,通过grep和awk过滤及处理数据,以及编写Shell脚本来检查磁盘空间是否超过阈值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

df 命令可以展示文件系统的磁盘有效空间信息。如果不指定文件名,则当前所有挂载的文件系统有效空间信息。

实现步骤

  1. 使用 df 查看磁盘信息
  2. 使用 grep命令 过滤文件系统,获取空间使用百分比
  3. 通过Shell 脚本进行监控
获取磁盘空间
df -H
# output
Filesystem      Size  Used Avail Use% Mounted on
udev            2.1G     0  2.1G   0% /dev
tmpfs           412M  6.6M  405M   2% /run
/dev/sda1        63G   16G   44G  27% /
tmpfs           2.1G  218k  2.1G   1% /dev/shm
tmpfs           5.3M  4.1k  5.3M   1% /run/lock
tmpfs           2.1G     0  2.1G   0% /sys/fs/cgroup
tmpfs           412M   78k  412M   1% /run/user/1000

过滤文件系统获取空间占用百分比
df -H | grep -vE '^Filesystem|tmpfs|udev' | awk '{ print $5 " " $1 }'
# output
27% /dev/sda1

df 的输出结果通过 grep 进行过滤:不包括 Filesystem|tmpfs|udev ,然后再传递给 awk 仅 打印第五列 和 第一列。

写shell监控脚本

上面命令显示第五列和第一列。现在需要查看磁盘空间占用是否 >= 90% :

#!/bin/sh

# 获取磁盘占用情况,并按行循环读取至output
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' |  while read output;
do
  echo $output  # 输出结果
  
  # 通过 awk 获取占用百分比  cut -d 指定分隔符 获取 占比数字
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  # 获取文件路径
  partition=$(echo $output | awk '{ print $2 }' )
  # ; 用于分割命令,一行包括多个命令
  if [ $usep -ge 80 ]; then
    echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" ## 也可以发送报警邮件
  fi
done

输出结果:

81% /dev/sda1
Running out of space "/dev/sda1 (81%)" on ubuntu as on Thu Jun 10 15:10:40 CST 2021

cut 命令说明

cut 命令用于获取每一行的部分内容并输出至标准输出。可以按照字节、字符进行分界,也可以分割类似CSV文件的数据。

按字节分割
echo 'baz' | cut -b 2
a
echo 'baz' | cut -b 1-2
ba
echo 'baz' | cut -b 1,3
bz
按字符切分
echo '♣foobar' | cut -c 1,6
♣a
echo '♣foobar' | cut -c 1-3
♣fo

♣ 占三个字节,利用-c 按照字符分割。

按分隔符切分

分隔符使用 -d选项,一般于 -f 选项一起使用,指定需要获取的特定字段。下面数据来自文件 names.csv :

John,Smith,34,London
Arthur,Evans,21,Newport
George,Jones,32,Truro

获取第一列:

cut -d ',' -f 1 names.csv
# output
John
Arthur  
George

获取第一列和第四列:

cut -d ',' -f 1,4 names.csv
# output
John,London
Arthur,Newport
George,Truro

总结

本文介绍了利用Shell获取磁盘空间占用情况。详细介绍了shell脚本实现,并说明了cut命令的用法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值