Вопрос: Cant getstart скрипт для запуска программы node.js при запуске


Я сделал довольно простой сценарий запуска для моей программы node.js, которая должна запускаться при запуске:

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

Если я использую:

sudo start my-program 

он работает, но когда я перезагружаю машину, я получаю сообщение об ошибке:

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

Кто-нибудь знает, как отладить это?


6
2018-06-12 11:06


Источник




Ответы:


startup событие - это самое первое событие, которое испускается в процессе загрузки Upstart. Есть все виды вещей, которые еще не произошли - корневая файловая система все еще будет смонтирована только для чтения, сеть не была инициализирована и т. Д.

Я подозреваю, что работа быстро завершается, потому что все ее зависимости (явные или неявные) еще не инициализированы. Я бы изменил условие начала на что-то вроде

start on filesystem and started networking

По крайней мере, тогда вы сможете записать в свой файл журнала.

Как примечание, похоже, вы изменили свои аргументы перенаправления вывода - вы на самом деле означали >> /var/log/node.log 2>&1, С помощью 2>&1 означает «взять то, что в настоящее время является fd 1, и сделать fd 2 тем же», но вы еще не изменили то, что еще есть.


12
2018-06-13 16:21



Это хороший намек, спасибо! Попробуем это завтра. Выполняемый сценарий находится на подключенном диске (сервер является виртуальной машиной на моем компьютере разработки) - это уже смонтировано, когда файловая система готова? Большое спасибо за примечание по аргументам перенаправления. :-) - Max
Это сработало! потрясающе, спасибо большое :-)))) - Max
Событие «файловая система» выдается, когда все файловые системы, перечисленные в /etc/fstab (а также /lib/init/fstab). Существуют также события, испускаемые для каждой файловой системы и определенные классы файловой системы. Верхняя страница-события (7) manpage содержит больше информации о различных стандартных событиях. Это новое в Natty, поэтому, если у вас этого нет, вы можете прочитать его с дерьмовым форматированием на manpages.ubuntu.com/manpages/natty/man7/upstart-events.7.html - Evan Broder
В случае, если кто-либо столкнется с этим вопросом с виртуальной машинной среды, такой как бродяга, используйте start on virtual-filesystems, Это будет ждать таких вещей, как сетевые подключения. (Ref: manpages.ubuntu.com/manpages/trusty/man7/...) - msanford


Himax,

Запуск узла node.js на сервере Ubuntu

more /etc/init/noded.conf

Ubuntu upstart file at /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

Ты уже /etc/init.d/noded, Вы можете редактировать /etc/init/noded.conf  ==> запуск загрузки:

 # 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

0
2017-08-29 10:48





В моем случае подобная ошибка была вызвана попыткой запустить скрипт из моего сценария выскочки, который на самом деле не существовал. Оказалось, что я забыл совершить и нажать сценарий.


-1
2017-12-08 21:37