loop bash reinicia um programa

loop bash reinicia um programa

Gostaria de fechar e reiniciar um programa (amule) a cada 4 minutos como loop (até que eu decida fechar).
Eu tentei esse código

#!/bin/bash
for (( ; ; ))
do
amule
sleep 240;
wmctrl -c aMule;
done  

mas não funciona (mesmo depois de desativar a confirmação ao sair).

EDITAR
1) Eusignificarque este script deve fechar o amule após 240 segundos (desculpe, 180 foi um erro) e então (imediatamente) reabri-lo. E, depois, após 240 fechar novamente e reabrir e assim por diante.
2) sim, onomeestá correto e quando tento executar essa linha /(wmctrl -c aMule;) do konsole, funciona

EDIT Tentei fazer isso: 1) criando um novo script:

wmctrl -c aMule
sleep 10
amule  

2) adicionando este script ao crontab (executado a cada 6 minutos)

Mas o comando "wmctrl -c aMule", quefunciona a partir do terminal, não funciona com (tal) script.
Eu não entendo porque...

Responder1

amulefunciona em primeiro plano. Seu script nunca chega a sleep 240. Execute amuleem segundo plano para que o script possa 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

Responder2

watch -n 240 'amule;wmctrl -c aMule'

Responder3

Você pode tentar substituir wmctrl -c aMule;por killlall amuleou pkill amule, dependendo de qual killallvocê pkillinstalou. Pode ser necessário adicionar a opção -KILLantes amulese o amule ignorar o sinal TERM.

informação relacionada