시스템이 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"

여기에 이미지 설명을 입력하세요.

관련 정보