[DEBIAN] Automatischer Restart von Anwendungen

tooliload

tooliload

Jungspund
Hallo,

ich habe folgendes Problem, in einer Resource Shell mit Debian 3.1 / 4.0 stürzen, ab und zu mal Prozesse ab, wenn diese mehr als 90 Stunden laufen.

Gibt es eine Möglichkeit unter Debian, eventuell auch mit Zusatztools, welches z.B jede Minuten kontrolliert ob der Prozess noch läuft, wenn nicht soll er das Programm bzw. den Prozess wieder starten.

Danke im Voraus,

Gruß

TIno
 
Shell Skript schreiben und Cronjob einrichten, wäre eine Möglichkeit.

mfg
 
wozu cronjob ?
shellscript schreiben: prozess wird gestartet, wenn der prozess beendet wird, soll das script wieder zum anfang springen, fertig.
 
Ich würde die Ursache für die Abstürze suchen und keine Hacks versuchen. Bei Debian kenne ich so ein Verhalten nicht ansonsten hätte ich mit meinen Servern da ein Problem wenn das alles so instabil läuft.
 
hallo,

danke erstmal für die schnellen antworten.

shellscript schreiben: prozess wird gestartet, wenn der prozess beendet wird, soll das script wieder zum anfang springen, fertig.

das ist eine interessante möglichkeit, aber wenn die shelldatei nicht mehr läuft,
dann gehts auch nicht mehr.

Das Programm stürzt welches kontrolliert werden soll, stürzt ab, da es das machen soll, klingt zwar doof ist aber so, meine debian kiste steht hier neben mir und läuft mit seinen 1000mhz tag und nacht, damit die auslastung etwas verringert wird stürzt das programm kontrolliert ab, z.B bei 90% auslastung.

die shelldatei varriante hört sich daher sehr gut an, wie müsste man das anstellen, denn die pid ändert sich doch oder nicht?

gruß

tino
p.s super forum
 
Code:
#!/bin/sh

while true; do

/usr/bin/programmname

done;

Wäre die einfachste Variante. Dann könntest du das ganze noch so einrichten, dass das Skript als Daemon läuft und beim Systemstart mit gestartet wird, indem du es nach /usr/bin kopierst und dazu noch ein init Skript erstellst das es startet.
 
Hallo,

Danke dir für die rasche Antwort.
Werde es mal Heute Abend testen.

Melde mich dann in jedem Falle nochmal.

Gruß und Guten Hunger!

Tino
 
Es gibt ein Programmpaket mit dem Namen "Heartbeat".
Ob dies die oben geforderte Funktionalität hat, weiß ich allerdings nicht.
 
Das Programm stürzt welches kontrolliert werden soll, stürzt ab, da es das machen soll, klingt zwar doof ist aber so, meine debian kiste steht hier neben mir und läuft mit seinen 1000mhz tag und nacht, damit die auslastung etwas verringert wird stürzt das programm kontrolliert ab, z.B bei 90% auslastung.

Häh?

Von welchem Programm sprechen wir hier eigentlich?
 
Hallo,

Danke dir für die rasche Antwort.
Werde es mal Heute Abend testen.

Melde mich dann in jedem Falle nochmal.

Gruß und Guten Hunger!

Tino

das ist doch das was ich gesagt habe ... warum soll das shellscript auf einmal nichtmehr laufen ?
wenn das programm beendet wird um die auslastung zu verringern, dann denke ich sowieso, dass dies nicht der korrekte weg ist, denn es wird in diesem fall sofort wieder gestartet, wozu dann also beenden ?
 
das programm beendet wird um die auslastung zu verringern, dann denke ich sowieso, dass dies nicht der korrekte weg ist, denn es wird in diesem fall sofort wieder gestartet, wozu dann also beenden ?

Hallo,

das Programm erzeugt nach rund 100 Tagen (mal mehr mal weniger) im Ram eine Auslastung von 3,6GB, nach einem Start wird dieser wieder zu 2,4GB, das ist ein riesen Unterschied. Die Kiste hat 6GB Ram, immer wenn das Programm abstürzt war dieser erreicht (+andere Prozesse wie Apache und mySQL Host)

