Vejo que você mencionou que gostaria de iniciar o HTTPD no nível de execução 3 e 5 e interromper o HTTPD no nível de execução 2 e 4. Aqui está uma URL para o manual da Red Hat que fornece uma excelente visão geral do Init e do SystemD .
O manual da Red Hat afirma que o multi-user.target é o mesmo que os runlevels 2, 3 e 4.
- Nível de execução 0 = poweroff.target
- Nível de execução 1 = rescue.target
- Nível de execução 2 = multi-user.target
- Nível de execução 3 = multi-user.target
- Nível de execução 4 = multi-user.target
- Nível de execução 5 = graphical.target
- Nível de execução 6 = reboot.target
Com isso em mente, parece que não faria sentido usar um comando como systemctl set-default multi-user.target
em uma tentativa de alternar entre os níveis de execução 2, 3 e 4, já que os níveis de execução 2, 3 e 4 são sinônimos de multi-user.target.
Vale ressaltar que o comando systemctl cat httpd
pode ser usado para visualizar algumas das informações de configuração. Relacionado à sua pergunta, este comando mostrará que o HTTPD está configurado para multi-user.target.
# systemctl cat httpd
. . .
[Install]
WantedBy=multi-user.target
Não tenho certeza se isso seria apropriado para o seu ambiente. Uma possível solução para sua necessidade pode ser ter um script que determine o nível de execução atual do sistema e, em seguida, use alguns loops if para iniciar ou parar o daemon HTTPD com base no destino. Por exemplo, talvez o script possa parecer algo assim.
#!/bin/bash
target='systemctl get-default'
if [ $target == "multi-user.target" ]
then
systemctl stop httpd
else
systemctl start httpd
fi