Como posso saber se service e systemctl são o mesmo comando?

0

Estou tentando executar o Nginx usando o Systemd como gerenciador de processos.

Quando executo sudo service nginx start e, em seguida, digito ps -aux | grep nginx , parece que o mesmo processo está sendo executado quando comecei usando sudo systemctl start nginx .

Este é o caso, que service poderia ser mapeado para systemctl ? Como posso saber?

Quando olho para /etc/init.d/nginx , o script é muito diferente da configuração em /lib/systemd/system/nginx.service .

No entanto, se eu iniciar o nginx usando o comando systemctl e depois pará-lo usando o comando service que funciona bem. O mesmo na ordem inversa.

    
por YPCrumble 27.01.2016 / 00:16

3 respostas

0

sudo strace -f -e trace=process service nginx status 2>&1 | grep systemctl
    
por 27.01.2016 / 01:44
0

Como diz o ditado, "Há mais de uma maneira de gerar um arquivo". Nesse caso, não está absolutamente claro o que você quer dizer com "o mesmo processo em execução", então vou explicar os dois possíveis problemas.

Se o que você está querendo dizer é que você tem o mesmo ID de processo em execução se primeiro fizer um 'systemctl ngix start' e depois fazer um 'service ngix start'. Isso ocorre porque, se um daemon já estiver em execução, um processo de 'início' não será encerrado e iniciado um novo. Em tal situação, o resultado deve ser um não-op. Faça um parar antes de fazer um start subsequente, ou use um comando restart .

Se você fez uma parada (ou uma reinicialização) entre os dois start comandos, e você está vendo ngix rodando em ambos os casos - com os mesmos parâmetros para o comando, mesmo que o IDs de processo são diferentes, então o 'problema' é que, em ambos os casos, o objetivo final é obter o ngix em execução. As localizações dos arquivos de conteúdo e configuração não são alteradas. As opções que você deseja usar não mudam apenas porque programas diferentes as iniciam. É praticamente apenas um caso de "todos os caminhos levam a Roma".

Finalmente, se você suspeitar que systemctl e serviço são links para o mesmo arquivo, tente.

cmp 'which systemctl' 'which service' 

Isso informará se systemctl e serviço contêm exatamente o mesmo código (e / ou links para o mesmo arquivo).

    
por 27.01.2016 / 02:38
0

Eu começaria com which systemctl e which service e, em seguida, verificaria a saída de ls -l para ambos para ver se eles são o mesmo arquivo (via symlink) ou parecidos (tamanho, etc).

Pelo menos aqui (Fedora 23) /usr/bin/systemctl é um binário, /usr/sbin/service é um script de shell que usa comandos systemd para emular o comando SysVinit.

    
por 27.01.2016 / 02:50