staging.inyokaproject.org

[bash, ruby] Hängende Aufrufe feststellen

Status: Gelöst | Ubuntu-Version: Lubuntu 18.04 (Bionic Beaver)
Antworten |

uzfH8

Avatar von uzfH8

Anmeldungsdatum:
3. Mai 2013

Beiträge: 1011

Hallo,

wenn ein Aufruf zum Beispiel von

1
df /home/ego/hier_ist_der_haengende_server_eingehaengt

hängt, weil der Server, der das Verzeichnis liefert, Probleme macht, kann ich das an eben diesem Hängen des Aufrufs erkennen, das heißt nach einigem Warten beschließe ich, dass es genug ist.

Kann man das mit einem Skript automatisieren?

Also als Pseudocode etwas in der Art

1
2
3
4
5
6
timeout = 1000 milliseconds
if server_hangs(timeout)
  proceed_emergency
else
  proceed_normal
end

Aufgrund meiner beschränkten Programmierkenntnisse wären mir Lösungen als bash- oder ruby-Skript am liebsten.

Gruß, Gerald

Schmetterhand

Anmeldungsdatum:
16. Mai 2015

Beiträge: 126

Es müßte gehen mit mit dem Programm timeout, z.B.

timeout 3 sh -c 'while true; do sleep 1; done'

Kommt nach 3 Sekunden zurück. Wichtig ist der Exitcode: Wenn der Befehl vor dem Timeout zurückkommt, ist er 0, andernfalls != 0.

Beispiel:

1
2
3
4
5
6
7
timeout 1 df /home/ego/hier_ist_der_haengende_server_eingehaengt > /dev/null
if [ $? == 0 ]
then
   echo "Normaler Betrieb"
else
   echo "Fehler beim Server"
fi

uzfH8

(Themenstarter)
Avatar von uzfH8

Anmeldungsdatum:
3. Mai 2013

Beiträge: 1011

Hallo,

funktioniert perfekt. Vielen Dank.

Gruß, Gerald

Antworten |