Gruß

Tino
//Edit
Häh?

Von welchem Programm sprechen wir hier eigentlich?

Sorry vergessen, das ist eine Eigenprogrammierung um eine Standleitung zu Cachen, somit schneller zu machen und einen Ping von 1ms erreichen zu können ;) ... hat noch keinen Namen, daher nenne ich es ab Heute AlphaOne

Gruß

Tino
 
Zuletzt bearbeitet:
naja, in dem fall dürfte das shell-script ja die lösung sein ...
 
Hallo,

habe jetzt das Shellscript probiert, leider will es nicht so wie ich will.
programm.sh - Inhalt
#!/bin/sh
while true;do
/home/processing/kv/./manvi restart
done;

Wenn ich das ganze via ./programm.sh starten will, dann kommt:

bash: ./programm.sh: /bin/sh^M: bad interpreter: No such file or directory

Im Normalfall bedeutet "^M" ja, das ein Leerzeichen von Windows geschrieben wurde ist hier leider nicht der Fall (nano zeigt keine "Windowszeichen" an)

Hab ich das ganze falsch verstanden?
Die Shell ist auf jeden Fall installiert und mit einem Symlink auf /bin/bash verlinkt (habe das Script auch schon danach geändert, leider gings auch nicht).

Auch das starten der Shell ging mit "sh" problemlos.

Freue mich auf Antworten.

Gruß

Tino
 
Code:
 /bin/bash[B]^M[/B]

Verwendest Du etwa einen DOS-Editor?

Nimm was ordentliches oder lasse mal dos2unix auf Deine Scriptdatei los.

Was sagen

Code:
which bash

ls -ls $(which sh)

Greetz,

RM
 
Hallo,

ich nutze nano als Editor.
Es gab bisher mit nano nie Probleme bzgl. Leerzeichen...

Danke für den Tipp, werde mal dos2unix ergoogleln.
// edit

root@srv12:~# which bash
/bin/bash
root@srv12:~#
root@srv12:~# ls -ls $(which sh)
0 lrwxrwxrwx 1 root root 4 Mar 2 18:02 /bin/sh -> bash


Gruß

Tino
 
OK, das "Bad Interpreter" bringt mich gerade noch auf ne Idee.

Irgendwo in meiner verkalkten Birne liegt noch eine Information, daß man nachsehen sollte, ob die Partition, auf welcher das Script liegt, nicht zufälligerweise "noexec" gemountet ist.

Im Zweifelsfall mal das Script nach /usr/local/bin verschieben oder die entsprechende Partition "exec" remounten.

Greetz,

RM

//Edit:

Hat sich dann wohl erledigt, bleibt aber für Querleser stehen.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

nochmal alles Zusammengefasst die Shell-Datei sieht so aus wie am Anfang.
Habe D2U installiert, mit

apt-get install tofrodos

Danach habe ich es durchlaufen lassen mit

dos2unix programm.sh

Das Starten geht nun erfolgreich, Danke.
(Beim nächsten mal mache ich das aber mit nohup davor ... die Shellkonsole war danach erstmal voll ;)

Gruß

Tino
 
Code:
#!/bin/sh
while true;do
/home/processing/kv/./manvi [COLOR="Red"]restart[/COLOR]
done;

Warum das restart? Im Normalfall sollte die Schleife das Programm aufrufen und da hinter dem Aufruf kein & steht, bleibt sie dann stehen und zwar so lange, wie das Programm läuft. Wird das gekillt läuft die Schleife erneut durch und ruft das Programm wieder auf.
Evtl könnte man auch noch ein "sleep 5" oder mehr dahintersetzen, weil wenn das Prog nur gekillt wird wenn das System überlastet ist, dann könnte man ja bissl Zeit lassen bevor es wieder aufgerufen wird.
 

Ähnliche Themen

Debian Kernel kompilieren

[HowTo] Debian Installation mit Installer über SSH

Mac OS X + Vista: Automatische Netzwerkerkennung

Mein OpenSuSE 10.3 zerfällt

Problem mit Apache2 + MySQL Server

Zurück
Oben