Ubuntu 18 上缺少 insserv

Ubuntu 18 上缺少 insserv

我的一些安装脚本正在使用 insserv,它在 Ubuntu 16 上运行良好。现在在 Ubuntu 18 上,虽然包本身(虽然非常精简)在那里,但二进制 insserv 却丢失了。

切换到 systemd init 系统是否很困难?奇怪的是,我找不到任何关于 Ubuntu 18 上 insserv 不可用的公告。

答案1

使用旧版 init 脚本与 systemd 并不难。下面是一个例子。给出以下 SysV init 脚本/etc/init.d/mylittledaemon

#!/bin/bash

### BEGIN INIT INFO
# Provides: littledaemon
# Required-Start: $remote_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Description: My little daemon
### END INIT INFO

case "$1" in
    start)
        (sleep 5000) </dev/null >/dev/null 2>&1 &
        ;;
    stop)
        pkill -f "sleep 5000"
        ;;
esac

你可以像这样使用 systemd 启用它:

$ sudo chmod +x /etc/init.d/mylittledaemon
$ sudo systemctl enable mylittledaemon
mylittledaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mylittledaemon

然后使用启动它

$ sudo systemctl start mylittledaemon

这将查看 LSB 信息注释并实际调用update-rc.d,就像 insserv 所做的那样。它还将使用 生成临时 systemd 服务单元systemd-sysv-generator

也可以看看:http://manpages.ubuntu.com/manpages/bionic/man8/systemd-sysv-generator.8.html

更好的长期方法是将您的 init 脚本转换为 systemd 服务单元。网上有很多教程,例如这个:http://0pointer.de/blog/projects/systemd-for-admins-3.html

相关内容