Script - Prozess überwachen/starten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
fr0stblaze
Beiträge: 4
Registriert: 23.02.2012 13:55:34

Script - Prozess überwachen/starten

Beitrag von fr0stblaze » 23.02.2012 14:03:07

Hallo zusammen,

ich bin recht neu was Debian angeht und hoffe das ich hier eine Antwort auf meine Frage finden werde.

Seit Stunden suche ich eine Möglichkeit einen Prozess via Script zu überwachen. Sollte der Prozess aus irgendwelchen Gründen nicht laufen. Sei es Absturz oder o.ä. soll das Script weitere Schritte einleiten um den Prozess wieder ins Rennen zu bringen.

- Wo kann ich ein solchen Job hinterlegen, der z.B. alle 5-10 Min nach dem genannten Prozess schaut?
- Wie integriere ich den Start des nicht gestarteten Prozess?
- Wie kann ich diesen Job beim Systemstart ebenfalls starten lassen?
- .. und wie kann ich den Prozess ohne Root rechten starten lassen? (Muss ja nicht unbedingt sein das der Prozess mit Root läuft)

Danke schonmal :)

DeletedUserReAsG

Re: Script - Prozess überwachen/starten

Beitrag von DeletedUserReAsG » 23.02.2012 14:13:04

- Wo kann ich ein solchen Job hinterlegen, der z.B. alle 5-10 Min nach dem genannten Prozess schaut?
Du möchtest dir cron anschauen?
- Wie integriere ich den Start des nicht gestarteten Prozess?
Du startest das Programm aus dem Script heraus, wenn festgestellt wurde, dass es nicht läuft.
- Wie kann ich diesen Job beim Systemstart ebenfalls starten lassen?
Siehe erster Punkt, wenn die Überwachung gemeint ist. Wenn das Programm selbst beim Systemstart gestartet werden soll, möchtest du dir vielleicht die init-Scripts anschauen.
- .. und wie kann ich den Prozess ohne Root rechten starten lassen? (Muss ja nicht unbedingt sein das der Prozess mit Root läuft)
Du richtest den Cronjob für den User ein, unter dem das Programm ausgeführt werden soll.

cu,
niemand

fr0stblaze
Beiträge: 4
Registriert: 23.02.2012 13:55:34

Re: Script - Prozess überwachen/starten

Beitrag von fr0stblaze » 23.02.2012 14:33:08

Danke für die schnelle Antwort :)

Geht das bitte etwas genauer? Hab da leider nicht so den Druchblick, da ich recht neu im Thema Debian bin.
Ist Cron/Cronjob das Selbe? Hab ich Netz folgende Befehlszeile gefunden:
5 * * * * /Pfad/Pfad_weiter/Programm/.\start.sh
Damit wird der Prozess doch jede 5Min gestartet ohne zu prüfen, ob er überhaupt beendet ist oder bin ich auf dem falschen Dampfer?

Wie gesagt.. kenne mich da überhaupt nicht aus.

DeletedUserReAsG

Re: Script - Prozess überwachen/starten

Beitrag von DeletedUserReAsG » 23.02.2012 14:50:05

'man cron', bzw. 'man 5 crontab' können dir weiterhelfen. Grob gesagt, besteht cron aus zwei Teilen: dem crond, der seinerseits die crontabs abarbeitet, und die darin vermerkten cronjobs ggf. ausführt.

Dein cronjob müsste also das Script starten, das schaut, ob das eigentliche Programm noch läuft, und es ggf. neu startet.

cu,
niemand

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: Script - Prozess überwachen/starten

Beitrag von startx » 23.02.2012 15:09:40

als simpelsten ansatz kannst du doch einfach den output fon "ps -A" oder "ps faux" parsen um zu schauen ob dein script noch laeuft.

fr0stblaze
Beiträge: 4
Registriert: 23.02.2012 13:55:34

Re: Script - Prozess überwachen/starten

Beitrag von fr0stblaze » 23.02.2012 15:52:30

Ich verstehe irgendwie nur Bahnhof :D

