Назад | Перейти на главную страницу

Неубиваемый процесс выскочки

Поэтому я написал, казалось бы, базовый сценарий запуска сервера 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

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

Закомментируйте или удалите строки возрождения