Bash监视磁盘使用情况

Rai*_*Son 8 linux bash shell debian disk

我买了一个NAS盒子,上面有一个debian版本的debian.

前几天它空间不足,我没有意识到.我基本上想写一个bash脚本,当磁盘超过90%时,它会提醒我.

是否有人知道一个脚本会这样做或给我一些关于写一个的建议?

Eri*_*rik 9

#!/bin/bash
source /etc/profile

# Device to check
devname="/dev/sdb1"

let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'`
if [ $p -ge 90 ]
then
  df -h $devname | mail -s "Low on space" my@email.com
fi
Run Code Online (Sandbox Code Playgroud)

然而,要运行Crontab,通常需要提醒

编辑:对于多个磁盘

#!/bin/bash
source /etc/profile

# Devices to check
devnames="/dev/sdb1 /dev/sda1"

for devname in $devnames
do
  let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'`
  if [ $p -ge 90 ]
  then
    df -h $devname | mail -s "$devname is low on space" my@email.com
  fi
done
Run Code Online (Sandbox Code Playgroud)


Hav*_*ess 7

我尝试使用Erik的答案,但是设备有长名称包装数字并导致脚本失败的问题,数学看起来也错了,并且与自己报告的百分比不匹配df.

这是他的脚本的更新:

#!/bin/bash
source /etc/profile

# Devices to check
devnames="/dev/sda1 /dev/md1 /dev/mapper/vg1-mysqldisk1 /dev/mapper/vg4-ctsshare1 /dev/mapper/vg2-jbossdisk1 /dev/mapper/vg5-ctsarchive1 /dev/mapper/vg3-muledisk1"


for devname in $devnames
do
  let p=`df -Pk $devname | grep -v ^File | awk '{printf ("%i", $5) }'`
  if [ $p -ge 70 ]
  then
    df -h $devname | mail -s "$devname is low on space" my@email.com
  fi
done
Run Code Online (Sandbox Code Playgroud)

主要变化是改变df -kdf -Pk避免换行,并简化了awk来使用,预先计算值,而不是百分比的recalcing.