Qual é a diferença entre service e systemctl?

8

Talvez seja uma questão trivial, mas não está totalmente claro para mim. Em um de nossos servidores, temos alguns processos em segundo plano em execução, que foram iniciados com service e alguns outros que foram iniciados com systemctl , assim:

$ service nginx start
$ systemctl start gunicorn

Qual é a diferença entre os dois comandos? Qual é a maneira preferida de lidar com serviços de segundo plano? Como configurar o comando preferido?

    
por Aidas Bendoraitis 07.08.2017 / 17:54

2 respostas

12

service é um comando de "alto nível" usado para iniciar e interromper serviços em diferentes unixes e linuxes. Dependendo do gerenciador de serviços de "nível inferior", service redireciona em binários diferentes.

Por exemplo, no CentOS 7 ele redireciona para systemctl , enquanto no CentOS 6 ele chama diretamente o script relativo /etc/init.d . Por outro lado, em versões mais antigas do Ubuntu, ele redireciona para upstart

service é adequado para o gerenciamento de serviços básicos, enquanto chamar diretamente systemctl oferece opções de controle maiores.

    
por 07.08.2017 / 18:35
2

systemctl é basicamente uma versão mais poderosa de service .

Com service você só pode fazer comandos relacionados ao serviço (por exemplo, status , reload , restart ), enquanto que com systemctl você pode usar comandos mais avançados, como:

systemctl is-failed name.service # check if service failed to load

Ou serviços de mascaramento:

systemctl mask name.service

Há muita informação boa em esta página do Ask Ubuntu.

    
por 07.08.2017 / 18:15