![시스템이 BASH에서 systemd 또는 sysvinit를 사용하고 있는지 확인하는 편리한 방법은 무엇입니까? [반복하다]](https://linux55.com/image/52016/%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4%20BASH%EC%97%90%EC%84%9C%20systemd%20%EB%98%90%EB%8A%94%20sysvinit%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%ED%8E%B8%EB%A6%AC%ED%95%9C%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B0%98%EB%B3%B5%ED%95%98%EB%8B%A4%5D.png)
다양한 배포판에서 사용할 공통 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"