Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

26.09.2008, 09:29

init Script für APC PowerChute

Hi

Ich habe auf einem Gentoo-System den APC PowerChute Agent installiert. Das ganze läßt sich auch mit dem mitgeliefertem Script starten und beenden. Damit der Agent beim Start des Systems ausgeführt wird, habe ich einen Symlink auf /etc/init.d/apc gesetzt und den Dienst zum default runlevel hinzugefügt. Der Agent will aber nicht starten. Habe es dann mit einem selbsgeschriebenen Initscript versucht. Das gleiche Problem.

Das mitgeliferte Script setzt beim starten mit export eine Variable mit Java-Gedöhns. Kann es sein das die Variable beim Init-Vorgang wieder gelöscht/überschrieben wird oder as Java-System noch nicht gestartet ist?


Hier mal das Script

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
case "$1" in
start)
	ps `cat /etc/pbeagent.pid 2>/dev/null | awk "{ print "'$1'" }"` | grep Dpicard.main.thread > /dev/null
	if [ $? = 0 -a -e /etc/pbeagent.pid ]
	then
		echo Process Already Started.  Cannot start twice.
	else
		cd /opt/APC/PowerChuteBusinessEdition/Agent
		export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/APC/PowerChuteBusinessEdition/Agent/lib/linux
		/bin/java/jre/1.4.2_11/bin/java -Dpicard.main.thread=blocking -classpath ./lib/AdvSnmp.jar:./lib/application.jar:./lib/jsdk.jar:./lib/comm.jar:./lib/mail.jar:./lib/RXTXComm.jar:./lib/activation.jar:./lib/util.jar:./lib/m11.jar:./lib/ds.jar:./lib/sss.jar:./lib/pcbe_ds.jar:./comp/AliCommunication.jar:./comp/CommandFileRunner.jar:./comp/DataLogger.jar:./comp/DiscoveryListener.jar:./comp/EventLogger.jar:./comp/EventTracker.jar:./comp/Host.jar:./comp/http.jar:./comp/picard.jar:./comp/PowerSource.jar:./comp/QueryServer.jar:./comp/Security.jar:./comp/ShutdownBehavior.jar:./comp/Shutdowner.jar:./comp/SimpleBroadcaster.jar:./comp/SMTPMailer.jar:./comp/UPSManagerAutoUpdate.jar:./comp/shutdownerlets/OSShutdownerlet.jar:./comp/shutdownerlets/ExchangeShutdownerlet.jar:./comp/shutdownerlets/IISShutdownerlet.jar:./comp/shutdownerlets/NotesShutdownerlet.jar:./comp/shutdownerlets/SQLShutdownerlet.jar:./comp/shutdownerlets/SiebelShutdownerlet.jar:./Resources/Japanese.jar com.apcc.m11.application.PicardApplication @critical.cfg 2>/dev/null 1>/dev/null &
		echo $! >/etc/pbeagent.pid
		touch /var/lock/subsys/PBEAgent 1>/dev/null 2>/dev/null
		exit $?
	fi
	;;
stop)
	PID=`cat /etc/pbeagent.pid 2>/dev/null | awk "{ print "'$1'" }"`
	kill $PID 1>/dev/null 2>/dev/null
	rm -f /etc/pbeagent.pid 1>/dev/null 2>/dev/null
	rm -f /var/lock/subsys/PBEAgent 1>/dev/null 2>/dev/null
	exit $?
	;;
status)
	ps `cat /etc/pbeagent.pid 2>/dev/null | awk "{ print "'$1'" }"` | grep Dpicard.main.thread > /dev/null
	if [ $? = 0 -a -e /etc/pbeagent.pid ]
	then
		echo Running
	else
		echo Stopped
	fi
	;;
*)
	echo "Usage $0 {start|stop|status}"
	exit 1
	;;
esac


