Jeg prøvde å følge denne veiledningen for å kjøre et Node-program som en tjeneste. Det er imidlertid ikke mulig å starte, med utgangskode 127. Er det noen måte å fikse dette?
Dette er journalen.
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.
Dette er 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
Dette er øverst i appen min.js.
#!/usr/bin/env node
Kommentarer
Svar
ExecStart=/home/pi/projects/ServiceName/app.js
Dette forteller systemd
å kjøre app.js
direkte. Er denne .js
filen direkte kjørbar? Hvis ikke, vil skallet kaste en utgangskode 127 – «Ukjent kommando».
Kommentarer
- I følge guiden jeg koblet i spørsmålet, shebang øverst i
app.js
skal gjøre den kjørbar, fordi den angir Node som tolk. - Jeg tror @DopeGhoti henviste til den kjørbare tillatelsen – som i, " lese-skrive-kjørbar " tillatelser angitt per fil.
- " Hvis ikke, vil skallet kaste en utgangskode 127 " – uansett den eksakte årsaken til 127, bruker systemd ikke skallet til å starte tjenester.
Svar
127 er en kommando som ikke ble funnet.
Forsikre deg om at rotbruker har tilgang til node binært annet endre følgende linjer med brukeren du har installert node for
User=root Group=root
Ellers prøv å følge
[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
Når serveren din er mac hine er oppe & du har ikke tilgang til serveren, du feilsøker ved å sjekke logger fra / var / log / syslog med følgende kommando
sudo grep "nodejs-api" /var/log/syslog
Start ved oppstart: sudo systemctl aktiverer rocketch
Svar
For å feilsøke, kjør bare dette (erstatter < > delene med verdien fra systemd-enhetsfilen din:
sudo runuser -l <User> -g <Group> -c "cd <WorkingDirectory> && <PATH> <ExecStart>"
Problemet er gitt User
har ikke tilgang til ExecStart
innenfor PATH
du har angitt.
Hvis noen fremdeles sitter fast, har jeg skrevet en trinnvis guide til: feilsøking systemd
Svar
Hei for alle interesserte, jeg hadde dette problemet og prøvde alt under solen, men til slutt oppgradering fra N ode 6 til Node 12 løste problemet.
/home/pi/projects/ServiceName/app.js
fra skallet?forever-service
.type node
ogdf /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% /