PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Programm beim Systemstart ausführen



your_BadBoy
11-10-2004, 14:33
Hallo!

Ich möchte mit einem Skript ein Java Programm (das einen Server darstellt) auf einem Suse Linux 9.1 automatisch beim Systemstart aufrufen.

Ich habe folgendes Shellskript geschrieben, jedoch funktioniert der Start des Java Programms nicht. Der Samba wird jedoch gestartet (das Skript wird also aufgerufen).



#!/bin/bash
echo +-------------------------------+ >> /sps/skript.log
echo Samba starten... >> /sps/skript.log
smbd
nmbd
cd /sps/sources/env
echo SPS server starten... >> /sps/skript.liog
bash -c 'java B_ServerStart server.xml'
echo Skript abgearbeitet >> /sps/skript.log


Kann das überhaupt funktionieren, dass ein Java-Programm beim Systemstart ausgeführt wird? wenn ja wie?

Danke für eure Hilfe

Deever
11-10-2004, 15:00
Kann das überhaupt funktionieren, dass ein Java-Programm beim Systemstart ausgeführt wird? wenn ja wie?
Ja.
Per init-Skript. Nähere Informationen findest du im Handbuch oder online. Für Java mußt du wohl CLASSPATH richtig setzen.

Gruß,
/dev

your_BadBoy
11-10-2004, 23:42
also auch auf die gefahr hin, dass ich mich jetzt hier unbeliebt mache... ich kann java programmieren, arbeite aber erst seit kurzem mit einem Linux-Server und kenne mich daher nicht wirklich aus (arbeite sonst unter Windows)

Da ich Java-Programme compelieren und ausführen kann, nehme ich an, dass der Classpath richtig gesetzt ist. Mein Skript von oben ist auch lauffähig, jedoch habe ich das Problem, dass beim Systemstart das Java-Programm nicht ausgeführt werden kann. Für nähere Informationen zum init-Skript wäre ich dankbar.

Ich habe natürlich einen Softlink für das von mir erzeuge Skript in rc5.d angelegt.

Vielleicht kann mir irgendwer genauere Informationen liefern.

Ist es vielleicht ein Problem, dass das Javaprogramm einen Server mit einer Konsole startet? Kann ich irgendwo diese Konsole sichtbar machen?

Danke für eure Hilfe

Deever
12-10-2004, 00:17
Da ich Java-Programme compelieren und ausführen kann, nehme ich an, dass der Classpath richtig gesetzt ist. Mein Skript von oben ist auch lauffähig, jedoch habe ich das Problem, dass beim Systemstart das Java-Programm nicht ausgeführt werden kann.Weil CLASSPATH erst nach dem Booten gesetzt wird.
Du mußt die Variable in deinem Skript explizit setzen.


Für nähere Informationen zum init-Skript wäre ich dankbar.Hat es unter SuSE kein *.skeleton Skript? Du könntest dieses als Ausgangspunkt für deines nehmen.


Ich habe natürlich einen Softlink für das von mir erzeuge Skript in rc5.d angelegt.Nicht grundsätzlich falsch, aber für das Format des Skripts sieh dir mal die anderen an.


Vielleicht kann mir irgendwer genauere Informationen liefern.Das Handbuch. Es lohnt sich! Mit dem hab ich auch meine ersten Schritte gemacht. Falls du keine Boxversion hast, liegt das Buch IIRC auf den CDs in maschinenlesbarer Form vor. Stichwort: "Das SuSE Linux Bootkonzept".


Ist es vielleicht ein Problem, dass das Javaprogramm einen Server mit einer Konsole startet? Kann ich irgendwo diese Konsole sichtbar machen?Shellskripte sind nicht-interaktive Shells und haben daher kein Terminal zugeordnet (genauer: nicht zwingendermaßen).

Gruß && HTH!
/dev

Pingu
12-10-2004, 07:15
Das Problem müßte sich so schon lösen lassen, wenn man nur ein bischen in das Script schaut:


#!/bin/bash

Sagt uns, daß schon alles innerhalb der Bash ausgeführt wird.


echo SPS server starten... >> /sps/skript.liog

Ist wohl ein Schreibfehler.


bash -c 'java B_ServerStart server.xml'

Warum nocheinmal Bash? Ist doch schon innerhalb der Bash. Folgendes müßte also reichen:


java B_ServerStart server.xml

Vielleicht müßten aber noch die Pfad angepaßt werden:


/usr/bin/java /wo/auch/immer/das/sein/mag/B_ServerStart /wo/auch/immer/das/sein/mag/server.xml

Wenn das Programm nich einfach einen Daemon installiert, sondern in einer großen Schleife läuft, sollte man es vielleicht als extra Prozess starten:


/usr/bin/java /wo/auch/immer/das/sein/mag/B_ServerStart /wo/auch/immer/das/sein/mag/server.xml &


Dann sollte das ganze eigentlich laufen. Durch einfaches logisches Herangehen war der Lösungsweg vorgezeichnet.

Pingu