Problem mit Dienst

  • Hallo,

    erstmal "Frohe Weihnachten" an alle..

    Ich stehe irgendwie auf dem Schlauch. Ich bin neu bei Raspberry/Linux (Raspian) und habe mir mit Hilfe eines Huwai UMTS Sticks, eines Pi Face digital II Moduls und Python eine Torsteuerung via SMS programmiert. Siehe meinen Bericht dazu. Läuft super und stabil..

    Nun will ich, das beim Booten der Raspberry inklusive Programm automatisch starten. Nun habe ich zur >Steuerung der UMTS Karte Gammu-SMSD laufen. Aus mir unerfindlichen Gründen ist die UMTS Karte von diesem Dienst nach dem Start blockiert. Ich bekommen beim Ansprechen der Karte via Python eine Fehlermeldung:

    "ERR_DEVICEOPENERROR {'Text': u' Error opening device.. usw."

    Ich gehe dann in die Konsole und beende den Dienst mit:

    Code
    sudo service gammu-smsd stop

    Danach geht es. Jetzt will ich das automatisch tun komme aber irgendwie mit der Diensteverwaltung von Linux nicht klar. Ich habe schon versucht den Dienst via:

    Code
    sudo update-rcd -f gammu-smsd remove

    am starten zu hindern. Klappt auch, nur danach kann ich meine Karte gar nicht mehr ansprechen..

    Kann man den Dienst nach dem Starten per Skript oder gar aus Python beenden? Wie wäre da die Syntax? Oder wie macht man das richtig?

    Der Dienst selbst hat dieses Start Skript:

    Code
    #! /bin/sh[/size][size=12]### BEGIN INIT INFO[/size][size=12]# Provides:          gammu-smsd[/size][size=12]# Required-Start:    $local_fs $remote_fs[/size][size=12]# Required-Stop:     $local_fs $remote_fs[/size][size=12]# Should-Start:      mysql postgresql $syslog[/size][size=12]# Should-Stop:       mysql postgresql $syslog[/size][size=12]# Default-Start:     2 3 4 5[/size][size=12]# Default-Stop:      0 1 6[/size][size=12]# Short-Description: Gammu SMS daemon[/size][size=12]# Description:       Daemon for automatically sending and receiving messages using GSM phone.[/size][size=12]### END INIT INFO[/size][size=12]PATH=/sbin:/bin:/usr/sbin:/usr/bin[/size][size=12]DAEMON=/usr/bin/gammu-smsd[/size][size=12]NAME=gammu-smsd[/size][size=12]DESC="Gammu SMS Daemon"[/size][size=12]# user which will run this daemon[/size][size=12]USER=gammu[/size][size=12]# Gracefully exit if the package has been removed.[/size][size=12]test -x $DAEMON || exit 0[/size][size=12]# Include user parameters if available[/size][size=12]if [ -f /etc/default/$NAME ] ; then[/size][size=12]. /etc/default/$NAME[/size][size=12]fi[/size][size=12]. /lib/lsb/init-functions[/size][size=12]case "$1" in[/size][size=12]  start)[/size][size=12]    if grep -q '^port = /dev/null' /etc/gammu-smsdrc ; then [/size][size=12]        log_warning_msg " $NAME not yet configured, please edit /etc/gammu-smsdrc"[/size][size=12]        exit 0[/size][size=12]    fi[/size][size=12]log_daemon_msg "Starting $DESC" "$NAME"[/size][size=12]start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \[/size][size=12]--exec $DAEMON -- $DAEMON_OPTS --daemon --user $USER \[/size][size=12]        --pid /var/run/$NAME.pid[/size][size=12]    log_end_msg $?[/size][size=12];;[/size][size=12]  stop)[/size][size=12]    log_daemon_msg "Stopping $DESC" $NAME[/size][size=12]start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \[/size][size=12]--exec $DAEMON[/size][size=12]    log_end_msg $?[/size][size=12];;[/size][size=12]  restart|force-reload)[/size][size=12]    sh $0 stop[/size][size=12]    sleep 1[/size][size=12]    sh $0 start[/size][size=12];;[/size][size=12]  reload)[/size][size=12]  log_daemon_msg "Reloading $DESC" $NAME[/size][size=12]start-stop-daemon --stop --signal HUP --quiet --pidfile \[/size][size=12]/var/run/$NAME.pid --name $NAME[/size][size=12]log_end_msg $?[/size][size=12]    ;;[/size][size=12]  status)[/size][size=12]    status_of_proc -p /var/run/$NAME.pid $DAEMON $NAME && exit 0 || exit $?[/size][size=12]    ;;[/size][size=12]  *)[/size][size=12]N=/etc/init.d/$NAME[/size][size=12]echo "Usage: $N {start|stop|restart|force-reload|reload|status}" >&2[/size][size=12]exit 1[/size][size=12];;[/size][size=12]esac[/size][size=12]exit 0[/size][size=12]

    [/size]

    Vielen Dank im Voraus
    Ralf

    • Offizieller Beitrag

    Hallo Ralf,


    Ich bekommen beim Ansprechen der Karte via Python eine Fehlermeldung:

    "ERR_DEVICEOPENERROR {'Text': u' Error opening device.. usw."

    usw. ? :s

    Wie sprichst du die Karte an bzw. wie sieht dein Python-Script aus?

    Ich kann dir hier bestimmt nicht helfen, aber für die Profis in dem Bereich wären das wichtige Informationen. ;)


  • Wie sprichst du die Karte an bzw. wie sieht dein Python-Script aus?

    Ich kann dir hier bestimmt nicht helfen, aber für die Profis in dem Bereich wären das wichtige Informationen. ;)

    Danke für die Antwort. Es geht ja nicht um mein Skript, mit Gammu-smsd kennt sich hier anscheinend ohnehin niemand aus, funktioniert ja auch alles.

    mein hier nochmal zusammengefassten Fragen beziehen sich auf Dienste allgemein:

    Wie verändere ich das im ersten Beitrag anhängige Startskript des Dienstes Gammu-smsd so, dass der Dienst zwar startet, also zur Verfügung steht, aber nicht läuft. (Als Linux Neebie kann ich es nicht korrekter ausdrücken)

    oder

    Wie beende ich einen Dienst per Skript oder Python und wie kann ich sicherstellen, das als letzte Aktion (Skript) nach dem Booten zu tun?

    Hier nochmal im Detail:

    Mein Problem ist, dass der Dienst automatisch startet und dann die Nutzung der UMTS Karte blockiert, weil er anscheined selbst darauf zugreift.

    Beende ich ihn mit:

    Code
    sudo service gammu-smsd stop

    Kann ich auf die Karte wie gewünscht zugreifen.

    Meine erste Idee war natürlich. den Dienst grundsätzlich nicht starten zu lassen, was ich mit:

    Code
    sudo update-rcd -f gammu-smsd remove

    versucht habe. Das scheint aber dazu zu führen, dass der Dienst gar nicht mehr zur Verfügung steht. Da ich mich trotz googelns mit den Diensten bei Debian momentan noch überfordert fühle, hoffte ich auf jemanden der mit entweder sagen kann, wie man in dem Start Skript von gammu-smsd den Dienst so gar nicht erst startet, so das ich mir das stoppen des Dienstes sparen kann, oder wie ich alternativ das:

    Code
    sudo service gammu-smsd stop

    als automatisch ausführendes Skript einfach, nach starten des Dienstes ausführe. Ich erinnere mich mal irgendwo gelesen zu haben, dass Linux es unterstützt, dass man die Reihenfolge in der Skripte abgearbeitet werden bestimmt: Anders als bei Windows, wo das willkürlich und sogar bei jedem Start unterschiedlich geschieht, was eins von den vielen Problemen beim Betrieb von Windooof ist. (Da könnte ich jetzt lange und ausführlich mit eigenen Erfahrungen abkotzen undefined)

    Oder alternativ in meinem Programm via Python des Dienst einfach stoppe, wenn er läuft.

    Fröhliche Weihnachten an alle

    Ralf

    Einmal editiert, zuletzt von nonickatall (25. Dezember 2016 um 11:42)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!