Поэтому я написал, казалось бы, базовый сценарий запуска сервера node.js на основе сценария из Эта статья, и он отлично работает, запускает сервер и работает на ожидаемом порту. Проблема возникает, когда я пытаюсь его убить.
Я пробовал несколько команд, например stop socketserver
и initctl stop socketserver
(функционально эквивалентно) или kill
и все они делают две вещи: успешно завершают процесс, а затем снова запускают его под другим pid.
Все, что я хочу, - это чтобы этот процесс заканчивался, когда я ему говорю, но возродился, когда это не действительный код выхода; что я сделал не так?
description "node.js Socket Server"
author "moberemk"
start on started
stop on shutdown
# Automatically Respawn
respawn
respawn limit 10 5
script
# Not sure why $HOME is needed, but we found that it is:
export HOME="/root"
export SOCKETSERVER_PORT=5000
exec sudo -u root /usr/bin/nodejs /vagrant/webroot/socketserver/app.js
end script
(также я знаю, что сценарий может выдать это, но я запускаю это в ящике Vagrant, используя Ubuntu 14.04)
похоже, вы инструктируете выскочку сделать что-то довольно необычное:
start on started
эта линия не вызвать синтаксическую ошибку. но обычно вы должны указать start
строфа такая:
start on started some-other-service
предполагая, что вы хотите, чтобы ваша служба nodejs запускалась при запуске (и предполагая, что для этого требуется подключение к Интернету), возможно, вы хотели сделать что-то вроде:
start on (local-filesystems and net-device-up IFACE!=lo)
редактировать
start on started
после дальнейшего расследования я определил, что эта строфа фактически заставляет выскочку запускать вашу службу всякий раз, когда завершается запуск другой службы, что объясняет, почему ваш процесс стал неубиваемым.
Закомментируйте или удалите строки возрождения