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
amule
funciona em primeiro plano. Seu script nunca chega a sleep 240
. Execute amule
em 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 amule
ou pkill amule
, dependendo de qual killall
você pkill
instalou. Pode ser necessário adicionar a opção -KILL
antes amule
se o amule ignorar o sinal TERM.