systemctl无法识别我的服务:默认启动不包含任何运行级别,正在中止


14

我想定义一个在Ubuntu服务器16.10上启动时启动的简单服务。所以我创建了一个/etc/init.d/mydaemon

我以某种方式弄乱了upstart和systemd:起初我以为我必须设置upstart服务。因此,在将文件转换为新贵语法后,我运行update-rc.d mydaemon defaults

我找出了错误并运行update-rc.d mydaemon remove,转换为systemd语法,然后运行systemctl enable mydaemon,但是得到了错误:

mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.

Answers:


15

从redhat框中将sysv脚本移植到ubuntu时,我遇到了相同的错误。我需要在脚本中添加一些标题

### BEGIN INIT INFO
# Provides:          my-service-name
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: your description here
### END INIT INFO

/ubuntu/909523/default-start-contains-no-runlevels-aborting中找到



1
我的脚本已经有了该阅读器,但仍然显示完全相同的错误。.= [
Luciano Andress Martini

挽救了我的一天:-)非常感谢
Aravinthan K

11

问题在于文件的位置,在Ubuntu服务器上,它期望在中/etc/systemd/system,该文件/etc/init.d/用于旧文件。


该解决方案固定我的服务
AmirHossein雷扎伊

我认为如果init脚本是bash脚本,则此解决方案不起作用。不能复制文件,而必须将运行级别的参数作为注释添加为镍狐在其答案中张贴。
LaTechneuse

当然,最初的问题是在.service文件上,而不是bash初始化脚本。
CharlesB

7

只是为了补充@CharlesB的答案-当我进入此状态时,我可以简单地将文件从/etc/init.d/移至/etc/systemd/system/并重新运行命令,它可以正常运行:

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon

1
这应该是一条评论。
Gerald Schneider

我认为这是一个更容易理解的答案,所以使它成为一个答案。
Cory

0

我遇到了相同的错误,并修复了该错误,并添加了默认的启动信息,如下所示:

vi /etc/init.d/greenbone-security-assistant

更改自:

# Default-Start:

至:

# Default-Start: 2 3 4 5

:wq

root @ kali:/etc/init.d# systemctl启用greenbone-security-assistant

使用/ lib / systemd / systemd-sysv-install与SysV服务脚本同步greenbone-security-assistant.service的状态。

执行:/ lib / systemd / systemd-sysv-install启用greenbone-security-assistant

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.