#!/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" example@unixlinux.online
fi
これを 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" example@unixlinux.online
fi
done
私はエリックの答えを使用しようとしましたが、数字をラップしてスクリプトが失敗する原因となる長い名前を持つデバイスに問題がありました。
彼のスクリプトの更新は次のとおりです:
#!/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" example@unixlinux.online
fi
done
キーの変更が変更されました 10
22
まで 行の折り返しを回避し、awk を単純化して、再計算の代わりに事前計算されたパーセントを使用するようにしました。