Raspbian Jessie: Startskript funktioniert nicht

Raspbian Jessie: Startskript funktioniert nicht

Ich verwende Raspbian Jessie Lite auf RPi3. Ich habe eine Datei erstellt in /etc/systemd/system/autostart.service:

[Unit]
Description=Application

[Service]
User=root
ExecStart=/home/pi/autostart.sh

[Install]
WantedBy=multi-user.target

Der Dienst ist korrekt aktiviert und wird tatsächlich ausgeführt. Hier der Quelltext meines Startskripts:

#!/bin/sh
aplay -c2 -r48000 -fS16_LE < /dev/zero &
chmod 1777 /tmp
hciconfig hci0 up
/home/pi/bin/./app

Meine App wird ausgeführt, verhält sich aber seltsam. Wenn sie von einer Root-Konsole ausgeführt wird, /home/pi/bin/./apptritt kein Problem auf. Darüber hinaus bleibt das Skript natürlich autostart.shin Ausführung, bis meine Anwendung beendet wird.

Um beide Probleme zu beheben, habe ich versucht, es im Hintergrund auszuführen und &am Ende hinzuzufügen. Oder ich habe einfach versucht, die Ausgabe in eine Datei umzuleiten und hinzuzufügen &> /home/pi/log.txt. In beiden Fällen wird meine Anwendung nicht mehr ausgeführt!

Was vermisse ich?

Antwort1

Möglicherweise vermissen Sie Folgendes:

  1. Zum Abschnitt [Service] hinzufügen Type=oneshot. Es ist nicht nötig, es im Hintergrund zu lassen, und die Umleitung der Ausgabe in eine Datei funktioniert in der Konfigurationsdatei ohnehin nicht. Die Ausgabe wird bereits erfasst und mit dem StandardOutputSchlüssel umgeleitet, der sie standardmäßig an das systemd-Journal sendet.

  2. Außerdem führt das bloße Erstellen der Datei nicht automatisch zur Ausführung, Sie müssen sie auch aktivieren. Führen Sie

    systemctl enable autostart
    

Ich möchte auch darauf hinweisen, dass Sie die Anwendung als Root ausführen /home/pi/bin/app, was aus Sicherheitsgründen möglicherweise nicht das ist, was Sie möchten. Wenn es nicht unbedingt erforderlich ist, die Anwendung als Root auszuführen, sollten Sie die Anwendung als anderer Benutzer ausführen.

verwandte Informationen