6 votes

ne peut pas obtenir le démarrage de upstart script pour le programme node.js à l'allumage

J'ai créé un script script assez simple pour mon programme node.js qui doit s'exécuter au démarrage :

start on startup
stop on shutdown

script
    exec sudo -u max WEBSITES_DIR=/home/max/websites/ /usr/local/bin/node /home/max/websites/server.js 2>&1 >> /var/log/node.log
end script

Si j'utilise :

sudo start my-program 

cela fonctionne, mais lorsque je redémarre la machine, j'obtiens le message d'erreur :

init: my-program main process (325) terminated with status 2

Quelqu'un a-t-il une idée sur la manière de déboguer ce problème ?

12voto

Evan Broder Points 821

En startup est le tout premier événement émis lors du processus de démarrage de Upstart. Il y a toutes sortes de choses qui ne se sont pas encore produites - le système de fichiers racine sera toujours monté en lecture seule, le réseau n'a pas été initialisé, etc.

Je soupçonne que le job se termine rapidement parce que toutes ses dépendances (explicites ou implicites) ne sont pas encore initialisées. Je changerais la condition de démarrage en quelque chose comme

start on filesystem and started networking

Au moins, vous pourrez alors écrire dans votre fichier journal.

Par ailleurs, il semble que vous ayez inversé vos arguments de redirection de sortie - vous vouliez en fait dire >> /var/log/node.log 2>&1 . En utilisant 2>&1 signifie "prendre ce qui est actuellement fd 1, et faire de fd 2 la même chose", mais vous n'avez pas encore changé ce qu'est stdout.

0voto

HiMax,

Démarrer node.js sur un serveur Ubuntu

more /etc/init/noded.conf

Fichier de démarrage d'Ubuntu à l'adresse /etc/init/noded.conf :

description "noded.conf"

author      "ntbinh"

start on runlevel [2345]

stop on runlevel [06]

respawn

script

su - ubuntu -c "NODE_ENV=test exec sudo /etc/init.d/noded start"

end script

Vous avez déjà /etc/init.d/noded . Vous pouvez modifier /etc/init/noded.conf ==> startup booting :

 # Ubuntu upstart file at `/etc/init/noded.conf`

 description "noded.conf"
 author      "ntbinh"

 respawn

 start on runlevel [2345]

 stop on runlevel [06]

 script

 su - ubuntu -c "NODE_ENV=test exec sudo /usr/bin/nohup /usr/bin/node /home/ubuntu/server.js" >> /home/ubuntu/log.log 

 end script

-1voto

Aminah Nuraini Points 999

Dans mon cas, l'erreur similaire a été provoquée en essayant de démarrer un script à partir de mon script upstart, qui n'existait pas en réalité. Il s'est avéré que j'ai oublié de script et de pousser le script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X