liberamemoria.sh
liberamemoria.sh
liberamemoria.sh
Este script comprueba memoria libre y, si baja de un umbral, fuerza la liberacion de caches del kernel Linux.
Ejecucion programada
@hourly /ruta/origen/scripts/liberamemoria.sh
Flujo
- Obtiene memoria libre con
free -m. - Compara el valor con un umbral en MB.
- Si la memoria libre es inferior o igual al umbral, escribe
3en/proc/sys/vm/drop_caches.
Version saneada
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
set -euo pipefail
UMBRAL_MB="${UMBRAL_MB:-6144}"
MEMORIA_LIBRE="$(free -m | awk '/^Mem:/ {print $4}')"
if (( MEMORIA_LIBRE <= UMBRAL_MB )); then
sync
echo 3 > /proc/sys/vm/drop_caches
fi
Riesgos y mejoras
- Requiere permisos de root.
drop_cachesno soluciona fugas de memoria; solo libera caches recuperables.- Conviene registrar ejecuciones en log para detectar frecuencia excesiva.
- La version original intenta guardar un comando en una variable de forma incorrecta; mejor ejecutar
syncyechodirectamente.
This post is licensed under CC BY 4.0 by the author.