He tenido que hacer un script que me avise cuando el disco duro del servidor esté casi lleno y y borre unos archivos que se generan automaticamente.
El problema nos ha venido porque en Amazon AWS no hay alerta de espacio de disco duro, hay miles de alertas que puedes generarte, de memoria, cpu,etc yo creo que puedes incluso crearte una para cuando no te queda café en tu casa, pero curiosamente, no hay ninguna, o por lo menos no la he encontrado, que te avise cuando al disco duro se llena.
Para ello, me he basado en script shell para que me avise por email y borre unos archivos de un directorio cuando el espacio en disco es mayor que el 85%.
En el apartado devices, teneis que poner el disco o discos que quereis controlar.
Os dejo aquí el script para que lo utiliceis y modifiqueis si es necesario:
#!/bin/bash
####### Configuración del script #######
# Sistemas de ficheros a chequear
devices[0]=/dev/xvda1
#devices[1]=/dev/sda1
#devices[2]=/dev/sdb1
#devices[3]=/dev/sdd1
#devices[4]=
#….
# Destinatario del correo
destinatario1=»[email protected]»
destinatario2=»[email protected]»
####### Cuerpo del script ########
# Recorremos el array de dispositivos a monitorizar
for device in ${devices[@]};
do
# Consultamos la ocupación del dispositivo
ocupacion=$(df -H | grep $device | expand | tr -s » » | cut -d » » -f5 | cut -d «%» -f1)
# Si la ocupación es igual o mayor al 85%…
if [ $ocupacion -ge 85 ];
then
# Preparación y envío del correo
correo=$(echo «WARNING, » $device en `hostname` al $ocupacion»% de ocupación!! Se borra la cache.»)
asunto=$(echo «Alerta de espacio en » `hostname` » – » $device)
echo $correo | mail -s «$asunto» $destinatario1
echo $correo | mail -s «$asunto» $destinatario2
#Borrar ficheros automaticamente del directorio que quieras
rm -rf /var/www/tudominio.com/cache/*
fi
done
Me he basado en un script que he encontrado en esta página.
Una vez que al script le da permisos de ejecución
chmod 777 ./miscript.sh
Ya podemos probar y ejecutar el script y ver que funciona (podemos cambiar el 85% por cualquier otro valor para ver que funciona.)
Ahora solo nos queda meterlo en el crontab y ejecutarlo cada hora para que nos avise en caso de que el disco duro esté a punto de llenarse.
crontab -e
Añadimos esta linea al cron
50 */1 * * * /home/ec2-user/scripts/warning_hdd.sh<
/span>
De tal forma que cada hora, en el minuto 50, se ejecutará nuestro script y nos avisará por mail, ademas de borrarnos los archivos de la caché.
Hola, lo intento implementar al script y me da este error… que puede ser?
cut: el delimitador debe ser un sólo carácter
Pruebe ‘cut –help’ para más información.
cut: el delimitador debe ser un sólo carácter
Pruebe ‘cut –help’ para más información.
./hola.sh: línea 24: [: -ge: se esperaba un operador unario