staging.inyokaproject.org

Shell Script zum prüfen nach laufender Anwendung

Status: Ungelöst | Ubuntu-Version: Server 16.10 (Yakkety Yak)
Antworten |

Ishidres

Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: 68

Hallo,

also, nach was ich suche, ist ein Shell Skript, welches prüft ob ein Prozess oder eine Anwendung (wie z.B: Java) läuft und falls dies nicht der Fall sein sollte, eine Funktion ausführt.

Ich hoffe, dass das verständlich ist und ich mich eingermaßen gut ausgedrückt habe 😀

Viele Grüße,

Ishidres

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Hm, Folgendes sollte das wohl erledigen:

ps ax -o comm| grep -c java && echo "führe anderes skript aus";

Dazu gebe ich allerdings zu bedenken, dass man wirklich nur prüft, ob irgendein java-Programm läuft. Da hast Du es ja wahrscheinlich auf ein ganz Bestimmtes abgesehen...

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Ishidres schrieb:

also, nach was ich suche, ist ein Shell Skript, welches prüft ob ein Prozess oder eine Anwendung (wie z.B: Java) läuft und falls dies nicht der Fall sein sollte, eine Funktion ausführt.

Wenn die Aktion einfach ein Neustart sein soll, dann kann man das auch mit einer Schleife in einem Skript machen:

1
2
3
while :; do
  das_programm mit Argumenten
done

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Doc_Symbiosis schrieb:

Hm, Folgendes sollte das wohl erledigen:

ps ax -o comm| grep -c java && echo "führe anderes skript aus";

Dazu gebe ich allerdings zu bedenken, dass man wirklich nur prüft, ob irgendein java-Programm läuft. Da hast Du es ja wahrscheinlich auf ein ganz Bestimmtes abgesehen...

PS kann selbst nach Programmnamen suchen:

ps -C java && echo "führe anderes skript aus";

Ishidres

(Themenstarter)
Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: 68

Doc_Symbiosis schrieb:

Hm, Folgendes sollte das wohl erledigen:

ps ax -o comm| grep -c java && echo "führe anderes skript aus";

Dazu gebe ich allerdings zu bedenken, dass man wirklich nur prüft, ob irgendein java-Programm läuft. Da hast Du es ja wahrscheinlich auf ein ganz Bestimmtes abgesehen...

Ne, genau das wollte ich! ☺

Jedoch prüft dieses Script ob das Programm läuft und sollte dies der Fall sein, führt es erst dann das Script aus. Ich wollte jedoch so einen art Neustart haben, also, falls das Programm NICHT läuft, es durch ein Skript restartet wird.

Wie müsste das Script denn sein, damit es nur etwas ausführt, wenn das Programm nicht läuft?

Würde mich freuen, wenn ihr mir nochmal auf die Sprünge helfen könntet 😀

VG Ishidres

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

ps ax -o comm| grep -c java && echo "Programm läuft" || echo "Programm läuft nicht";

Warum lässt du das Programm nicht gleich von einer Systemd-Unit kontrollieren? Die kann einen Restart nach Beendigung des Programmes (wahlweise bei Fehler oder immer) für dich erledigen und die Reihenfolge beim Start des Systems und Abhängigkeiten von anderen Diensten regeln.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Ishidres schrieb:

Jedoch prüft dieses Script ob das Programm läuft und sollte dies der Fall sein, führt es erst dann das Script aus. Ich wollte jedoch so einen art Neustart haben, also, falls das Programm NICHT läuft, es durch ein Skript restartet wird.

Aber genau das macht doch meine Lösung. Wenn Du noch sauber herunter fahren willst, muss man das noch etwas aufbohren:

1
2
3
4
5
6
7
trap 'kill -TERM $pid; exit 0' INT TERM QUIT

while :; do
  das_programm mit Argumenten &
  pid=$!
  wait
done

Wie müsste das Script denn sein, damit es nur etwas ausführt, wenn das Programm nicht läuft?

s.o.

Antworten |