Bash-Schleife startet ein Programm neu

Bash-Schleife startet ein Programm neu

Ich möchte ein Programm (amule) alle 4 Minuten als Schleife schließen und neu starten (bis ich mich entscheide, es zu schließen).
Ich habe diesen Code ausprobiert

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

aber es funktioniert nicht (auch nicht nach Deaktivieren der Bestätigung beim Beenden).

BEARBEITEN
1) Ichbedeutendass dieses Skript amule nach 240 Sekunden schließen soll (sorry, 180 war ein Fehler) und dann (sofort) wieder öffnen soll. Und danach, nach 240, wieder schließen und wieder öffnen und so weiter.
2) ja, dasNameist richtig und wenn ich versuche, die Zeile /(wmctrl -c aMule;) von der Konsole aus auszuführen, funktioniert es

BEARBEITEN Ich habe Folgendes versucht: 1) Erstellen eines neuen Skripts:

wmctrl -c aMule
sleep 10
amule  

2) Hinzufügen dieses Skripts zu Crontab (alle 6 Minuten ausführen)

Aber der Befehl "wmctrl -c aMule", derfunktioniert vom Terminal aus, funktioniert nicht mit (solchem) Skript.
Ich verstehe nicht, warum ...

Antwort1

amulearbeitet im Vordergrund. Ihr Skript kommt nie dazu sleep 240. Wird amuleim Hintergrund ausgeführt, damit das Skript weiterlaufen kann.

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

Antwort2

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

Antwort3

Sie können versuchen, wmctrl -c aMule;durch killlall amuleoder zu ersetzen pkill amule, je nachdem, welches von killalloder pkillSie installiert haben. Möglicherweise müssen Sie die Option -KILLvorher hinzufügen amule, wenn amule das TERM-Signal ignoriert.

verwandte Informationen