serviço vs. scripts systemctl - que usar

24

No Fedora, temos os scripts 'systemctl' e 'service'. Parece que o serviço chama internamentesystemctl . Então, qual é a maneira correta / correta no Fedora de iniciar ou interromper serviços - via systemctlou serviceinstalação? Pode haver nuances a serem lembradas?

Marca
fonte
3
Usuário Debian, portanto, não posso responder com certeza, mas service foo startno debian funciona se seu sistema init é systemd ou sysvinit ou upstart; systemctlprovavelmente não funcionaria se o systemd não fosse o PID1.
Shadur

Respostas:

14

A maneira de parar / iniciar serviços no Fedora (versões posteriores) é usando systemctl .

No entanto, pode haver alguns serviços nos /etc/init.d/quais você pode controlar com o servicecomando Você ainda pode controlá-los com systemctlasystemd os mapeia automaticamente para arquivos de unidade para você.

Por exemplo, no meu CentOS 7 (Fedora 19 ou próximo), há um /etc/rc.d/init.d/networkscript que eu poderia controlar com o servicecomando Se eu usar systemctl, ele ainda funciona:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

Como você pode ver, ele foi mapeado para /etc/rc.d/init.d/networkpor systemde o systemctlcomando a controla.

Eu poderia ser tão "no ano passado" e usar service:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

Ambos funcionam, mas observe que eles dão resultados diferentes em seus statuscomandos.

garethTheRed
fonte
10

Geralmente, os servicescripts são redirecionados para scripts systemctl (Systemd); portanto, é basicamente sua preferência que você deseja usar.

Exemplo

Do meu sistema Fedora 20.

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

Eu geralmente uso ambos os métodos, já que velhos hábitos morrem com dificuldade. Mas se você estiver tentando se adaptar ao mundo Systemd, continuarei me forçando a fazer as coisas usando, systemctlse possível.

Além disso, o Systemd traz tudo o que você costumava fazer com chkconfige servicesob um comando systemctl, por isso geralmente acho mais fácil lidar com isso a longo prazo.

Esta folha de dicas no site do projeto Fedora é útil para fazer a troca.

   ss1

Aliás, a resposta à sua pergunta original é respondida em uma nota de rodapé nessa página:

Observe que todas as linhas / sbin / service e / sbin / chkconfig listadas acima continuam funcionando no systemd e serão convertidas para equivalentes nativos conforme necessário. A única exceção é chkconfig --list.

Referências

slm
fonte