Я хотел бы закрывать и перезапускать программу (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.