Konsolen Timeout bauen

Hallo,
für ein bash Script habe ich eine timeout gebraucht.
Leider gab es da keine Befehle ‚timeout‘ leider nicht.
Installieren konnte ich es auch nicht.
zum Glück gab es bei stackoverflow eine Lösung

#!/bin/sh
( Dein_Befehl ) & pid=$!
( sleep $TIMEOUT && kill -HUP $pid ) 2>/dev/null & watcher=$!
wait $pid 2>/dev/null && pkill -HUP -P $watcher

Kurz eine Zeilen Erklärung
Erste Zeile: ist der Shebang (#!/bin/sh)
Zweite Zeile: Führe dein Befehl in Hintergrund aus und speichere die ID
Dritte Zeile: Sorge dafür das nach $TIMEOUT Sekunden der Prozess auf Grund seiner ID Gekillt wird
Vierte Zeile: Warte drauf das deine Befehl schneller ist als der Kill Auftrag und kill diese, wenn dein Befehl schneller als der Timeout ist

Hier noch eine Version die eine Ausgabe erzeugt

( Dein_Befehl ) & pid=$!
( sleep $TIMEOUT && kill -HUP $pid ) 2>/dev/null & watcher=$!
if wait $pid 2>/dev/null; then
    echo "dein Befhel ist fertig"
    pkill -HUP -P $watcher
    wait $watcher
else
    echo "Du hast ein Timneout"
fi

Viele Grüße

Mkuh

Quelle :stackoverflow.com Frage

mkuh (233 Posts)


Dieser Beitrag wurde unter Allgemein, Open Source Blog Netzwerk veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf Konsolen Timeout bauen

  1. AnonymerFeigling sagt:

    Wenn es nur darum geht, einen Prozess nach einer gewissen Zeitspanne zu beenden, gäbe es dafür auf Debian das timelimit Package. Da kann man auch konfigurieren, welches Signal gesendet wird. So weit ich weiß, ist timelimit auch nicht debian-spezifisch; es wird halt von den meisten anderen Distributionen nicht paketiert. Die Upstream-Webseite ist http://devel.ringlet.net/sysutils/timelimit/ .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *