FHEM - Hardware > Einplatinencomputer

Kleines Linux Problem auf dem RPi

(1/5) > >>

dougie:

Ich bin wirklich kein Linux Crack, und brauche ab und zu noch Hilfe zur Selbsthilfe :-)

Ich hatte auf meinem RPi bis heute Mittag owserver (und nur das) installiert und das lief einwandfrei!
Aufgrund von Problemen mit meinem 1W Bus musste ich owhttpd nachtinstallieren.

Hab ich gemacht mit

apt-get install owhttpd

Das ging problemlos über die Bühne und ich konnte owhttpd mit

owhttpd -p 2121 /dev/i2c-1

starten.
Dann musste ich irgendwann den RPi neu starten und der owserver wurde nicht mehr automatisch gestartet.
Ich hab probiert mit

/etc/init.d/owserver start

den manuell zu starten, aber der Service meldet FAIL

Wenn ich den owserver manuell mit

owserver -p 4304 /dev/i2c-1

starte, dann läuft er problemlos los.

Fragen: 1) wie kann ich raus finden, warum der deamon nicht startet?
2) was hab ich falsch gemacht oder muss ich machen, das der wieder automatisch startet?

VG
Ralf

Rohan:
Hi Ralf,

ich nutze zwar kein ow*, aber wenn ich diesen Beitrag lese, müssen die Dienste, da sie einander bedingen, in einer bestimmten Reihenfolge gestartet werden.

Vlt. hilft es ja.

Gruß
Thomas

dougie:

Danke Thomas,

so wie ich das verstehe, macht er Autor deines Links den start "per Hand" in Form eines Scriptes.

Bei mir gibt es in /etc/init.d die Datei owserver, und in der steht das folgende.


Leider kann ich nicht erkennen was schief läuft. Gibt es da nicht irgendwo nen LogFile, wo ich eine Fehlermeldung finden kann?
Einfach nur FAIL hilft mir leider nicht viel weiter. :-)

VG
Ralf


--- Code: ---
#!/bin/sh

### BEGIN INIT INFO
# Provides:          owserver
# Required-Start:    $remote_fs $syslog $network $named
# Required-Stop:     $remote_fs $syslog $network $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 1-wire TCP server
# Description:       Start and stop a TCP server for 1-wire control.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
CONFFILE=/etc/owfs.conf
DESC="1-Wire TCP Server"
NAME="owserver"
DAEMON=/usr/bin/$NAME
PIDDIR=/var/run/owfs
PIDFILE=$PIDDIR/$NAME.pid

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

d_start() {
    [ -d $PIDDIR ] || {
    mkdir -m 0775 -p $PIDDIR
    chown root:root $PIDDIR >/dev/null 2>&1
    }
    start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- -c $CONFFILE \
        --pid-file $PIDFILE
    # ensure the daemon has been started
    sleep 1
    pidofproc -p $PIDFILE $DAEMON >/dev/null
}

d_stop() {
    start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
    sleep 1
    if [ -f $PIDFILE ] && ! ps h `cat $PIDFILE` > /dev/null
    then
        # Stale PID file (owserver was successfilly stoped),
        #remove it
        rm -f $PIDFILE
    fi
}

d_status() {
    pidofproc -p $PIDFILE $DAEMON > /dev/null
}

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        log_end_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        log_end_msg $?
        ;;
    restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        d_status && d_stop
        d_start
        log_end_msg $?
        ;;
    status)
        d_status
        if [ $? -eq 0 ];then
            log_success_msg "$NAME is running"
        else
            log_failure_msg "$NAME is not running"
        fi
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|sta$
        exit 1
        ;;
esac

exit 0

--- Ende Code ---

jhohn:
schon in /var/log/messages oder /var/log/syslog nachgesehen?

Rohan:
Hmmm...

sowohl dein Skript, als auch das im Link steht in /etc/init.d => Skripte, die beim System-/Dienstestart genutzt werden (können).

Dein owserver und owhttpd dürften in verschiedenen Skripten gestartet werden. Wenn die Reihenfolge des Aufrufs verkehrt ist, kann es scheitern. Im Link wird alles über ein Skript gestartet, in der dort festgelegten Reihenfolge.

Mach mal ein

$ ps ax | grep ow

(evtl. mit vorangestelltem sudo)

dann siehst du laufende ow*-Prozesse, die du dann per

$ kill -9 Prozess-ID

beenden kannst (Prozess-ID findet du in der von "ps" erzeugten Ausgabe).

Dann rufst du deine Init-Skripte in der evtl. notwendigen Reihenfolge auf, also erst

$/etc/init.d/owserver start
$ /etc/init.d/owhttpd start

Funktioniert es dann?

Gruß
Thomas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln