2

我正在尝试为 Ubuntu upstart/Debian SysV 和 systemd 系统创建一组通用的初始化脚本。

我意识到对于新贵来说,我总是可以简单地检查我的/etc/init.d/appname文件:

. /lib/lsb/init-functions
check_for_upstart() {
    if init_is_upstart; then
        echo "Upstarted detected. Use upstart service commands. Exiting." >&2
        exit 1
    fi
}

(或者我可以像一些 Ubuntu 脚本那样获得更高级的并将相关命令转发给新贵)

是否有类似的方法来检测 systemd 是否正在使用并退出或重定向到 systemctl?我意识到很多 openSUSE 脚本都重定向到 systemctl,但是看看这些脚本,我不明白它们是如何做到这一点的。我猜这是通过/etc/rc_status它们包含的文件,但这似乎是 openSUSE 特定的,不适用于 CentOS。

最终我想支持 Ubuntu 14、Debian 7、CentOS/RHEL 7 和 openSUSE(任何 systemd)。所以我的 systemv init 脚本实际上只适用于 Debian,并且只会在每个其他发行版上都带有一条消息(或以某种标准方式重定向到 systemctl/upstart)。

是否有任何示例/最佳实践可以实现这一目标?

4

0 回答 0