【问题标题】:upstart script not working for a new service新贵脚本不适用于新服务
【发布时间】:2015-05-03 15:49:55
【问题描述】:

我有一个启动服务的 /etc/init.d/some-file 脚本。

我希望它成为 upstart 的一部分,这意味着当我对服务进程执行 kill -9 时,服务应该自动启动。

我在 /etc/init/some-file.conf 中创建了一个文件

start on runlevel [2345]
stop on runlevel [016]

respawn
respawn limit 2 5

exec /etc/init.d/some-file start

创建此文件后,我运行以下命令来重新加载配置更改。

initctl reload-configuration

但是当我终止进程时服务没有启动。

我是在这里遗漏了一些概念还是做错了什么?

【问题讨论】:

    标签: upstart


    【解决方案1】:

    在脚本中,

    exec /etc/init.d/some-file start
    

    应该是这个新贵应该启动的可执行文件或二进制文件的路径,而不是它自己。

    所以把这个改成进程的名字就好了

    exec /usr/bin/<NameOfProcess>
    

    编辑:

    对 conf 文件添加更改后,运行以下命令。

    $ sudo initctl start some-file
    

    some-file 是您的新贵工作的名称。

    还要验证您的新贵作业是否正在运行,请运行以下命令

    $ initctl list
    

    【讨论】:

    • 我将一些文件添加到 /usr/local/bin。没有阳性结果
    • some-file 是什么类型的文件?二进制或 shell 脚本?
    • 是shell脚本。 initctl list 显示一些文件。该服务在我执行 inictl start some-file 时启动。但是当我 kill -9 时,服务不会自动启动
    • Shell 脚本会在使用 upstart 杀死时生成,因为 respawn 仅在关联进程异常终止且不返回零时才会执行。因此,在您的情况下,当您终止与 shell 脚本关联的进程时,您将终止 /bin/sh 进程而不是 shell 脚本。
    • 你说得有道理。关于我在这种情况下可以做什么的任何建议
    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多