Como criar um serviço Systemd no Linux

Como criar um serviço Systemd no Linux

Systemd é um conjunto de software moderno que fornece muitos componentes em um sistema Linux, incluindo um sistema e gerente de serviço. É compatível com Sysv e LSB scripts e trabalham como substituto para sysvinit.

Um serviço Systemd é definido em um arquivo de unidade (uma unidade é uma representação de um serviço e recursos do sistema, como dispositivos, soquetes, pontos de montagem, etc.). Os arquivos de unidade de serviço personalizados devem ser armazenados no /etc/Systemd/System/ diretório e deve ter um .serviço extensão. Por exemplo, um costume teste-aplicativo Usos de serviço /etc/Systemd/System/Test-App.serviço arquivo de unidade.

[Você também pode gostar: por que 'init' precisava ser substituído por 'Systemd' no Linux]

Um arquivo de unidade é um arquivo ini de texto simples que geralmente inclui três seções comuns. A primeira seção é geralmente o Unidade Seção que carrega informações genéricas sobre a unidade que não depende do tipo de unidade.

A próxima seção é a seção de tipo de unidade, para um serviço, é um Serviço seção. E a seção final é o Instalar seção que carrega informações de instalação para a unidade.

Neste guia, mostraremos como criar um novo Systemd Serviço e gerenciar o serviço usando o comando SystemCTL, no Linux.

Criando arquivo de serviço Systemd personalizado no Linux

Para executar um aplicativo ou programa ou script como um serviço no Systemd, você pode criar um novo serviço do Systemd da seguinte maneira. Comece criando o serviço unidade arquivo nomeado teste-aplicativo.serviço (Lembre -se de substituir teste-aplicativo com o nome real do seu serviço ou aplicativo), em /etc/Systemd/System/:

# vi/etc/Systemd/System/Test-App.serviço 

A configuração a seguir é usada para definir um serviço para executar um Frasco Aplicação usando Gunicorn, Um servidor http python wsgi para unix.

[Unidade] Descrição = Daemon Gunicorn para servir test-aplicativo após = rede.Target [Service] User = ROOT GROUP = ROOT WORKDIRCORY =/APPS/TEST-APP/AFIMALIZADO = "PATH =/APPS/TEST-APP/BIN" EXECSTART =/APPS/TEST-APP/BIN/Gunicorn-Trabalhadores 9- T 0 -Bind 127.0.0.1: 5001 -M 007 WSGI: APP-Log-Level Debug --Access-Logfile/var/Log/Gunicorn/test_app_access.log --error-logfile/var/log/gunicorn/test_app_error.log execreload =/bin/kill -s hup $ mainpid rebtartSec = 5 [install] wanted =.alvo 

Vamos descrever brevemente cada diretiva de configuração na configuração acima:

  • Descrição - é usado para especificar uma descrição para o serviço.
  • Depois - define um relacionamento com uma segunda unidade, o rede.alvo. Nesse caso, o teste-aplicativo.serviço é ativado após o rede.alvo unidade.
  • Do utilizador - é usado para especificar o usuário com cujas permissões o serviço será executado.
  • Grupo - é usado para especificar o grupo com cujas permissões o serviço será executado.
  • Diretório de trabalho - é usado para definir o diretório de trabalho para processos executados.
  • Ambiente - é usado para definir variáveis ​​de ambiente para processos executados.
  • Exectart - é usado para definir os comandos com seus argumentos que são executados quando este serviço é iniciado.
  • Execreload - é usado para definir os comandos para executar para acionar uma configuração recarregada no serviço.
  • Procurado - Ativa um link simbólico a ser criado no .quer/ ou .requer/ Diretório de cada uma das unidades listadas (s), multi usuário.alvo neste caso, quando o teste-aplicativo.serviço A unidade está ativada usando o SystemCTL Hability Command.

Você pode encontrar todos os parâmetros de configuração da unidade de serviço, bem descritos na documentação da configuração da unidade de serviço.

Salve o arquivo da unidade e feche -o. Em seguida, recarregue o Systemd com este novo arquivo da unidade de serviço executando:

# Comando SystemCtl Daemon-Reload 

Lembre -se de sempre executar este comando depois de editar um arquivo de unidade.

Gerenciar o serviço Systemd no Linux

Para iniciar/ativar o serviço, execute o comando SystemCTL da seguinte forma:

# SystemCtl Start Test-App.serviço 

Para verificar se o serviço está em execução ou não, emita o comando SystemCTL, como mostrado.

# Systemctl Status Test-App.serviço 
Verifique o status do serviço

Para permitir que o serviço comece na inicialização do sistema, use o SystemCtl Ativar comando. Você pode verificar se o serviço foi ativado usando o SystemCTL é que é-habilitado Comando o seguinte:

# SystemCtl Ativar teste-aplicativo.Serviço # Systemctl Is-habilitado de teste.serviço 
Ativar serviço para começar na inicialização

Como alternativa, você também pode ativar e iniciar o serviço ao mesmo tempo, como mostrado.

# SystemCtl Habilable--agora Test-App.serviço 

Para parar/desativar o serviço, execute o Systemctl Stop Comando o seguinte:

# SystemCtl Stop Test-App.serviço 

Para reiniciar o serviço, execute o reinicialização do SystemCTL Comando o seguinte:

# systemctl reiniciar teste-aplicativo.serviço 

Você também pode desativar um serviço para impedir que ele inicie na inicialização do sistema, usando o SYSTEMCTL Desativar comando. Você pode verificar se o serviço foi ativado usando o SystemCTL é que é-habilitado Comando o seguinte:

# SystemCtl Desativar test-App.Serviço # Systemctl é deformado-apap-aplicativo.serviço 

Como alternativa, você pode desativá -lo e detê -lo ao mesmo tempo, como mostrado.

# Systemctl Desativar-agora teste-aplicativo.serviço 

Para obter mais detalhes sobre o gerenciamento de serviços do Systemd e outros recursos, execute:

# man systemctl