2017-05-11 1 views
1

Ich versuche, einen Befehl nach einer bestimmten Zeit auszuführen. Ich fand diese Lösungen:Wiederhole den nicht abgeschlossenen Befehl alle x Zeitintervalle.

watch -n60 command 

while true; do command; sleep 60; done 

Sie arbeiten gut, wenn der Befehl endet (zum Beispiel: echo "message")

Der Code, den ich renne nicht beendet. Deshalb funktionieren diese Lösungen nicht für mich. Aber ich möchte es ausführen, es nach 60 Sekunden beenden und es erneut ausführen. Wie kann ich das machen?

+1

Und was passiert, nachdem Sie es 1000 mal ausgeführt haben - und keiner beendet? Sie haben 1000 Prozesse noch ausgeführt? Sie sind verpflichtet, Ihren Server/System/was auch immer zu töten. Sie sollten wirklich überdenken, was Sie wollen/brauchen. –

+0

@AleksG Ich möchte es nach der Zeit beenden und neu starten – JayGatsby

+0

Hintergrund der Commad: 'während wahr; tue den Befehl &; Schlaf 60; done' – czvtools

Antwort

2

Verwenden Sie die timeout command

while true; do timeout 60 command; done 

Beachten Sie, dass, wenn der Befehl beendet, bevor die 60 Sekunden bis sind, Es wird sofort ausgeführt, anstatt auf die Minute zu warten.

+0

es funktioniert! Danke – JayGatsby

0

Dies startet die command alle 60 Sekunden und tötet den Prozess, wenn es nicht abgeschlossen ist:

while true; do command &; LAST_PID=$!; sleep 60; kill -9 $LAST_PID; done 
Verwandte Themen