Ik heb geprobeerd deze handleiding te volgen om een Node-applicatie als een service uit te voeren. Het start echter niet met exitcode 127. Is er een manier om dit op te lossen?

Dit is het dagboek.

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. 

Dit is de 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 

Dit staat bovenaan mijn app.js.

#!/usr/bin/env node 

Reacties

  • Wat gebeurt er als je /home/pi/projects/ServiceName/app.js vanuit de shell uitvoert?
  • Het werkt prima. Het werkt ook prima met forever-service.
  • Wat is de output van type node en 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% /

Antwoord

ExecStart=/home/pi/projects/ServiceName/app.js 

Dit vertelt systemd om app.js rechtstreeks uit te voeren. Is dit .js bestand direct uitvoerbaar? Als dit niet het geval is, zal de shell een exitcode 127 genereren – “Onbekend commando”.

Opmerkingen

  • Volgens de gids die ik in de vraag heb gelinkt, de shebang bovenaan app.js zou het uitvoerbaar moeten maken, omdat het Node specificeert als de interpreter.
  • Ik geloof dat @DopeGhoti verwees naar de uitvoerbare toestemming – zoals in, " lees-schrijf-uitvoerbaar " rechten ingesteld per bestand.
  • " Zo niet, dan zal de shell een exitcode 127 geven " – wat de exacte reden voor de 127 ook is, systemd gebruikt de shell niet om services te starten.

Answer

127 is een commando niet gevonden.

Zorg ervoor dat de rootgebruiker toegang heeft tot node binary anders wijzig de volgende regels met de gebruiker waarvoor je node hebt geïnstalleerd

User=root Group=root 

Anders Probeer het te volgen

[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 

Zodra uw server mac hine is up & je hebt geen toegang tot de server, je lost het probleem op door de logs van / var / log / syslog te controleren met het volgende commando

sudo grep "nodejs-api" /var/log/syslog 

Start bij het opstarten: sudo systemctl enable rocketch

Antwoord

Voer dit uit om te debuggen (vervang de < > delen met de waarde uit uw systemd unit-bestand:

 sudo runuser -l <User> -g <Group> -c "cd <WorkingDirectory> && <PATH> <ExecStart>"  

Het probleem is het gegeven User heeft geen toegang tot de ExecStart binnen de PATH die je hebt ingesteld.

Als iemand nog steeds vastzit, heb ik een stapsgewijze handleiding geschreven voor: debugging systemd

Antwoord

Hallo voor iedereen die geïnteresseerd is, ik had dit probleem en probeerde alles onder de zon, maar uiteindelijk upgraden van N ode 6 tot Node 12 loste het probleem op.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *