Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Gambinoh en 21 Diciembre 2014, 16:10 pm



Título: Ejecutar orden al pulsar F1
Publicado por: Gambinoh en 21 Diciembre 2014, 16:10 pm
Hola, tengo entendido que hay un comando para liberar la memoria RAM.

Código:
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.



Título: Re: Ejecutar orden al pulsar F1 (bash)
Publicado por: daryo en 21 Diciembre 2014, 17:15 pm
usa xbindkeys
https://wiki.archlinux.org/index.php/Xbindkeys


Título: Re: Ejecutar orden al pulsar F1 (bash)
Publicado por: Gambinoh en 21 Diciembre 2014, 20:05 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.

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


Título: Re: Ejecutar orden al pulsar F1 (bash)
Publicado por: daryo en 21 Diciembre 2014, 22:27 pm
eso es completamente diferente a lo que habias dicho antes xD:
Código
  1. #!/bin/bash
  2. #limite de ram
  3. limite=1000
  4. #limite de swap
  5. limiteswap=1
  6.  
  7. while true;
  8. do
  9.  clear
  10.  usado=$(free -m | grep Mem | awk '{print $3}')
  11.  swapusado=$(free -m | grep Swap | awk '{print $3}')
  12.  echo "ram usada:" $usado " swap usado:" $swapusado
  13.  if [ $usado -ge $limite ] && [ $swapusado -ge $limiteswap ]; then
  14.    sysctl -w vm.drop_caches=3
  15.  fi
  16.  sleep 5
  17. done
  18.  


Título: Re: Ejecutar orden al pulsar F1 (bash)
Publicado por: Gambinoh en 21 Diciembre 2014, 23:35 pm
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