#!/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" [email protected]
fi
Crontab ini untuk dijalankan sesering apa pun Anda menginginkan lansiran
EDIT:Untuk banyak disk
#!/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" [email protected]
fi
done
Saya mencoba menggunakan jawaban Erik tetapi memiliki masalah dengan perangkat yang memiliki nama panjang yang membungkus angka dan menyebabkan skrip gagal, matematika juga terlihat salah bagi saya dan tidak cocok dengan persentase yang dilaporkan oleh df
itu sendiri.
Berikut pembaruan skripnya:
#!/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" [email protected]
fi
done
Perubahan kunci diubah df -k
ke df -Pk
untuk menghindari pembungkusan garis dan menyederhanakan awk untuk menggunakan persen yang telah dihitung sebelumnya alih-alih menghitung ulang.
Bagaimana cara mengatur cron untuk menjalankan file hanya sekali pada waktu tertentu?
Server CPU dan GPU Dengan LAMP