PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash Script zum update von einem Clustersystem



ooPhil86oo
16-07-2008, 09:00
Hallo,

ich bin Informatikstudent und mache derzeit ein Praktikum in einer Linuxadministration. Hier laufen 4 Jboss Server, 2 davon vor und 2 hinter der Firewall, alle 4-7 Tage gibt es ein update der Geschäftslogik. Dabei müssen die Jbosse runtergefahren werden, sie müssen auch in einer bestimmten Reihenfolge runtergefahren werden aber das ist ja egal. Dann werden die JBoss-Verzeichnisse in JBoss-xyz.alt umbenant und es werden die neuen zu installierenden Jboss per wget auf den Fileserver geholt, dieser verschiebt die JBoss.tar.gz an die 4 Server via scp. Auf den Servern werden Sie jetzt nur noch entpackt, gestartet und der Rest ist nicht von Bedeutung.

Ich habe diese umgebung an einen testrechner nachgebildet. Dieser hat mehrere Benutzer bei denen ich mich über ssh, scp, ... einlogge, desweiteren läuft auf einen Benutzer ein JBoss (auf allen Benutzern würde der rechner nicht schaffen) und dann noch ein xampp als fileserver für das wget.

Ich habe nun das Problem, dass bislang alles klappt sogar der shutdown usw. aber da man ja vom Worstcase-Szenario ausgeht stelle ich mir die Frage: "Wie gehe ich sicher, dass der JBoss auch richtig heruntergefahren ist und wie gehe ich sicher das er wieder richtig hochgefahren ist?".

Normalerweiße überprüfen wir das mit dem top Befehl und schauen welche Prozesse für den rootuser JBoss laufen.

Wie kann ich das in der Bash machen????

PS Ich hoffe ihr versteht was ich meine!?!

yankee42
16-07-2008, 10:01
Als Anregung:
ps -A | grep JBoss

ooPhil86oo
16-07-2008, 10:18
Ahh OK, danke dir!!!

Muss mir wohl mal als nächstes den grep ganz genau anschauen, der ist ja überall gut.

ContainerDriver
16-07-2008, 19:43
Es gibt auch ein ps mit eingebautem grep, nämlich pgrep.

Gruß, Florian

ooPhil86oo
17-07-2008, 06:54
Hi danke,

ich nehme jetzt:

if [ ´ps -C prozessName | wc -l´ -gt 1 ]; then
....
fi

Mit ps -C kann man sich nur die Prozesse mit dem Namenn anzeigen lassen.

jan61
17-07-2008, 18:46
Moin,

oder auch ganz ohne greppen: pidof, pidofproc, checkproc

Jan

jan61
17-07-2008, 18:54
Moin,


ich nehme jetzt:
if [ ´ps -C prozessName | wc -l´ -gt 1 ]; then
....
fi


Ich glaube nicht, dass Du damit glücklich wirst - Deine Anführungszeichen kippen in die falsche Richtung. Du musst Backticks benutzen. Außerdem - warum so umständlich? ps -C liefert Returncode 0, wenn ein Prozess mit diesem Namen existiert, 1 wenn nicht. Also besser so:

if ps -C prozessName >/dev/null 2>&1; then
...
fiJan