다양한 배포판에서 사용할 공통 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"