ubuntuusers.de

Prozessüberwachung mittels Script

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

quietMichael

Anmeldungsdatum:
23. Januar 2020

Beiträge: 3

Hallo Linux Community,

Ich habe Folgendes Problem ich möchte einen Prozess Überwachen. Und, wenn dieser Aus ist ihn starten. Ich wollte es über dieses script machen allerdings überprüft das Script nicht ob der Server noch läuft, sondern beendet es und startet es einfach neu was er ja normal nicht muss, wenn er läuft, könnt ihr mir da weiterhelfen?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh
# Pruefe ob der JTS3Bot Läuft

TEST=ps -A | grep JTS3Servermod | awk "{ print $4 }"

if [ "$TEST" != "JTS3Servermod" ]; then
    /jts3servermod_startscript.sh stop
    sleep 10
    /jts3servermod_startscript.sh start
fi

Viele Grüße Michael

Bearbeitet von ChickenLipsRfun2eat:

Bitte wähle in Zukunft einen aussagekräftigen Titel!

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9626

Wohnort: Münster

Ich verstehe Dein Problem nicht, dann das Skript sollte (allerdings umständlich) genau das machen, was Du beschreibst. Allerdings nur einmal. Wenn es dauerhaft etwas überwachen soll, musst Du entweder eine endlose Schleife verwenden oder das Skript erneut starten.

Wenn Du schon weißt, das das zu überwachende Programm nicht läuft, ist ein Stopp überflüssig. Es sei denn, Du musst hinter dem verstorbenem Programm noch etwas aufräumen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

Das einfachste ist:

1
while irgendein_prozess arg1 arg2 ...; do :; done

Das bricht ab, wenn der Prozess mit einem Fehler zurückkommt. Wenn Du das selektiver gestalten willst:

1
while irgendein_prozess arg1 arg2 ... || [ $? -ne 2 ] ; do :; done

Das läuft so lange, bis irgendein_prozess mit Exit-Code 2 zurückkommt.

quietMichael

(Themenstarter)

Anmeldungsdatum:
23. Januar 2020

Beiträge: 3

Hallo,

Danke für die schnellen Antworten ich habe es nun so gelöst:

1
2
3
4
5
6
7
# Pruefe ob der JTS3Bot Läuft

TEST=ps -A | grep JTS3Servermod | awk "{ print $4 }"

if [ "$TEST" != "JTS3Servermod" ]; then
    /jts3servermod_startscript.sh start
fi

edit: wenn ich das Script so Starte kommt folgendes:

./botscript.sh: line 3: -A: command not found

Allerdings habe ich das Problem, wenn ich das script in einem Cron laufen lasse passiert nichts :/ Kann man das auch ohne cron betreiben so ein Script?

Grüße

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

quietMichael schrieb:

1
2
3
4
5
6
7
# Pruefe ob der JTS3Bot Läuft

TEST=ps -A | grep JTS3Servermod | awk "{ print $4 }"

if [ "$TEST" != "JTS3Servermod" ]; then
    /jts3servermod_startscript.sh start
fi

In Zeile 3 brauchst Du eine Command Substitution.

edit: wenn ich das Script so Starte kommt folgendes:

./botscript.sh: line 3: -A: command not found

Genau, wg. oben. Ich würde aber auch pgrep nutzen, um den Prozess zu identifizieren. Generell, wenn Dein System systemd hat, würde ich dem das Überwachen überlassen. Das ist einfacher und robuster.

Allerdings habe ich das Problem, wenn ich das script in einem Cron laufen lasse passiert nichts :/ Kann man das auch ohne cron betreiben so ein Script?

Meine Version brauchst Du einfach nur beim Boot auszuführen und dann läuft dann kontinuierlich.

quietMichael

(Themenstarter)

Anmeldungsdatum:
23. Januar 2020

Beiträge: 3

rklm schrieb:

Meine Version brauchst Du einfach nur beim Boot auszuführen und dann läuft dann kontinuierlich.

Diese würde regelmässig Prüfen ob der Process noch läuft und ihn, wenn nicht wieder starten? Wie müsste ich es dann in die Boot eintragen?

Viele Grüße

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

quietMichael schrieb:

rklm schrieb:

Meine Version brauchst Du einfach nur beim Boot auszuführen und dann läuft dann kontinuierlich.

Diese würde regelmässig Prüfen ob der Process noch läuft und ihn, wenn nicht wieder starten?

Nein, die wartet einfach, bis er terminiert und startet ihn dann neu. Da muss nix regelmäßig geprüft werden.

Wie müsste ich es dann in die Boot eintragen?

Das musst Du in dem Forum Deiner Distribution erfragen. Ubuntu ist es ja wohl nicht.

frechdachs

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

Hallo zusammen,

ich habe gerade nicht viel Zeit, aber eine Sache ist mir aufgefallen:

quietMichael schrieb:

Hallo Linux Community,

Ich habe Folgendes Problem ich möchte einen Prozess Überwachen. Und, wenn dieser Aus ist ihn starten. Ich wollte es über dieses script machen allerdings überprüft das Script nicht ob der Server noch läuft, sondern beendet es und startet es einfach neu was er ja normal nicht muss, wenn er läuft, könnt ihr mir da weiterhelfen?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh
# Pruefe ob der JTS3Bot Läuft

TEST=ps -A | grep JTS3Servermod | awk "{ print $4 }"

if [ "$TEST" != "JTS3Servermod" ]; then
    /jts3servermod_startscript.sh stop
    sleep 10
    /jts3servermod_startscript.sh start
fi

Zeile 4 kann meiner Meinung nach so nicht funktionieren. Das müsste so lauten:

TEST=$(ps -A | grep JTS3Servermod | awk "{ print $4 }")

Viele Grüße Michael

Liebe Grüße,

frechdachs

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

frechdachs schrieb:

Zeile 4 kann meiner Meinung nach so nicht funktionieren. Das müsste so lauten:

TEST=$(ps -A | grep JTS3Servermod | awk "{ print $4 }")

Ja, das hatte jemand bereits angemerkt.

Antworten |