Intenté seguir esta guía para ejecutar una aplicación Node como servicio. Sin embargo, no se inicia con el código de salida 127. ¿Hay alguna forma de solucionar esto?

Este es el diario.

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. 

Este es 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 

Esto está en la parte superior de mi app.js.

#!/usr/bin/env node 

Comentarios

  • ¿Qué sucede cuando ejecuta /home/pi/projects/ServiceName/app.js desde el shell?
  • Funciona perfectamente bien. También funciona correctamente con forever-service.
  • ¿Cuál es el resultado de type node y 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% /

Respuesta

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

Esto le dice a systemd que ejecute app.js directamente. ¿Es este archivo .js directamente ejecutable? De lo contrario, el shell arrojará un código de salida 127 – «Comando desconocido».

Comentarios

  • De acuerdo con la guía que vinculé en la pregunta, el shebang en la parte superior de app.js debería hacerlo ejecutable, porque especifica Node como el intérprete.
  • Creo que @DopeGhoti se refería al permiso ejecutable, como en, " lectura-escritura-ejecutable " permisos establecidos por archivo.
  • " De lo contrario, el shell arrojará un código de salida 127 " – cualquiera que sea la razón exacta del 127, systemd no usa el shell para iniciar los servicios.

Responder

127 es un comando no encontrado.

Asegúrese de que el usuario root tenga acceso a Nodo binario; de lo contrario, cambie las siguientes líneas con el usuario para el que ha instalado nodo

User=root Group=root 

De lo contrario, intente seguir

[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 

Una vez que su servidor mac hine is up & no puede acceder al servidor, solucione el problema verificando los registros de / var / log / syslog con el siguiente comando

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

Iniciar al arrancar: sudo systemctl enable rocketch

Respuesta

Para depurar, simplemente ejecute esto (sustituyendo las partes < > con el valor de su archivo de unidad systemd:

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

El problema es el User no puede acceder al ExecStart dentro del PATH que ha configurado.

Si alguien todavía está atascado, he escrito una guía paso a paso para: depuración de systemd

Respuesta

Hola, para cualquiera que esté interesado, tuve este problema y probé todo bajo el sol, pero al final actualicé desde N oda 6 al nodo 12 solucionó el problema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *