Ao iniciar, reiniciar um servidor apache há diferença entre os comandos a seguir?
sudo service apache2 restart
sudo service apache2 stop
sudo service apache2 start
E
sudo systemctl restart apache2
sudo systemctl stop apache2
sudo systemctl start apache2
Estou aprendendo um pouco sobre servidores Linux brincando com a pilha LAMP, mas quero saber por que certos guias usam uma sintaxe e outros guiam a outra.
usando um arquivo de amostra do meu
/etc/init.d
que é para um gerenciador de licenças rlm, o código relevante nesse arquivo relacionado a iniciar, parar, reiniciar e status:Como você pode ver,
restart
é apenas uma chamada de função que as chamadas param e depois iniciam. Então isso é tudorestart
e nada mais é do que chamar stop e start.Um arquivo init.d ou systemctl pode realmente definir o reinício para ser diferente e mais envolvido do que o meu exemplo? sim, e você teria que olhar o código em primeira mão para realmente saber. Mas é muito provável que sejam todos muito parecidos com o que postei acima, incluindo seu arquivo apache, no que diz respeito a iniciar | parar | reiniciar | status.
No contexto de sua pergunta, se você deseja parar E iniciar seu serviço apache2, a menor quantidade de digitação para conseguir isso seria
service apache2 restart
em vez de fazer dois comandos separados manualmente para primeiro parar e depois iniciar. Mas de qualquer forma você conseguiria a mesma coisa. Reconheça também se você fizerrestart
isso, o serviço tentará ser iniciado imediatamente após ser interrompido, independentemente de a interrupção ter sido bem-sucedida; isso pode ser bom ou ruim dependendo do que você está fazendo ou depurando. Às vezes, é mais útil fazer umservice whatever stop
e, em seguida, pará-lo por quanto tempo você faz outras coisas antes de emitir manualmente o arquivoservice whatever start
.init.d é a antiga maneira linux que trabalhava em torno da
service
estrutura de sintaxe e agora foi substituída pelo systemd linux e pelasystemctl
estrutura de sintaxe. Mas oservice whatever <start|stop|restart|status
ainda é suportado e será conhecido comosystemctl <start|stop|restart|status whatever
. Portanto, não há diferença em usarservice
vssystemctl
em sistemas linux systemd modernos. Se você tentar usarsystemctl
em um antigo sistema linux do tipo init.d, redhat5 por exemplo, será simplesmente command not found [espero] por razões óbvias. Você pode ler artigos da web explicando initd vs systemd.Ainda é perfeitamente válido e correto usar a
service whatever <start|stop|status|restart>
sintaxe na documentação, bem como digitá-la na linha de comando. Para documentação e guias, ele transmite o ponto com a menor quantidade de caracteres e, como aliase praticamente diretamente para systemctl (que são serviços), é mais legível para humanos, na minha opinião, continuar usando essa sintaxe de serviço initd herdada em qualquer documentação .