Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hoy Chris M.
Soso noch ein ein Münchner Kindl, "freu"
Danke für die Nachhilfe, jetzt isses klarer. Dann versuch ich mein Glück mal mit nohup. Der mh lässt mich auch nicht mehr zur Console zurück, also genauer gesagt, ich muss Putty abwürgen, der läuft aber weiter scheinz als Daemon echt "daemonisch".
Grüsse Bodo
Fragen gehören ins Forum, und nicht in mein Postfach;
EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;
Danke für die Nachhilfe, jetzt isses klarer. Dann versuch ich mein Glück mal mit nohup. Der mh lässt mich auch nicht mehr zur Console zurück, also genauer gesagt, ich muss Putty abwürgen, der läuft aber weiter scheinz als Daemon echt "daemonisch".
Wenn wir schon dabei sind:
Um ein Programm im Hintergrund zu starten, d.h. um gleich wieder an die Konsole zu kommen, musst Du ein "&" (vermutlich mit Leerzeichen davor) an den Programmaufruf anhängen. Etwas verwirrend kann dann sein, dass die Ausgaben vom Programm einfach mit auf der Konsole landen und damit zwischen allen sonstigen Ausgaben landen können. Dann sollte man die Ausgabe besser in eine Datei umleiten (die man z.B. per "tail -f" sich live ansehen kann um z.B. interaktiv Fehler zu beheben).
Achtung: Programme die per "&" im Hintergrund gestartet werden, werden bei einem Logout auch mit beendet, d.h. gegen Logout hilft nur das nohup.
Und noch ein kleiner Hinweis, aber vermutlich war das eh klar: man kann mehrere Putty Sessions parallel betreiben, d.h. sollte wo das Programm nicht zur Konsole zurückkehren (bei "top" würde man das gar nicht wollen...), dann einfach ein weiteres Putty starten...
TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!
... man kann mehrere Putty Sessions parallel betreiben ...
Jo, das hab' ich intuitiv so gemacht.
Ich find' Linux echt megaklasse, so ganz ohne GUI und es läuft trotzdem.
Und für jeden ... gibt es eine Lösung, wie beim iPhone, "es gibt ein APP dafür".
Grüsse Bodo
Fragen gehören ins Forum, und nicht in mein Postfach;
EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;
gibt es auch für misterhouse eine Startoption mit -d damit er richtig als Dienst läuft?
Ich habe das start-stop-daemon script von eibd aus dem Lexikon für mh angepasst. Nun funktioniert das wenn ich das von der console ausführe ganz gut nur wird halt immer noch alles auf der console ausgegeben.
Wenn ich den Rechner nun neustarte und alles automatisch geladen wird, dann schaft mein debian es nicht mehr die grafische console zu starten.
Erst wenn ich auf der console 1 das mh abbreche läd er diese nach?
... gibt es auch für misterhouse eine Startoption mit -d damit er richtig als Dienst läuft?
Hi Steini
Ich habe in /etc/init.d/ ein script mit dem Namen mh (ausführbar machen mit chmod a+x /etc/init.d/mh) geschrieben, nicht perfekt
Code:
#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/misterhouse/mh/bin/
DESC="Description of the service"
NAME=mh
DAEMON=/opt/misterhouse/mh/bin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
cd /opt/misterhouse
export mh_parms=/opt/misterhouse/mh.private.ini
#Misterhouse starten
$DAEMON
und starte ihn dann mit
Code:
/etc/init.d/mh
$DAEMON ist dabei nur ein Name und hat mit als Daemon laufen nix zu tun.
#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Description of the service"
NAME=mh
DAEMON=/usr/share/misterhouse/mh/bin/$NAME
export mh_parms=/usr/share/misterhouse/mh.private.ini
mhhome=/usr/share/misterhouse
#DAEMON_ARGS="-log_file ${mhhome}/log"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
und kann mit
Code:
/etc/init.d/mh start|restart|stop
gestartet, regestartet und gestopt werden. Mit chkconfig kann man es dann auch automatisch für die entsprechenden runlevels laufen lassen, also automatisch. Nur wie halt mit den schon oben erwähnten Einschränkungen.
Wie aktuell ist denn, das Debian paket? Pflegst Du das alleine, kann man das bedenkenlos über eine bestehende Installation mit apt-get "drüberinstallieren"?
Ich hoffe es gibt noch mehr Antworten zu dem Thema...
Ich habe es nun geschafft! Na ja, nicht ganz alleine...
Das init.d script von dem debian.deb von makki hatte den fehlenden Schalter integriert: die Option "--background" dann läuft mh "detached" (von der console).
Ich habe das script dann für meine Zwecke übernommen und noch einen Fehler gefunden: die Option "--make-pidfile" fehlte beim Startbefehl was bewirkte dass sich der "Dienst" nicht stopen oder restarten liess.
Nun funktioniert natürlich auch das automatische Starten!
Hier noch mal der Code:
Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides: misterhouse
# Required-Start: $local_fs $remote_fs eibd
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: misterhouse initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO
# misterhouse - control the misterhouse daemon
#
# Author: Michael Markstaller <devel@wiregate.de>
#
# UPDATE 20.10.2009
# Steinradler: option --make-pidfile hinzuguegt div. auskommentiert;
# DAEMON_OPTS-Zeile in das init.d script einguegt und /etc/default auskommentiert
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export mh_parms=/usr/share/misterhouse/mh.private.ini
DAEMON=/usr/share/misterhouse/mh/bin/mh
NAME=misterhouse
DESC=misterhouse
PIDFILE=/var/run/misterhouse.pid
#DAEMON_OPTS="-log_file =/usr/share/misterhouse/mh.log"
test -x $DAEMON || exit 0
# Include misterhouse defaults if available
#if [ -f /etc/default/misterhouse ] ; then
# . /etc/default/misterhouse
#fi
# DO NOT set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --background --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE
echo "$NAME."
;;
reload)
echo "Reloading $DESC configuration files."
kill -HUP `cat $PIDFILE`
;;
restart|force-reload)
echo -n "Restarting $DESC: "
$0 stop
sleep 2
$0 start
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
Dann noch mit "chkconfig -add misterhouse" oder mit rcconf automatisch starten lassen und misterhouse läuft auch nach einem reboot...
Manuell kann den Status von mh dann mit "/etc/init.d/misterhouse start|stop|restart|reload|force-reload" ändern.
Hurra,
Ich habe es nun geschafft! Na ja, nicht ganz alleine ...
Das init.d script von dem debian.deb von makki ...
Dann noch mit "chkconfig -add misterhouse" oder mit rcconf automatisch starten lassen und misterhouse läuft auch nach einem reboot...
Manuell kann den Status von mh dann mit "/etc/init.d/misterhouse start|stop|restart|reload|force-reload" ändern.
Hallo Steini, hallo makki
Ich find's toll wenn man etwas lernt dabei. Copy paste hilft schon erst mal und dann will ich schon wissen warum und wie es geht. Es freut mich, dass es jetzt klappt
Grüsse Bodo
Fragen gehören ins Forum, und nicht in mein Postfach;
EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar