正确的安装自定义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中添加/创建新服务时按照以下步骤操作。
- 在
/etc/init.d/
创建服务文件 -
chmod 700 /etc/init.d/
-
update-rc.d
defaults -
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
行。