![如何注册一个 upstart 服务?](https://linux22.com/image/980181/%E5%A6%82%E4%BD%95%E6%B3%A8%E5%86%8C%E4%B8%80%E4%B8%AA%20upstart%20%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我upstart
按照以下方式编写了一个服务Ubuntu 维基文章并.conf
在 中创建了一个文件/etc/init/
。没有关于如何使脚本在initctl list
和中可供upstart
管理命令(如start
和 )使用的说明service
。官方新贵食谱没有解释这件事。
启动失败
$ start archiva
start: Unknown job: archiva
$ service archiva start
archiva: unrecognized service
答案1
您的 conf 文件中可能存在一些错误。要验证它,请使用:
init-checkconf archiva.conf
或者
initctl check-config archiva
正如新贵食谱中所述:10.1.6.2 initctl 检查配置和10.1.7 init-checkconf。
新贵使用在里面守护进程,根据手册页:
在启动时,Upstart init(8) 守护进程从 /etc/init/ 目录中的文件中读取其作业配置,并使用 inotify(7) 监视这些文件的未来更改。
因此,一旦您将配置文件放入/etc/init
,您的服务就会被启用,并且在下次重新启动时,init 守护程序将启动它。
答案2
Upstart 使用 inotify。如果您将配置文件放入/etc/init/
,Upstart 应该会检测并自动使该作业可用。如果您没有看到它出现,则您的新配置可能有问题。尝试检查日志以查找错误。
答案3
/etc/init/scriptname.conf
像在脚本NAME=value
中那样在文件中定义变量initd
会导致 upstart 给出这种相当无意义的反馈(告诉它存在语法错误比说脚本不存在更合适)。删除该行会导致脚本被识别并可随机启动(请参阅我建议的改进launchpad.net 上的错误 1446577了解详情)。