我写了一个简单的 upstart 任务:
start on runlevel [2345]
stop on runlevel [016]
exec dnscrypt-proxy -E -R cisco-ipv6
它在启动时正常启动,但仍无法被service --status-all
和识别initctl list
。我在网上搜索过,发现一些类似的问题是由语法错误引起的,所以我用 进行了检查init-checkconf
,结果显示“语法正常”。我是不是漏掉了什么?
编辑:
我发现了这个相关问题:安装自定义 upstart 服务的正确方法
事实证明,我sudo
在运行的时候遗漏了initctl list
。但它并没有解释为什么有些服务需要 root 权限才能显示,而其他服务则不需要,因为所有.conf
文件都有完全相同的所有者和权限。
答案1
看起来你dnscrypt-proxy -E -R cisco-ipv6
需要网络,并且你的初始化脚本在网络和其他所需服务之前运行,所以编写你的脚本
start on started networking
或者
start on network-interface-up INTERFACE=eth0
如果你的服务需要文件系统,那么你可以写
start on filesystem and started networking
如果这还依赖于其他服务,则包括
start on started other-service
你可以学习这里