Jag försökte följa denna guide för att köra en nodapplikation som en tjänst. Det går dock inte att starta, med utgångskod 127. Finns det något sätt att åtgärda detta?

Det här är 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. 

Detta är 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 

Detta är högst upp i min app.js.

#!/usr/bin/env node 

Kommentarer

  • Vad händer när du kör /home/pi/projects/ServiceName/app.js från skalet?
  • Det går helt bra. Det går också bra med forever-service.
  • Vad är resultatet av type node och 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 

Detta säger att systemd ska köra app.js direkt. Är den här .js filen direkt körbar? Om inte, kommer skalet att kasta en utgångskod 127 – ”Okänt kommando”.

Kommentarer

  • Enligt guiden som jag länkade i frågan, shebangen längst upp i app.js ska göra den körbar, eftersom den anger nod som tolk.
  • Jag tror att @DopeGhoti hänvisade till den körbara behörigheten – som i, " läs-skriv-körbar " behörigheter inställda per fil.
  • " Om inte, kommer skalet att kasta en utgångskod 127 " – oavsett den exakta anledningen till 127 använder systemd inte skalet för att starta tjänster.

Svar

127 är inte ett kommando.

Se till att rotanvändaren har tillgång till nod binärt annat ändra följande rader med användaren som du har installerat nod för

User=root Group=root 

Annars försök att följa

[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 din server mac hine är uppe & du kan inte komma åt servern, du felsöker genom att kontrollera loggar från / var / log / syslog med följande kommando

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

Starta vid start: sudo systemctl aktiverar rocketch

Svar

För att felsöka kör du bara detta (ersätter < > delar med värdet från din systemd-enhetsfil:

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

Problemet är givet User kan inte komma åt ExecStart inom PATH du har ställt in.

Om någon fortfarande är fast har jag skrivit en steg-för-steg-guide till: felsökningssystemd

Svar

Hej för alla som är intresserade, jag hade det här problemet och försökte allt under solen, men till slut uppgraderade jag från N ode 6 till nod 12 fixade problemet.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *