さまざまなディストリビューションで使用する共通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"