Como criar um arquivo de serviço no Linux

Como Criar Um Arquivo De Servico No Linux



O sistema init systemd agora faz parte de quase todas as distribuições Linux. Como administrador ou desenvolvedor, você cria serviços que o systemd pode gerenciar. Por exemplo, se você deseja iniciar serviços na inicialização ou controlá-los manualmente, isso pode ser feito por meio de um arquivo de serviço personalizado.

Neste tutorial, explicarei como criar um arquivo de serviço systemd no Linux.







O que é um arquivo de serviço

Antes de prosseguir, vamos entender o que é um arquivo de serviço systemd e como ele é criado no Linux.



Um arquivo de serviço systemd contém instruções definidas para o systemd gerenciar o serviço. Normalmente contém três seções:



  • Unidade
  • Serviço
  • Instalar

O Unidade seção contém informações básicas sobre o serviço, como uma breve descrição, páginas de documentação e um caminho para dependências. O Instalar é opcional, mas normalmente gerencia em qual estado do sistema o serviço deve ser habilitado.





O Serviço A seção normalmente fica imprensada entre a seção Unidade e Instalação. Ele contém principalmente o tipo de serviço e o caminho dos executáveis ​​que são essencialmente comandos a serem executados ao invocar o serviço pelo systemd.

Esta é a aparência de uma estrutura típica de arquivo de serviço.



[ Unidade ]

Diretiva1 =instrução

Diretiva2 =instrução



[ Serviço ]

Diretiva1 =instrução

Diretiva2 =instrução



[ Instalar ]

Diretiva1 =instrução

Diretiva2 =instrução

Aqui, as diretivas são parâmetros que recebem suas respectivas entradas. Por exemplo, o Descrição A diretiva leva uma string com o nome do serviço. De maneira semelhante, ExecStart leva em consideração o caminho completo do executável.

Um arquivo de serviço típico de ssh.serviço é fornecido abaixo.

Como criar um arquivo de serviço

Para criar um serviço systemd, é necessário compreender as principais diretivas. Neste guia, abordarei as diretivas essenciais que podem ajudá-lo a criar um arquivo de serviço totalmente funcional.

A criação de um arquivo de serviço envolve várias etapas. Vamos começar criando o arquivo de script.

Observação: Para continuar com o método mencionado abaixo, você deve ter privilégios de root.

1. Criando um script

A etapa inicial envolve a criação do código que será executado quando o serviço iniciar seu funcionamento. Para este tutorial, estou criando um script bash que armazenará o tempo de atividade do sistema Linux e o uso de memória.

Vamos criar um script no diretório atual com o nome de meuscript.sh usando o editor nano.

sudo nano meuscript.sh

Agora, adicione o script fornecido abaixo no arquivo e salve-o pressionando ctrl+x e então e .

#!/bin/bash

eco '>>Aqui está o tempo de atividade do seu sistema<<' > lar / ele mesmo / meuarquivo.txt

tempo de atividade >> lar / ele mesmo / meuarquivo.txt

eco '>>Aqui está o uso de memória do seu sistema<<' >> / lar / ele mesmo / meuarquivo.txt

livre -m >> lar / ele mesmo / meuarquivo.txt

dormir 60

O script contém algumas strings de eco e tempo de atividade e livre comandos.

O tempo de atividade O comando no Linux é usado para imprimir há quanto tempo um sistema está em execução e quantos usuários estão conectados com uma carga média do sistema nos últimos 1, 5 e 15 minutos.

O livre comando é usado para imprimir o uso de memória do sistema, enquanto o -m flag é usado para imprimir a saída em MB .

Para salvar informações em um arquivo de texto, usamos operadores especiais chamados operadores de redirecionamento. O > operador é usado para inserir texto no arquivo de texto mencionado. Porém, se o arquivo ainda não existir, ele será criado. Enquanto o >> operador é usado para anexar o texto no arquivo. O dormir O comando é utilizado para manter a atividade do serviço por um período mínimo de um minuto.

Agora, torne o script executável concedendo as permissões necessárias.

sudo chmod +x meuscript.sh

O script agora tem permissão de execução, vamos prosseguir para a próxima seção.

Observação: Para tornar o arquivo de serviço livre de erros, use o caminho absoluto do arquivo no script bash.

2. Criando um arquivo .service

Em seguida, crie um arquivo de serviço com o .serviço extensão. O arquivo de serviço deve ser criado no /etc/systemd/system diretório. Primeiro, navegue até este diretório usando o cd comando.

