Init-Script bie Runlevel 0? Wer kann beim schreiben helfen?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallöchen,

    ich hoffe es ist nicht schlimm, dass ich mein Anliegen mal hierher "verschiebe", aber ich glaube im RaspBMC-Unterforum ist es verkehrt und wird nicht gelesen, da auch der Thementitel nicht mehr ganz zielführend ist... Ich hoffe es sei mir verziehen...

    Ich habe seit kurzem einen Pi, den ich mit RaspBMC zum Filmeschauen über Beamer nutze. Mich nervt dabei, dass beim Ausschalten des Pis der Beamer zwar nach 3 Minuten ohne Signal von allein ausgeht, die Stereoanlage aber an bleibt.
    Deshalb habe ich mir (nach einem Tipp aus dem Forum hier) einen 433Mhz-Sender gekauft und installiert...
    Ich bin nach folgendem Tutorial vorgegangen:
    http://www.raspberrypi-tutorials.de/software/funks…i-schalten.html

    Ich kann die Steckdose also mit
    sudo ./send 11010 1 1
    Einschalten... Das funktioniert soweit gut

    Jetzt muss ich es nur irgendwie einrichten, dass der pi den Befehl ausführt wenn er runterfährt...

    Beim beenden von RaspBMC Steckdose abschalten
    In diesem Beitrag habe ich gesehen, dass ich in init-script schreiben muss, was bei runlevel 0 ausgeführt wird. Leider weiß ich nicht, wie das geht. Auch ausgiebiges googen hat mich nicht weitergebracht Könnte mir da jemand helfen? Ich habe absolut keine Ahnung wie das funktioniert.

    Viele Grüße

    Einmal editiert, zuletzt von lullaby (26. Februar 2015 um 22:29)

  • Init-Script bie Runlevel 0? Wer kann beim schreiben helfen?? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Du schreibst ein bash script und nennst es sendremote

    Code
    nano sendremote


    Trägst dort folgendes ein

    Bash
    #!/bin/bash
    PFAD_ZU_SEND/send 11010 1 1

    Das kopierst du nach /etc/init.d/

    Code
    sudo cp sendremote /etc/init.d

    Dann machst du ein Symlink zu /etc/rc0.d

    Code
    sudo ln -s /etc/init.d/sendremote /etc/rc0.d/K05sendremote

    PFAD_ZU_SEND musst du natürlich durch den absoluten pfad ersetzen. Ich vermute mal das liegt irgendwo in /home/pi/

  • Hallo und danke!

    Ich habe deinen Vorschlag umgesetzt, nur leider geht es nicht. :(

    Mir ist augefallen, dass "send" nur mit sudo ausgeführt werden kann. Ich habe es also umgeändert.

    #!/bin/bash
    sudo /home/pi/raspberry-remote /send 11010 1 0

    Trotzdem geht es nicht. Hast Du eine Idee warum das so ist?

    Danke!


  • #!/bin/bash
    sudo /home/pi/raspberry-remote /send 11010 1 0

    Trotzdem geht es nicht.

    Hast Du im Pfad eine Leerstelle?

    Werden die Scripte aus dem Verzeichnis "/etc/init.d", nicht mit root-Rechte ausgeführt?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • Wenn ich den Befehl ganz normal im Terminal angebe, dann geht's...
    Nur eben beim ausschalten automatisch geht's nicht...

    Poste mal die Ausgabe von:

    Code
    ls -la /etc/init.d/<dein-Script>

    Versuch mal mit:

    Bash
    #!/bin/bash -e
    /home/pi/raspberry-remote/send 11010 1 0
    #
    /usr/bin/touch /home/pi/go_down.txt
    /usr/bin/logger "go down"
    #
    exit 0

    in deinem Script und schau nach dem Start (evtl. restart) ob die Datei go_down.txt bzw. der syslog-Eintrag vorhanden sind:

    Code
    ls -la /home/pi/go_down.txt
    sudo rm /home/pi/go_down.txt
    sudo cat /var/log/syslog | grep -i logger

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Aus führbar sollte das Script auch sein.

    Code
    chmod 750 /etc/init.d/sendremote


    Und dann sollte es root gehören.
    Ich denke nicht, dass ein komplettes init-Gerüst von nöten ist.

    Ich wäre mir nur nicth sicher ob es nicht in einem anderen runlevel stoppen sollte. Welches ist der Default runlevel von bmc? Und ich würde K01... wählen, damit auch alles noch da ist was für Send gebraucht wird.

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Hallo,

    also ich habe, wie von dbv vorgeschlagen, folgenden Befehl angewendet,

    [code=php]chmod 750 /etc/init.d/sendremote[/php]

    leider hat es keine Besserung gebracht. Der Pi schaltet noch nicht ab.

    Wie von Lunepi gefordert habe ich hier die Aufgabe von

    [code=php]ls -la /etc/init.d/<dein-Script>[/php]

    Folgendes wurde mir angezeigt:

    [code=php]-rwxr-x--- 1 root root 58 Feb 27 00:07 /etc/init.d/sendremote[/php]

    So und die do_down.txt wurde scheinbar nicht erstellt... Das Termin spuckt aus:
    ls: cannot access /home/pi/go_down.txt: No such file or directory

    Ergo wurde die Datei nicht erstellt...
    Was sagt mir/ uns das jetzt?

    Vielen Dank erstmal für die tolle Hilfe!


  • Ergo wurde die Datei nicht erstellt...
    Was sagt mir/ uns das jetzt?

    Das sagt m. E., dass

    Code
    /home/pi/raspberry-remote/send 11010 1 0


    zu dem Zeitpunkt nicht ausgeführt werden kann und das Script (... evtl. wegen "-e") nicht weiter ausgeführt worden ist.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (27. Februar 2015 um 14:20)


  • Dann machst du ein Symlink zu /etc/rc0.d

    Code
    sudo ln -s /etc/init.d/sendremote /etc/rc0.d/K05sendremote

    Ich würde es zu K01sendremote linken, dann wird es zuerst gestoppt.
    Bei K05 sind schon einige Dienste beendet.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • Das sagt m. E., dass

    Code
    /home/pi/raspberry-remote/send 11010 1 0


    zu dem Zeitpunkt nicht ausgeführt werden kann und das Script (... evtl. wegen "-e") nicht weiter ausgeführt worden ist.

    Auch das Entfernen des -e hat nichts geändert... Sollte ich das gegen einen andere Zusatz ersetzen?

    Genau wie das symlinken auf K01sendremote...

    Die Datei "go_down.txt" wurde durch keine der Änderungen erstellt....

    Woran kann's liegen? Ich würde annehmen, dass der Dienst aus irgendeinem Grund nicht ausgeführt wird?[/quote]


  • .. Sollte ich das gegen einen andere Zusatz ersetzen?

    Nein. Versuch mal mit als 2. Zeile in deinem Script mit logger, um zu sehen ob ein Eintrag in die syslog-Datei gemacht wird (bzw. ob das Script gestartet wird). Z. B. so:

    Bash
    #!/bin/bash
    #
    /usr/bin/logger "go down"
    /home/pi/raspberry-remote/send 11010 1 0
    #
    exit 0


    und danach:

    Code
    sudo cat /var/log/syslog | grep -i logger

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (2. März 2015 um 11:06)

  • Hallo,

    ne, auch hier wird nichts geloggt... Ich habe eben in die syslog mal reingeschaut und das waren die letzten Einträge die ich gefunden habe:

    [code=php]Mar 2 11:31:49 raspbmc xinetd[1935]: Exiting...
    Mar 2 11:31:49 raspbmc xbmc: xinetd stop/waiting
    Mar 2 11:31:49 raspbmc xbmc: xinetd start/running, process 1962
    Mar 2 11:31:49 raspbmc cron[1967]: (CRON) INFO (pidfile fd = 3)
    Mar 2 11:31:49 raspbmc cron[1968]: (CRON) STARTUP (fork ok)
    Mar 2 11:31:49 raspbmc cron[1968]: (CRON) INFO (Running @reboot jobs)
    Mar 2 11:31:49 raspbmc CRON[1971]: (root) CMD (cd /home/pi/ && ./daemon_restart.sh)
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/chargen [file=/etc/xinetd.conf] [line=14]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/daytime [file=/etc/xinetd.d/daytime] [line=28]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/discard [file=/etc/xinetd.d/discard] [line=26]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/echo [file=/etc/xinetd.d/echo] [line=25]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/ftp [file=/etc/xinetd.d/ftp] [line=26]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/netbios-ns [file=/etc/xinetd.d/netbios-ns] [line=10]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/samba [file=/etc/xinetd.d/samba] [line=12]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/ssh [file=/etc/xinetd.d/ssh] [line=12]
    Mar 2 11:31:49 raspbmc xinetd[1962]: Reading included configuration file: /etc/xinetd.d/time [file=/etc/xinetd.d/time] [line=12]
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing chargen
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing chargen
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing daytime
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing daytime
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing discard
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing discard
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing echo
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing echo
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing time
    Mar 2 11:31:50 raspbmc xinetd[1962]: removing time
    Mar 2 11:31:50 raspbmc xinetd[1962]: xinetd Version 2.3.14 started with libwrap loadavg options compiled in.
    Mar 2 11:31:50 raspbmc xinetd[1962]: Started working: 4 available services
    [/php]


  • ne, auch hier wird nichts geloggt... Ich habe eben in die syslog mal reingeschaut und das waren die letzten Einträge die ich gefunden habe:

    Naja, (... wenn Du richtig geschaut hast) dann wird dein Script ja gar nicht gestartet. D. h. entweder mit deinem Script oder mit deinem symlink stimmt etwas nicht und das hat dann mit send nichts zu tun.

    BTW: Warum reinschauen und nicht

    Code
    sudo cat /var/log/syslog | grep -i logger


    ausführen? ... denn durch "reinschauen" kann man auch mal etwas übersehen.

    EDIT:

    Wie ist die Ausgabe von:

    Code
    which logger


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (2. März 2015 um 11:48)

  • Naja, ich habe ja

    [code=php]sudo cat /var/log/syslog | grep -i logger[/php]

    ausgeführt, aber da kam nichts. Da ist nichts passiert. Deshalb habe ich mich belesen, wie ich den logger selbst auslesen kann. Deshalb habe ich das so gemacht....

    Which locker schmeißt folgendes aus:
    [code=php]/usr/bin/logger
    [/php]

    Okay, jetzt wäre ja sicherlich die Frage, was der Grund ist, dass das Script nicht läuft, richtig? Also, wie kriege ich jetzt raus, ob es der symlink ist oder das script an sich?


  • Okay, jetzt wäre ja sicherlich die Frage, was der Grund ist, dass das Script nicht läuft, richtig? Also, wie kriege ich jetzt raus, ob es der symlink ist oder das script an sich?

    Wie sind z. Zt. die Ausgaben von:

    Code
    ls -la /etc/init.d/sendremote
    ls -la /etc/rc0.d/K05sendremote
    ls -la /etc/rc0.d/K01sendremote
    cat /etc/init.d/sendremote


    ?

    EDIT:

    Evtl. brauchst Du für dein eigenes (init.d-)Script, das Du in die runlevel(s) versymlinken willst, nach der shebang auch einen "### BEGIN INIT INFO"- und "### END INIT INFO"-Abschnitt, damit das Script auch so berücksichtigt wird. Z. B.:

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (2. März 2015 um 13:12)

  • ls -la /etc/init.d/sendremote
    [code=php]-rwxr-x--- 1 root root 90 Mar 2 11:28 /etc/init.d/sendremote
    [/php]

    ls -la /etc/rc0.d/K05sendremote
    [code=php]lrwxrwxrwx 1 root root 22 Feb 26 23:47 /etc/rc0.d/K05sendremote -> /etc/init.d/sendremote
    [/php]

    ls -la /etc/rc0.d/K01sendremote
    [code=php]lrwxrwxrwx 1 root root 22 Mar 2 10:32 /etc/rc0.d/K01sendremote -> /etc/init.d/sendremote[/php]

    cat /etc/init.d/sendremote

    Zitat

    cat: /etc/init.d/sendremote: Permission denied

    sudo cat /etc/init.d/sendremote

    Bei letzterem nicht wundern, dass der Hauscode für send jetzt "00001" ist, ich habe das Testhalber mal geändert. Wenn ich "sudo /home/pi/raspberry-remote/send 00001 1 0" ins Terminal eingebe, dann schaltet die Steckdose...

    Einmal editiert, zuletzt von lullaby (2. März 2015 um 13:05)


  • ls -la /etc/init.d/sendremote

    PHP
    -rwxr-x--- 1 root root 90 Mar  2 11:28 /etc/init.d/sendremote
    [/php]
    [/quote]
    
    
    Versuch mal auch mit:
    [code]
    sudo chmod 755 /etc/init.d/sendremote

    Evtl. brauchst Du für dein eigenes (init.d-)Script (hier: sendremote), das Du in die runlevel(s) versymlinken willst, nach der shebang auch einen "### BEGIN INIT INFO"- und "### END INIT INFO"-Abschnitt, damit das Script auch so berücksichtigt wird. Z. B.:

    EDIT:

    Versuch mal auch mit einem symlink im Verzeichnis "/etc/network/if-down.d/" (aber ohne "INIT INFO"-Abschnitt im Script):

    Code
    sudo ln -s /etc/init.d/sendremote /etc/network/if-down.d/sendremote


    und siehe nach dem reboot, die Ausgabe von:

    Code
    sudo cat /var/log/syslog | grep -i logger

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (2. März 2015 um 14:08)

Jetzt mitmachen!

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