systemctl 无法识别我的服务:Default-Start 不包含运行级别,正在中止

systemctl 无法识别我的服务:Default-Start 不包含运行级别,正在中止

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

我不知怎么搞错了 upstart 和 systemd:一开始我以为我必须设置一个 upstart 服务。因此,在将我的文件转换为 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.

答案1

我在将 sysv 脚本从 redhat box 移植到 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

在发现https://askubuntu.com/questions/909523/default-start-contains-no-runlevels-aborting

答案2

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

答案3

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

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

答案4

我遇到了同样的错误,我修复了它并输入了默认的启动信息,如下所示:

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

更改自:

# Default-Start:

到:

# Default-Start: 2 3 4 5

:wq

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

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

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

相关内容