我正在尝试为 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)。
是否有任何示例/最佳实践可以实现这一目标?