システムが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"

ここに画像の説明を入力してください。

関連情報