Megpróbáltam követni ezt az útmutatót egy Node alkalmazás szolgáltatásként történő futtatásához. Ez azonban nem indul el, a 127-es kilépési kóddal. Van-e valamilyen módja ennek kijavítására?

Ez a napló.

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. 

Ez a 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 

Ez az app.js tetején található.

#!/usr/bin/env node 

Megjegyzések

  • Mi történik, ha a /home/pi/projects/ServiceName/app.js parancsot futtatja a shellből?
  • Teljesen jól működik. Ez a forever-service használatával is jól fut.
  • Mi a type node és a ?
  • 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% /

Válasz

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

Ez arra utasítja a systemd -t, hogy közvetlenül futtassa az app.js -et. Ez a .js fájl közvetlenül futtatható? Ha nem, akkor a héj kilépési kódot dob 127 – “Ismeretlen parancs”.

Megjegyzések

  • A kérdésben linkelt útmutató szerint a app.js tetején lévő shebangnak futtathatóvá kell tennie, mert a Node-t határozza meg tolmácsként.
  • Úgy gondolom, hogy @DopeGhoti a futtatható engedélyre utalt – mint fájlonként beállított " read-write-végrehajtható " engedélyekben.
  • " Ha nem, akkor a héj egy 127-es kilépési kódot dob meg " – bármi legyen is a 127 pontos oka, a systemd nem használja a shellt a szolgáltatások indításához.

Válasz

A 127 nem található parancs.

Győződjön meg róla, hogy a root felhasználó hozzáfér csomópont bináris más módon változtathatja meg a következő sorokat azzal a felhasználóval, amelyhez csomópontot telepített

User=root Group=root 

Egyéb Próbálja meg követni

[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 

Miután a szerver mac a hine fent van & nem tudja elérni a szervert, a hiba elhárításához ellenőrizze a / var / log / syslog naplóit a következő paranccsal.

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

Indítás indításkor: sudo systemctl engedélyezze a rocketchet

Válasz

A hibakereséshez csak futtassa ezt (helyettesítve a < > részeket a systemd unit fájl értékével:

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

A kérdés az adott User nem fér hozzá a ExecStart fájlhoz a beállított PATH fájlon belül.

Ha bárki továbbra is fennakadt, akkor lépésről lépésre írtam a következőket: systemd hibakeresése

Válasz

Hé, bárki érdeklődik, megvolt a probléma, és mindent kipróbáltam a napsütésben, de végül frissítettem N-ről a 6. és a 12. csomópont kijavította a problémát.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük