bash цикл перезапускает программу

bash цикл перезапускает программу

Я хотел бы закрывать и перезапускать программу (amule) каждые 4 минуты в цикле (пока я сам не решу закрыть).
Я попробовал этот код

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

но это не работает (даже после отключения подтверждения при выходе).

ПРАВКА
1) Яиметь в видучто этот скрипт должен закрыть амулет через 240 секунд (извините, 180 было ошибкой), а затем (сразу) снова открыть его. И, после этого, через 240 снова закрыть и снова открыть и так далее.
2) да,имяправильно, и когда я пытаюсь запустить эту строку /(wmctrl -c aMule;) из консоли, она работает

EDIT Я попытался сделать так: 1) создать новый скрипт:

wmctrl -c aMule
sleep 10
amule  

2) добавление этого скрипта в crontab (запускать каждые 6 минут)

Но команда "wmctrl -c aMule", котораяработает с терминала, не работает из (такого) скрипта.
Не понимаю почему...

решение1

amuleработает на переднем плане. Ваш скрипт никогда не доберется до sleep 240. Запустить amuleв фоновом режиме, чтобы скрипт мог продолжить работу.

#!/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

решение2

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

решение3

Вы можете попробовать заменить wmctrl -c aMule;на killlall amuleили pkill amule, в зависимости от того, какой из killallили pkillвы установили. Возможно, вам придется добавить опцию -KILLраньше amule, если amule игнорирует сигнал TERM.

Связанный контент