我正在定义要在不同发行版中使用的通用 bash 文件。我需要一种方法来检查系统是否正在使用 systemd 或 sysvinit (/etc/init.d/)。我需要这个,所以我运行适当的命令来启动服务。检查此问题的安全方法是什么?我目前检查 systemctl 命令是否存在,但这真的是一个选项吗,因为可能存在 systemctl 命令可用的情况,但这并不一定意味着实际使用了 systemd ?
以下是我当前的 bash 脚本的摘录:
#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
systemctl service start
else
/etc/init.d/service start
fi
答案1
Systemd 和 init 有pid = 1
pidof /sbin/init && echo "sysvinit" || echo "other"
检查系统
pidof systemd && echo "systemd" || echo "other"