Ich verwende die Timeout-Funktion auf Debian, um 5 Sekunden auf mein Skript zu warten. Funktioniert gut, aber das Problem, das ich habe, ist, dass ich einen Rückgabewert benötige. Wie 1 für Timeout und 0 für No Timeout. Wie mache ich das?
Schauen Sie sich meinen Code an:
timeout 5 /some/local/script/connect_script -x 'status' > output.txt
# here i need the return of timeout
Wie Sie sehen, gibt mein connect_script -x 'status' den Status als Zeichenfolge zurück und druckt ihn auf dem Bildschirm aus (wahrscheinlich können Sie dies nicht sehen). Hintergrund dieses Problems ist, dass das Skript nichts unternimmt, wenn der Server (für connect_script) einfriert . Deshalb brauche ich dafür eine Auszeit. Und wenn es Zeitüberschreitungen gibt, möchte ich den Server neu starten. Ich kann das tun, aber ich habe keine Ahnung, wie ich sehen kann, ob es eine Zeitüberschreitung gibt oder nicht ...
quelle
Nach dem Handbuch (
man timeout
):Kombinieren Sie dies mit dem Wissen, dass der Exit-Status oder der Rückgabewert in der Variablen gespeichert ist
$?
, und wir haben ...Dann können Sie mehr Verarbeitung basierend auf dem Wert von
$RETVAL
ausführen, der 124 ist, wenn das Zeitlimit überschritten wird, oder einen anderen Wert basierend auf dem Exit-Status vonconnect_script
.quelle
Der Rückgabewert von
timeout
hängt von dem Signal ab, mit dem Sie das untergeordnete Element beenden.SIGTERM
gibt 124 zurück:Aber
SIGKILL
gibt 137 zurück:Siehe die Handbuchseite:
quelle