Wie kann ein Befehl wissen das er automatisch beim Systemstart wieder gestartet werden soll?
Wie überprüft der Cronjob ob ein Prozess überhaupt läuft? In meinen Augen ist das nur eine Schleife, die nach X Minuten einfach den Prozess neu startet. Schön und gut, aber dann hab ich 20x den selben Prozess offen..

Verstehe ich nicht ganz..

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: Script - Prozess überwachen/starten

Beitrag von startx » 23.02.2012 15:57:04

Wie überprüft der Cronjob ob ein Prozess überhaupt läuft? In meinen Augen ist das nur eine Schleife, die nach X Minuten einfach den Prozess neu startet. Schön und gut, aber dann hab ich 20x den selben Prozess offen..
du hast zwei verschiedene dinge gefragt, `1) wie du wissen kannst ob ein script laeuft 2) wie du diese abfrage regelmaessig durchfuehren kannst

antwort 1) ausgabe von "ps" parsen

antwort 2) das "control script" via cron regelmaessig starten

fr0stblaze
Beiträge: 4
Registriert: 23.02.2012 13:55:34

Re: Script - Prozess überwachen/starten

Beitrag von fr0stblaze » 23.02.2012 16:25:33

Ich glaube das wird nichts. Habe absolut keine Ahnung wo ich ansetzen soll.

1. mit "ps -A" oder "ps faux" schauen ob der Dienst läuft (dient für meine Information und was ist mit dem System?)
2. Dienst neustarten, wenn beendet bzw. nicht in der Liste, doch woher weiß das System das es nicht läuft? Da muss ja eine Frage ablaufen von wegen:

prüfe ob "Dienst gestartet?" wenn "Nein?" dann "Starte Anwendung"
prüfe ob "Dienst gestartet?" wenn "Ja?" dann "Beende Script und für keine weitere Anweisung aus"

Das bekomme ich doch nicht mit der Abfrage ps und mit dem cron-Befehl hin - oder? Zu mindestens nicht nur damit..
Weiß aus der Schule, als wir Programmieren hatten, das eine Abfrage auch mit "if" / "else" usw. abläuft.

Entweder hab ich eine lange Leitung oder man versteht mich nicht :D

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: Script - Prozess überwachen/starten

Beitrag von startx » 23.02.2012 16:31:51

Das bekomme ich doch nicht mit der Abfrage ps und mit dem cron-Befehl hin - oder? Zu mindestens nicht nur damit..
Weiß aus der Schule, als wir Programmieren hatten, das eine Abfrage auch mit "if" / "else" usw. abläuft.
ja, eeee... , du kannst die ausgabe von "ps" ja mit deinem control script parsen, if/else oder was auch immer.
worin willst du dein script denn schreiben?

uname
Beiträge: 12408
Registriert: 03.06.2008 09:33:02

Re: Script - Prozess überwachen/starten

Beitrag von uname » 23.02.2012 16:36:32

Das Problem ist, dass du erst mal die zugehörigen Befehle kennen musst und dann musst du das ganze z.B. als Bash-Script zusammenbauen. Alleine Shellprogrammierung ist schon ziemlich grausam. Schau dir ein paar Beispiele unter /etc/init.d an. Dort wird im übrigen meistens eine Datei mit der zugehörigen Prozess-ID gespeichert. So kann verglichen werden ob der Prozess bzw. die Datei entsprechend existiert.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: Script - Prozess überwachen/starten

Beitrag von startx » 23.02.2012 18:24:37

also als kleine starthilfe:

du kannst in bash in etwa so ueberpruefen ob ein programm laeuft:

Code: Alles auswählen

#!/bin/bash

if [ "$(pidof name_meines_scripts)" ] 
then
  echo "programm laeuft"
  # alles in ordnung
else
  echo "programm scheint abgekackt"
  # muss man wohl neu starten
fi
ein script dieser art kannst du von cron alle 10 minuten oder so aufrufen lassen.

es waere aber schon gut, wenn du dich selbst auch ein bisschen mit cron und bash scripting beschaeftigst, tutorials gibts ja genug

Antworten