Systemctl: descubra quais comandos são aplicáveis para um serviço

6

Como descubro quais comandos são aplicáveis a um serviço com o systemctl?

# systemctl reload nagios.service
failed to reload nagios.service: Job type reload is not applicable for unit nagios.service.

Com o init.d você pode executar o script sem comando e ver as informações de uso dos comandos aplicáveis:

# /etc/init.d/nagios 
Usage: /etc/init.d/nagios {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}
    
por Lerkes 10.02.2016 / 07:50

1 resposta

5

systemctl não é como os bons scripts de inicialização antigos. De acordo com a sua página man , ele suporta os seguintes comandos que são como os comandos init-script que você está procurando:

  • start Inicia (ativa) uma ou mais unidades especificadas na linha de comando.
  • stop Pare (desative) uma ou mais unidades especificadas na linha de comando.
  • reload Solicita todas as unidades listadas na linha de comando para recarregar sua configuração.
  • restart Reinicie uma ou mais unidades especificadas na linha de comando. Se as unidades ainda não estiverem funcionando, elas serão iniciadas.
  • try-restart Reinicie uma ou mais unidades especificadas na linha de comando se as unidades estiverem em execução. Isso não faz nada se as unidades não estiverem em execução. Note que, para compatibilidade com scripts init Red Hat, condrestart é equivalente a este comando.
  • reload-or-restart Recarregue uma ou mais unidades se elas forem compatíveis. Caso contrário, reinicie-os. Se as unidades ainda não estiverem funcionando, elas serão iniciadas.
  • reload-or-try-restart Recarregue uma ou mais unidades se elas forem compatíveis. Caso contrário, reinicie-os. Isso não faz nada se as unidades não estiverem funcionando. Observe que, para compatibilidade com scripts init do SysV, force-reload é equivalente a esse comando.

Portanto, o grupo desses comandos resume-se basicamente a start , stop e reload . Como start e stop são necessários para a maioria dos tipos de serviço (e você normalmente sabe se um serviço não suporta um deles), a única coisa que você poderia querer saber é se um determinado serviço suporta reload ou não .

Na maioria das vezes, você quer recarregar ou reiniciar: use systemctl reload-or-restart nagios . Para realmente descobrir qual comando (se houver) é executado para recarregar, você pode procurar em seu arquivo de serviço. Geralmente, isso pode ser encontrado em /lib/systemd/system/ ou /usr/lib/systemd/system e é denominado $SERVICENAME.service (no seu caso, nagios.service ). Este arquivo contém comandos para iniciar, parar e recarregar o serviço, ou seja, ExecStart , ExecStop e ExecReload . Se você estiver interessado nisso, você pode fazer um grep ExecReload /lib/systemd/system/nagios.service para descobrir se um serviço suporta recarga ou não.

TL; DR

systemctl essencialmente suporta start , stop e reload . Para descobrir se um Serviço suporta recarga, apenas tente. Se você precisar recarregar vários serviços em um script ou algo assim, use reload-or-restart , que recarregará o serviço se ele tiver um ExecReload -command armazenado, caso contrário, ele será reiniciado.

    
por 12.02.2016 / 14:05