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
amule
arbeitet im Vordergrund. Ihr Skript kommt nie dazu sleep 240
. Wird amule
im 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 amule
oder zu ersetzen pkill amule
, je nachdem, welches von killall
oder pkill
Sie installiert haben. Möglicherweise müssen Sie die Option -KILL
vorher hinzufügen amule
, wenn amule das TERM-Signal ignoriert.