Você pode usar awk
para calcular a porcentagem e a test
utilidade para determinar se o valor excede 90 %, por exemplo. O cronjob poderia ser assim:
/usr/bin/test 90 -le $(/usr/bin/awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2} END{printf "%d", (t-f)/(t/100)}' /proc/meminfo) && command-to-cleanup
A parte awk
extrai os valores necessários de /proc/meminfo
e, em seguida, calcula a porcentagem de memória usada. A test
de verificação verifica se 90 é menor ou igual ( -le
) ao valor calculado. A parte depois do &&
seria então a sua ferramenta que limpa a memória ( .. && command-to-cleanup
). Esse cronjob pode ser executado a cada minuto, por exemplo:
* * * * * root /usr/bin/test 90 -le $(/usr/bin/awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2} END{printf "%d", (t-f)/(t/100)}' /proc/meminfo) && command-to-cleanup