我在服务器上使用 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 中添加/创建新服务时遵循以下步骤。
- 在中创建服务文件
/etc/init.d/<service name>
chmod 700 /etc/init.d/<service name>
update-rc.d <service name> defaults
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