2016-07-22 19 views
0

ich tue folgendes:Bash: Wenn Befehl Timeout, etwas anderes ausführen

timeout 180 bash myscript.txt 

myscript.txt soll vollständig in weniger als 180 Sekunden ausgeführt werden. WENN NICHT, ich möchte emergencyscript.txt ausgeführt werden. Ist es möglich?

Wie

timeout 180 [bash myscript.txt] [bash emergencyscript.txt] 

Antwort

2

Der Exit-Status von timeout ist 124, wenn der Befehl eine Zeitüberschreitung. Sie können dies explizit testen.

timeout 180 bash myscript.txt 
exit_status=$? 
if [[ $exit_status -eq 124 ]]; then 
    bash emergencyscript.txt 
fi 

Jeder andere Wert für exit_status ist das Ergebnis myscript.txt bis zum Abschluss ausgeführt wird.

0

vielleicht versuchen, zu überprüfen, ob Timeout fehlgeschlagen ist oder nicht?

Das hängt von der Zeitüberschreitung oder dem Skript ab, das einen Wert ungleich null gibt, wenn es zu lange dauert.

+0

Behoben! Ich mag deine Antwort mehr, viel spezifischer mit der Überprüfung – Dylan

Verwandte Themen