Ejecutar orden al pulsar F1

Iniciado por Gambinoh, 21 Diciembre 2014, 16:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Gambinoh

Hola, tengo entendido que hay un comando para liberar la memoria RAM.

sysctl -w vm.drop_caches=3

Quiero ejecutar esta orden en modo superusuario al pulsar la tecla F1.

¿Cómo lo hago?

Ubicaré el comando anterior en la ruta /etc/init.d/, en un archivo junto a otros comandos que ejecuto en el apagado y reinicio del equipo. La idea es mediante una sentencia if o algo por el estilo hacer que NO se ejecute en el reinicio o apagado, pero sí al pulsar la tecla F1.

PD: Me resulta comodo reunir todos mis scripts en un solo archivo.



Gambinoh

Cita de: daryo en 21 Diciembre 2014, 17:15 PM
usa xbindkeys
https://wiki.archlinux.org/index.php/Xbindkeys

Pero yo quiero hacerlo con bash, hablamos de la ejecución de un comando, no puede ser tan complicado, de hecho hasta se podría ejecutar cada cierto tiempo con cron.

Variable A recoge el valor de RAM actual en uso.
Si variable A > n
Se ejecuta el comando que libera la memoria

daryo

eso es completamente diferente a lo que habias dicho antes xD:
Código (bash) [Seleccionar]
#!/bin/bash
#limite de ram
limite=1000
#limite de swap
limiteswap=1

while true;
do
  clear
  usado=$(free -m | grep Mem | awk '{print $3}')
  swapusado=$(free -m | grep Swap | awk '{print $3}')
  echo "ram usada:" $usado " swap usado:" $swapusado
  if [ $usado -ge $limite ] && [ $swapusado -ge $limiteswap ]; then
    sysctl -w vm.drop_caches=3
  fi
  sleep 5
done
buenas

Gambinoh

#4
Joder, pero no me lo des todo hecho LOL.

No, en serio, muchas gracias, eres un crack.

De todas formas, ¿Qué solución de las dos te parece más adecuada?

Yo ya había creado un script xD para ejecutar con una combinación de teclas mediante xbindkeys como habías sugerido. No se me habría ocurrido lo del bucle while...

Citar#!/bin/sh

sync  &&   echo 3 > /proc/sys/vm/drop_caches

exit 0

Añado al archivo /etc/sudoers la siguiente línea:
Citar# Ejecución del script ramfree.sh
usuario equipo=NOPASSWD: /etc/init.d/ramfree.sh

Creo ~/.xbindkeysrc y allí añado estos parámetros:
Citar# Liberar memoria
"sudo /etc/init.d/ramfree.sh"
    Control+Alt + r