Wie bekomme ich das Script beim Init-Vorgang zum laufen ?(

Mfg Akkie

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »akkie« (26.09.2008, 20:43)


2

26.09.2008, 11:07

Quellcode

1
#!/bin/sh

ist schonmal falsch.

Ebenso sollte das Starten und Beenden mittels start-stop-daemon erledigt werden (dann müsste das Problem mit der PID auch gelöst sein).

Schau dir doch am besten andere Skripte in /etc/init.d an und nimm diese als Vorlage.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

3

26.09.2008, 15:51

Hi

Das Script was ich gepostet hatte, war das vom Hersteller.

Zitat

ist schonmal falsch.

Ebenso sollte das Starten und Beenden mittels start-stop-daemon erledigt werden (dann müsste das Problem mit der PID auch gelöst sein).


Das ganze läßt sich nicht über den start-stop-daemon starten. Denn dieser Teil muss zusammen ausgeführt werden, da sonst das Programm nicht geladen werden kann. Das heist ganz genau das /bin/java/jre/1.4.2_11/bin/java in dem Verzeichnis /opt/APC/PowerChuteBusinessEdition/Agent ausgeführt werden muss. Der start-stop-agent tut das aber nicht.

Wie man die Befehle verknüpfen kann und an den start-stop-agent weiter gibt, habe ich nicht rausgefunden.

Quellcode

1
2
3
cd /opt/APC/PowerChuteBusinessEdition/Agent
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/APC/PowerChuteBusinessEdition/Agent/lib/linux
/bin/java/jre/1.4.2_11/bin/java -Dpicard.main.thread=blocking -classpath ./lib/AdvSnmp.jar:./lib/application.jar:./lib/jsdk.jar:./lib/comm.jar:./lib/mail.jar:./lib/RXTXComm.jar:./lib/activation.jar:./lib/util.jar:./lib/m11.jar:./lib/ds.jar:./lib/sss.jar:./lib/pcbe_ds.jar:./comp/AliCommunication.jar:./comp/CommandFileRunner.jar:./comp/DataLogger.jar:./comp/DiscoveryListener.jar:./comp/EventLogger.jar:./comp/EventTracker.jar:./comp/Host.jar:./comp/http.jar:./comp/picard.jar:./comp/PowerSource.jar:./comp/QueryServer.jar:./comp/Security.jar:./comp/ShutdownBehavior.jar:./comp/Shutdowner.jar:./comp/SimpleBroadcaster.jar:./comp/SMTPMailer.jar:./comp/UPSManagerAutoUpdate.jar:./comp/shutdownerlets/OSShutdownerlet.jar:./comp/shutdownerlets/ExchangeShutdownerlet.jar:./comp/shutdownerlets/IISShutdownerlet.jar:./comp/shutdownerlets/NotesShutdownerlet.jar:./comp/shutdownerlets/SQLShutdownerlet.jar:./comp/shutdownerlets/SiebelShutdownerlet.jar:./Resources/Japanese.jar com.apcc.m11.application.PicardApplication @critical.cfg 2>/dev/null 1>/dev/null &


Das Startscript was ich geschrieben habe ruft im Prinzip das Script vom Hersteller auf. Das funktioniert auch. Das JavaProgramm wird auch ausgeführt. Denn ich bekomme beim Bootvorgan die Ausgabe: (weil 2>/dev/null 1>/dev/null aus dem Script entfernt)
size controlled debug target
size controlled debug filedebug.txtmax 1000

Wenn das System aber vollständig geladen ist läuft der Prozess nicht mehr.

Starte ich das Script jetzt nochmal mit:
/etc/init.d/apc start

Dann bekomme ich die gleiche Ausgabe:
size controlled debug target
size controlled debug filedebug.txtmax 1000

Und siehe da, der Agent läuft.

Mfg Akkie

4

26.09.2008, 18:03

Hi

Lösung gefunden:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/sbin/runscript

PATH_TO_AGENT="/opt/APC/PowerChuteBusinessEdition/Agent"
JAVA="/bin/java/jre/1.4.2_11/bin/java"
LIB_PATH="/opt/APC/PowerChuteBusinessEdition/Agent/lib/linux"
CLASS_PATH="-classpath ./lib/AdvSnmp.jar:./lib/application.jar:./lib/jsdk.jar:./lib/comm.jar:./lib/mail.jar:./lib/RXTXComm.jar:./lib/activation.jar:./lib/util.jar:./lib/m11.jar:./lib/ds.jar:./lib/sss.jar:./lib/pcbe_ds.jar:./comp/AliCommunication.jar:./comp/CommandFileRunner.jar:./comp/DataLogger.jar:./comp/DiscoveryListener.jar:./comp/EventLogger.jar:./comp/EventTracker.jar:./comp/Host.jar:./comp/http.jar:./comp/picard.jar:./comp/PowerSource.jar:./comp/QueryServer.jar:./comp/Security.jar:./comp/ShutdownBehavior.jar:./comp/Shutdowner.jar:./comp/SimpleBroadcaster.jar:./comp/SMTPMailer.jar:./comp/UPSManagerAutoUpdate.jar:./comp/shutdownerlets/OSShutdownerlet.jar:./comp/shutdownerlets/ExchangeShutdownerlet.jar:./comp/shutdownerlets/IISShutdownerlet.jar:./comp/shutdownerlets/NotesShutdownerlet.jar:./comp/shutdownerlets/SQLShutdownerlet.jar:./comp/shutdownerlets/SiebelShutdownerlet.jar:./Resources/Japanese.jar"

pidfile=/var/run/apc_agent.pid
USER="root:root"


depend() {
    	need localmount
    	before hald
}

start(){
 	ebegin "Starting APC-Agent"
 	start-stop-daemon --start --pidfile $pidfile --make-pid --background --chuid "$USER" --chdir "$PATH_TO_AGENT" --env LD_LIBRARY_PATH=$LIB_PATH --exec $JAVA -- -Dpicard.main.thread=blocking $CLASS_PATH com.apcc.m11.application.PicardApplication @critical.cfg 2>/dev/null 1>/dev/null
 	eend $?
}

stop(){
	ebegin "Stopping APC-Agent"
 	start-stop-daemon --stop --pidfile $pidfile --name $JAVA
 	eend $?
}


Mfg Akkie