Ich arbeite an einem Raspberry Pi, auf dem Raspbain läuft und eine Node.js-App ausführt, um zu versuchen, dass es startet, wenn die Pi bootet. Ich habe ein paar Beispiele gefunden, aber ich kann es nicht funktionieren sehen. Mein aktueller Code ist:
%Vor% Ich habe dies im Ordner etc / init.d, ran chmod +x /etc/init.d/MyApp
, ich kann es manuell ausführen, dann starte ich sudo update-rc.d MyApp defaults
, reboot und das Skript läuft nie. Ich habe mir verschiedene Beispiele angeschaut, Anpassungen vorgenommen und immer noch kein Glück.
Jede Hilfe wäre willkommen.
Wenn Sie ein vorkompiliertes Pi-Release verwenden, wie 0.10 .24 , möglicherweise tritt ein PATH-Problem auf.
Sie können entweder den vollständigen Pfad zum Knoten binary als Teil des Befehls start
angeben oder sicherstellen, dass der Pfad zu den Knotenbinärdateien festgelegt wird, bevor /etc/init.d/MyApp
ausgeführt wird. Ich hatte das gleiche Problem und versuchte beides mit Erfolg. Außerdem funktioniert der Befehl stop
, wie Sie ihn haben, möglicherweise nicht.
Wenn Sie sudo node
verwenden möchten, können Sie PATH mit Defaults secure_path
zu sudo visudo
hinzufügen.
Ich würde auch empfehlen, so etwas wie für immer zu verwenden, um den Prozess nach einem Absturz und nach einem Absturz nicht zu unterbrechen.
Ich habe dieses Problem gelöst, indem ich zuerst überprüft habe, wo node.js auf RaspberryPi installiert wurde:
%Vor%Das gab mir:
%Vor%Öffnen Sie crontab config:
%Vor%Dann in meiner Crontab:
%Vor%Speichern, Neustart und Problem gelöst!
Mohit hat recht, aber Sie können readlink verwenden, um den vollständigen Pfad für Ihre Node.js-App zu finden, der später als Cron-Job hinzugefügt werden muss.
> %Vor% Zum Beispiel readlink -f HAP-NodeJS/Core.js
Ergebnisse in /home/pi/HAP-NodeJS/Core.js
Sie können auch which node
verwenden, um den vollständigen Pfad zu finden, in dem node.js installiert ist
Erstellen Sie als Nächstes einen neuen Cron-Job mit sudo crontab -e
und fügen Sie am Ende den folgenden Code hinzu:
zum Beispiel sieht mein Code so aus.
%Vor%Nach dem Neustart (oder Start) sollte Ihre Node.js ausgeführt werden. Hoffe das klärt die Dinge.