检查系统是否在 BASH 中使用 systemd 或 sysvinit 的便捷方法?

检查系统是否在 BASH 中使用 systemd 或 sysvinit 的便捷方法?

我正在定义要在不同发行版中使用的通用 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"

在此输入图像描述

相关内容