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


51

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

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


2
这个人使用upstart服务回答了我的一个问题,并提供了详细的解释,它可能指出了可能遗漏的步骤askubuntu.com/a/278128/75967
Meer Borg

1
你是说/lib/init/upstart-job
达洛尔

Answers:


46

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

initctl reload-configuration

这样,您的暴发户就应该正确注册了。


8
所以这个正确设置的作业(即,startstop工作),但它不会使作业状态显示所有。我仍然必须手动将其添加到/etc/init.d/该地址。
詹姆斯·麦克马洪

1
@JamesMcMahon您需要initctl list使用sudo:运行命令sudo initctl list。这样,您将看到完整的服务列表。
Shahriyar Imanov 2014年

为什么是sudo,它似乎丝毫没有改变initctl list的输出。
LovesTha 2015年

@JamesMcMahon ,I still had to manually add it to /etc/init.d。您还必须添加什么?这意味着,除了X.conf添加到文件/etc/init,这也是必要的文件添加到/etc/init.d
凯文·梅雷迪斯

@KevinMeredith,对不起,我没有更详细的信息。已经2年了,我不记得具体情况了。如果您查看init.d文档,希望它应该很清楚。
James McMahon

18

查看服务手册:

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

(添加了重点)

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


That's why adding it 加什么?除了中的my_service.conf文件/etc/init,还需要一个/etc/init.d文件吗?
凯文·梅雷迪斯

不适用于Ubuntu 16.04.4 LTS \\ $ initctl list initctl:名称“ com.ubuntu.Upstart”不存在$ sudo initctl list initctl:无法连接至Upstart:无法连接至套接字/ com / ubuntu / upstart:连接被拒绝
日晚

13

对于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

15
您的答案与sysv有关,与新贵无关。您可能希望将其删除。
jcomeau_ictx

3
确实是一个有用的回应。
ATorras

尽管它与另一个服务有关,但确实有用
wuppi

1

我发现.conf文件中的错误会使该工作无法被initctl识别。例如,setuid在Upstart版本1.3或更早版本中有一行。


1

虽然当前选择的答案对于将新服务添加到新贵是正确的,但是对于找出为什么/ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.