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

Cha*_*esB 26 ubuntu systemd

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

我不知何故在 upstart 和 systemd 之间搞砸了:起初我以为我必须设置一个 upstart 服务。因此,在将我的文件转换为 upstart 语法后,我运行了update-rc.d mydaemon defaults.

我找出了我的错误并 run update-rc.d mydaemon remove,转换为 systemd 语法,然后 run 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.
Run Code Online (Sandbox Code Playgroud)

小智 24

将 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
Run Code Online (Sandbox Code Playgroud)

https://askubuntu.com/questions/909523/default-start-contains-no-runlevels-aborting 中找到


Cha*_*esB 13

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


Cor*_*ory 9

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

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon
Run Code Online (Sandbox Code Playgroud)

  • 这应该是一个评论。 (2认同)