Talvez essa seja uma pergunta trivial, mas não está totalmente clara para mim. Em um de nossos servidores, temos alguns processos em segundo plano em execução que foram iniciados service
e outros que foram iniciados systemctl
, como este:
$ service nginx start
$ systemctl start gunicorn
Qual é a diferença entre os dois comandos? Qual é a maneira preferida de lidar com serviços em segundo plano? Como configurar o comando preferido?
Respostas:
service
é um comando "de alto nível" usado para iniciar e parar serviços em diferentes unixes e linuxes. Dependendo do gerenciador de serviços "de nível inferior",service
redireciona para binários diferentes.Por exemplo, no CentOS 7 ele redireciona para
systemctl
, enquanto no CentOS 6 chama diretamente o/etc/init.d
script relativo . Por outro lado, em versões mais antigas do Ubuntu, ele redireciona paraupstart
service
é adequado para o gerenciamento básico de serviços, enquanto a chamada diretasystemctl
oferece mais opções de controle.fonte
systemctl
é basicamente uma versão mais poderosa doservice
.Com
service
você só pode fazer comandos relacionados com o serviço (ou sejastatus
,reload
,restart
) enquanto que comsystemctl
você pode usar comandos mais avançados, tais como:systemctl is-failed name.service # check if service failed to load
Ou serviços de mascaramento:
systemctl mask name.service
Há muitas informações boas nesta página no Ask Ubuntu.
fonte
systemctl
é o principal utilitário para controlar daemons / serviçossystemd
,enquanto o
service
comando é o utilitário tradicional noSysVinit
mundo.Um dos recursos do systemd é ser compatível com os comandos SysVinit / legacy,
portanto, se você tiver o
systemctl
comando,service foo start
será um invólucrosystemctl start foo
.Mesma história para
chkconfig
.fonte