无法杀死的 upstart 进程

无法杀死的 upstart 进程

因此,我基于以下脚本编写了一个看似基本的 node.js 服务器 upstart 脚本:本文,并且运行正常,启动服务器并在预期端口上运行。当我尝试终止它时,问题就出现了。

我尝试了一些命令,例如stop socketserverinitctl 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

(我也知道该脚本可能会泄露这一点,但我在使用 Ubuntu 14.04 的 Vagrant 框上运行它)

答案1

看起来好像你正在指示 upstart 做一些相当特别的事情:

start on started

这行没有触发语法错误。但通常你会指定start这样的节:

start on started some-other-service

假设你希望你的 nodejs 服务在启动时运行(并且假设它需要互联网连接)也许你想要执行以下操作:

start on (local-filesystems and net-device-up IFACE!=lo)

编辑

start on started

经过进一步调查,我确定此节实际上导致 upstart 在另一个服务启动完成后运行您的服务,这可以解释为什么您的进程变得无法终止。

答案2

注释掉或删除重生行

相关内容