我正在尝试为Ubuntu upstart / Debian SysV和systemd系统创建一组通用的init脚本。
我意识到新贵,我总是可以在我的/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
}
(或者我可以更好地将相关命令转发给upstart,就像一些Ubuntu脚本那样)
是否有类似的方法来检测systemd是否正在使用并退出或重定向到systemctl?我意识到很多openSUSE脚本重定向到systemctl,但是看一下脚本,我不明白他们是如何做到这一点的。我通过它们包含的/etc/rc_status
文件猜测它,但这似乎是特定于openSUSE的,并不适用于CentOS。
最终我想支持Ubuntu 14,Debian 7,CentOS / RHEL 7和openSUSE(任何systemd)。因此,我的systemv init脚本实际上只适用于Debian,并且只会在每个其他发行版上存在消息(或以某种标准方式重定向到systemctl / upstart)。
是否有任何示例/最佳做法可以实现这一目标?