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

  • Hva skjer når du kjører /home/pi/projects/ServiceName/app.js fra skallet?
  • Det går helt greit. Det går også bra ved å bruke forever-service.
  • Hva er utdata fra type node og df /home/pi/projects/ServiceName/app.js?
  • 1. 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% /

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *