对于 SysV 服务

对于 SysV 服务

我在服务器上使用 upstart 提供服务。编写一个 conf 文件并将其放入其中/etc/init相当容易,但这似乎无法完全安装。首先,它service --status-all没有列出我的新服务。我检查了一下,如果我创建了链接/etc/init.d/lib/init/ubstart-job它会显示在状态中。但是手动执行此操作让我认为我做得不对,并且可能还有其他配置步骤没有完成。

安装 upstart 服务的正确方法是什么,以便它能够在所有处理服务的工具中正确注册?

答案1

当您最初将新的 conf 文件复制到 /etc/init 文件夹时,您需要调用:

initctl reload-configuration

这样你的 upstart 就应该被正确注册了。

答案2

查看服务手册:

service --status-all 使用 status 命令按字母顺序运行所有 init 脚本。此选项仅为 sysvinit 作业调用 status,可以使用与 initctl list 类似的方式查询 upstart 作业。

(强调添加)

这就是为什么将它添加到 /etc/init.d(sysvinit 作业所在的位置)可以实现这一点。因此:尝试运行初始化列表反而 :) 。

答案3

对于 SysV 服务

确保在 Ubuntu 中添加/创建新服务时遵循以下步骤。

  1. 在中创建服务文件/etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

现在看到你的服务

service --status-all

答案4

虽然当前选择的答案对于将新服务添加到 upstart 是正确的,但对于找出为什么 /etc/init/ 中的配置无法加载并不是特别有帮助——缺少的部分是首先使用 init-checkconf 来确保您的配置有效,然后使用 reload-configuration:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test

相关内容