Me gustaría cerrar y reiniciar un programa (amule) cada 4 minutos como bucle (hasta que yo decida cerrarlo).
Probé este código
#!/bin/bash
for (( ; ; ))
do
amule
sleep 240;
wmctrl -c aMule;
done
pero no funciona (incluso después de desactivar la confirmación al salir).
EDITAR
1) yosignificarque este script debería cerrar amule después de 240 segundos (lo siento, 180 fue un error) y luego (inmediatamente) volver a abrirlo. Y, después, después de 240 volver a cerrar y volver a abrir y así sucesivamente.
2) si elnombrees correcto y cuando intento ejecutar esa línea /(wmctrl -c aMule;) desde la consola, funciona
EDITAR Intenté hacerlo: 1) creando un nuevo script:
wmctrl -c aMule
sleep 10
amule
2) agregar este script a crontab (ejecutarlo cada 6 minutos)
Pero el comando "wmctrl -c aMule", quefunciona desde la terminal, no funciona a partir de (tal) script.
No entiendo por qué...
Respuesta1
amule
trabaja en primer plano. Tu guión nunca llega a sleep 240
. Ejecútelo amule
en segundo plano para que el script pueda continuar.
#!/bin/sh
while :; do
amule & # run in background
sleep 240
killall amule
# or wmctrl -c aMule
wait # in case amule needs time to close
done
Respuesta2
watch -n 240 'amule;wmctrl -c aMule'
Respuesta3
Puede intentar reemplazar wmctrl -c aMule;
con killlall amule
o pkill amule
, dependiendo de cuál de killall
o pkill
haya instalado. Es posible que deba agregar la opción -KILL
antes amule
si amule ignora la señal TERM.