正确的安装自定义upstart服务的方法

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

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

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

 initctl reload-configuration 

这样你的新贵就应该正确注册。

查看服务手册:

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

(重点补充)

这就是为什么将它添加到/etc/init.d(sysvinit作业所在的位置)使其工作的原因。 所以:尝试运行initctl list :)。

对于SysV服务

确保在Ubuntu中添加/创建新服务时按照以下步骤操作。

  1. /etc/init.d/创建服务文件
  2. chmod 700 /etc/init.d/
  3. update-rc.d defaults
  4. update-rc.d enable

现在看你服务了

 service --status-all 

虽然当前选择的答案对于将新服务添加到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 

我发现.conf文件中的错误可能导致initctl无法识别该作业。 例如,在Upstart 1.3或更早版本中具有setuid行。