O Systemd e o init possuem pid = 1
pidof /sbin/init && echo "sysvinit" || echo "other"
Verifique se há systemd
pidof systemd && echo "systemd" || echo "other"
Estou definindo arquivos bash comuns que desejo usar em diferentes distribuições. Eu preciso de uma maneira de verificar se o sistema está usando systemd ou sysvinit (/etc/init.d/). Eu preciso disso, então eu corro o comando apropriado para iniciar o serviço. Qual seria a maneira segura de verificar isso? Eu atualmente verifico a existência do comando systemctl, mas isso é realmente uma opção, pois pode haver o caso em que o comando systemctl possa estar disponível, mas isso não significa necessariamente que o systemd é realmente usado?
Aqui está um trecho do meu script atual:
#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
systemctl service start
else
/etc/init.d/service start
fi