cd / etc. / sistema / sistema

Você pode criar o arquivo de serviço em qualquer diretório e, posteriormente, movê-lo para esse diretório.

Estou criando um arquivo de serviço com meuserviço.serviço nome.

sudo nano meuserviço.serviço

Agora, adicione as seguintes linhas ao arquivo.

[ Unidade ]

Descrição =Meu serviço

[ Serviço ]

Tipo =simples

ExecStart = / caixa / festa / lar / ele mesmo / script.sh

Reiniciar =em caso de falha

[ Instalar ]

Procurado por =multiusuário.destino

Observe que [Unidade], [Serviço], e [Instalar] são maiúsculas e minúsculas . O arquivo de serviço não funcionará se algum deles for mencionado incorretamente, como [UNIT] ou [SERVICE].

O nome do serviço é especificado como Meu serviço no Descrição directiva do [Unidade] seção.

O Tipo do serviço é simples no [Serviço] seção, que é o tipo padrão. Bifurcação , um disparo , notificar , dbus e inativo são alguns dos outros tipos.

Se você quiser tornar o serviço específico do usuário, então o Do utilizador A diretiva também pode ser usada com o nome de usuário do usuário. O uso desta diretiva tornará a permissão do usuário do serviço dependente.

Enquanto o ExecStart diretiva contém o caminho completo do executável. No exemplo acima, o arquivo de script meuscript.sh está armazenado no /casa/sam/ diretório. Na verdade, esta diretiva gerencia o que executar quando um serviço é invocado pelo systemd. Se o caminho completo do comando não for especificado, ele será resolvido automaticamente para corrigir caminhos absolutos, como /usr/local/bin , /usr/bin/, e /bin . É perfeitamente normal usar o nome do executável, desde que esteja nos diretórios de comando padrão; caso contrário, mencione o caminho absoluto. Observe que também podem ser usados ​​vários comandos separados por ponto e vírgula (;).

O [Instalar] seção é opcional; no entanto, indica como o serviço está habilitado. O Procurado por A diretiva usa os arquivos de destino no nível de execução como parâmetros. Vários arquivos de destino indicaram diferentes níveis de execução do sistema, como desligar , resgatar , multi usuário , gráfico , e reinício .

O multiusuário.target significa que o serviço será habilitado quando o sistema estiver em um estado que permita sessões não gráficas multiusuário.

3. Ativando o Serviço

Para ativar o serviço, primeiro recarregue as configurações do systemd usando sistemactl Utilitário.

sudo systemctl daemon-reload

Em seguida, ative o serviço novamente usando sistemactl comando com habilitar .

sudo sistemactl habilitar meuserviço.serviço

Para verificar, verifique o status do serviço usando o status do systemctl comando.

O serviço está sendo executado com sucesso.

Agora, vamos ler o arquivo de texto meuarquivo.txt o serviço criado no /lar diretório.

Como criar um arquivo de serviço Systemd para usuário normal

O procedimento de criação do arquivo de serviço para um usuário normal é semelhante ao método de criação de um arquivo de serviço pelo administrador. No entanto, o diretório para salvar o arquivo de serviço para usuários normais é diferente. Usuários normais devem colocar seus arquivos de serviço no ~/.config/systemd/user . Este diretório deve ser criado usando o mkdir comando.

mkdir ~ / .config / sistema / do utilizador

Para ativar o serviço por um usuário normal -do utilizador comando é inserido com sistemactl em vez de sudo .

sistemactl --do utilizador recarregar daemon

sistemactl --do utilizador habilitar NOME DO SERVIÇO.service

sistemactl --do utilizador statusSERVICE-NAME.service

O -do utilizador opção é usada para gerenciar os arquivos de serviço systemd do usuário.

Como remover arquivo de serviço

Para remover o arquivo de serviço, primeiro o serviço precisa ser interrompido.

sudo systemctl parar SERVIÇO-NAME.service

Verifique o status usando status do systemctl comando para saber se o serviço está parado ou não. Em seguida, remova o arquivo de serviço usando o rm comando.

sudo rm / etc. / sistema / sistema / NOME DO SERVIÇO.service

Agora, recarregue o sistema configuração.

sudo systemctl daemon-reload

Conclusão

O serviço systemd personalizado é vantajoso em vários cenários. Neste guia, aprendemos como criar um arquivo de serviço systemd personalizado para um administrador de sistema e como usuários normais podem criar um arquivo de serviço. Além disso, vemos também o procedimento de remoção do arquivo de serviço.