Ich habe versucht, diesem Handbuch zu folgen, um eine Knotenanwendung als Dienst auszuführen. Es kann jedoch nicht mit dem Exit-Code 127 gestartet werden. Gibt es eine Möglichkeit, dies zu beheben?
Dies ist das Journal.
sudo journalctl --follow -u serviceName -- Logs begin at Tue 2017-08-08 16:27:10 GMT. -- Aug 08 17:06:57 raspberrypi systemd[1]: Started serviceName. Aug 08 17:06:57 raspberrypi app.js[7234]: [46B blob data] Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service: main process exited, code=exited, status=127/n/a Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state. Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service holdoff time over, scheduling restart. Aug 08 17:06:57 raspberrypi systemd[1]: Stopping serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: Starting serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service start request repeated too quickly, refusing to start. Aug 08 17:06:57 raspberrypi systemd[1]: Failed to start serviceName. Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state.
Dies ist der serviceName.service.
[Unit] Description=ServiceName After=network.target [Service] ExecStart=/home/pi/projects/ServiceName/app.js Restart=always User=root Group=root Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory=/home/pi/projects/ServiceName [Install] WantedBy=multi-user.target
Dies befindet sich oben in meiner app.js.
#!/usr/bin/env node
Kommentare
- Was passiert, wenn Sie
/home/pi/projects/ServiceName/app.js
über die Shell ausführen?
Es läuft einwandfrei. Es läuft auch gut mit forever-service
.
type node
und df /home/pi/projects/ServiceName/app.js
? node is /home/pi/.nvm/versions/node/v7.8.0/bin/node
2. Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 6166268 4446224 1383764 77% /
Antwort
ExecStart=/home/pi/projects/ServiceName/app.js
Dies weist systemd
an, app.js
direkt auszuführen. Ist diese .js
-Datei direkt ausführbar? Wenn nicht, gibt die Shell einen Exit-Code 127 – „Unbekannter Befehl“ aus.
Kommentare
- Gemäß der Anleitung, die ich in der Frage verlinkt habe, Der Shebang oben in
app.js
sollte es ausführbar machen, da er Node als Interpreter angibt. - Ich glaube, @DopeGhoti bezog sich auf die ausführbare Berechtigung – as in, " Lese- / Schreib-ausführbare Datei " pro Datei festgelegte Berechtigungen.
- " Wenn nicht, gibt die Shell einen Exit-Code 127 aus. " – Unabhängig vom genauen Grund für die 127 verwendet systemd die Shell nicht zum Starten von Diensten.
Antwort
127 ist ein Befehl, der nicht gefunden wurde.
Stellen Sie sicher, dass der Root-Benutzer Zugriff auf hat Knoten binär sonst ändern Sie die folgenden Zeilen mit dem Benutzer, für den Sie den Knoten
User=root Group=root
Andernfalls versuchen,
[Unit] Description="ServiceName" After=network.target [Service] ExecStart=path_to_node/node /home/pi/projects/ServiceName/app.js Restart=always # Restart service after 10 seconds if node service crashes RestartSec=10 # Output to syslog StandardOutput=syslog StandardError=syslog #Change this to find app logs in /var/log/syslog SyslogIdentifier=nodejs-api # Followig will require if you are using the PORT or Node from Envirnoment Environment=NODE_ENV=production PORT=3000 [Install] WantedBy=multi-user.target
Sobald Ihr Server Mac hine is up & Sie können nicht auf den Server zugreifen. Sie beheben Fehler, indem Sie die Protokolle von / var / log / syslog mit dem folgenden Befehl überprüfen.
sudo grep "nodejs-api" /var/log/syslog
Start beim Booten: sudo systemctl enable rocketch
Antwort
Zum Debuggen führen Sie dies einfach aus (Ersetzen der Teile < > mit dem Wert aus Ihrer systemd-Einheitendatei:
sudo runuser -l <User> -g <Group> -c "cd <WorkingDirectory> && <PATH> <ExecStart>"
Das Problem ist gegeben User
kann nicht auf die ExecStart
innerhalb der von Ihnen festgelegten PATH
zugreifen.
Wenn noch jemand feststeckt, habe ich eine Schritt-für-Schritt-Anleitung geschrieben für: Debugging-Systemd
Antwort
Hey, für alle Interessierten, ich hatte dieses Problem und habe alles unter der Sonne ausprobiert, aber am Ende ein Upgrade von N. Ode 6 bis Knoten 12 haben das Problem behoben.