Таким образом, я записал по-видимому основной 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),
, как будто вы инструктируете upstart сделать что-то довольно необычное:
start on started
эта строка не вызывает синтаксической ошибки. но обычно вы указываете start
stanza like so:
start on started some-other-service
предполагая, что вы хотите, чтобы ваш сервис nodejs запускался при старте (и предполагая, что для этого требуется подключение к Интернету), возможно, вы хотели сделать что-то вроде:
start on (local-filesystems and net-device-up IFACE!=lo)
edit
start on started
после дальнейшего изучения, я определил, что эта строка на самом деле вызывает запуск вашего сервиса всякий раз, когда запускается другой сервис, что объясняет, почему ваш процесс стал невозможен.
.