bash loop reinicia un programa

bash loop reinicia un programa

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

amuletrabaja en primer plano. Tu guión nunca llega a sleep 240. Ejecútelo amuleen 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 amuleo pkill amule, dependiendo de cuál de killallo pkillhaya instalado. Es posible que deba agregar la opción -KILLantes amulesi amule ignora la señal TERM.

información relacionada