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.shAgora, adicione o script fornecido abaixo no arquivo e salve-o pressionando ctrl+x e então e .
#!/bin/basheco '>>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.shO 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 / sistemaVocê 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çoAgora, 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-reloadEm seguida, ative o serviço novamente usando sistemactl comando com habilitar .
sudo sistemactl habilitar meuserviço.serviçoPara 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 utilizadorPara ativar o serviço por um usuário normal -do utilizador comando é inserido com sistemactl em vez de sudo .
sistemactl --do utilizador recarregar daemonsistemactl --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.serviceVerifique 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.serviceAgora, recarregue o sistema configuração.
sudo systemctl daemon-reloadConclusã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.