2016-07-07 11 views
1

Ich versuche, einen NodeJS Server erhalten beim Start ausgeführt wird, so habe ich die folgende systemd Unit-Datei:Systemd Dienst versagt beim Start

[Unit] 
Description=TI SensorTag Communicator 
After=network.target 

[Service] 
ExecStart=/usr/bin/node /home/pi/sensortag-comm/sensortag.js 
User=root 

[Install] 
WantedBy=multi-user.target 

Ich bin nicht sicher, was ich falsch hier tun . Es scheint fehl zu schlagen, bevor das Skript nodejs überhaupt startet, da keine Protokollierung stattfindet. Mein Skript ist abhängig von mysql 5.5 (ich glaube, hier stoße ich auf ein Problem). Jede Einsicht oder sogar eine andere Lösung wäre willkommen.

Auch läuft es gut, sobald ich im System angemeldet bin.

aktualisieren

Der Service aktiviert ist, und durch journalctl protokolliert. Ich werde mit den Ergebnissen am 7/11/16 aktualisieren.

Nicht sicher, warum es beim ersten Mal nicht funktionierte, aber nach Überprüfung von journalctl war das Problem zu 100%, dass MySQL nicht gestartet wurde. Ich habe es wieder geändert in After=MySQL.service und es hat perfekt funktioniert!

Antwort

2

Wenn in der Ausgabe von journalctl überhaupt keine Erwähnung des Dienstes vorhanden ist, könnte dies darauf hinweisen, dass der Dienst nicht aktiviert war, um beim Booten zu starten.

Lassen Sie systemctl enable my-unit-name vor Ihrem nächsten Boot-Test ausführen.

Da Sie davon abhängen, dass MySQL läuft und läuft, sollten Sie dies mit etwas wie: After=mysql.service deklarieren. Der genaue Dienstname kann von Ihrer Linux-Distribution abhängen, die Sie nicht angegeben haben.

Das Hinzufügen von fügt nichts hinzu, da Systemeinheiten ohnehin standardmäßig von root ausgeführt würden.

Wenn Sie "es fehlschlägt" angegeben haben, haben Sie nicht angegeben, ob es beim Systemstart fehlgeschlagen ist, oder mit einem Test, der von systemctl start my-unit-name ausgeführt wurde.

Nach dem Versuch, einen Dienst zu starten, sollte eine Protokollierung erfolgen, wenn Sie journalctl -u my-unit.name.service ausführen.

Sie könnten auch in Erwägung ziehen, StandardOutput=journal zu Ihrer Einheitendatei hinzuzufügen, um sicherzustellen, dass Sie auch die Ausgabe des Dienstes erfassen, den Sie gerade ausführen.

+0

Sorry ich war nicht klarer, der Dienst ist aktiviert und es versucht, beim Booten zu starten. Ich kann nicht bis Montag auf die Maschine zugreifen und werde die Frage dann mit den Ergebnissen von 'journalctl -u sensortag.service' aktualisieren. Nur zu beachten, mysql 5.5 verwendet systemv anstelle von systemd (der Rechner ist ein raspberry pi, und ich bin nicht geneigt, Backports einzurichten), so versuchte 'After = mysql.service' das Problem vorher nicht zu lösen, aber vielleicht Das Problem ist woanders. Danke nochmal für die Hilfe bis jetzt. – phelpsiv

Verwandte Themen