Systemd Timer

Systemd Timer
No sistema operacional Linux, o Systemd é um gerente de serviço e um gerente de sistema. Ele atua como um sistema init quando executado como um primeiro processo em inicialização. Ele mantém e acompanha os serviços de espaço de usuários. Para iniciar os serviços de usuários conectados, ele começa com instâncias separadas. Os temporizadores são arquivos unitários do Systemd, que tem uma extensão de “.cronômetro". Esses arquivos controlam o “.serviço ”arquivos ou eventos em um sistema.

Na maioria das vezes, os temporizadores são usados ​​como substituto para Cron. Ele nos fornece suporte interno para eventos de tempo do calendário. A vantagem dos temporizadores sobre os cronjobs é que eles fornecem os controles de granulação mais fina dos eventos. Eles são usados ​​quando uma tarefa requer programação em um sistema operacional Linux. Por exemplo, se queremos iniciar um processo quando nossas botas de máquina botas, usamos os temporizadores para esse fim. Anteriormente, Cron era a ferramenta para fazer esses tipos de empregos. Mas hoje em dia, os temporizadores estão sendo usados ​​para esses fins.

Os temporizadores são quase como Cron de uma maneira que ambos fornecem uma abordagem e mecanismo para agendar tarefas no Linux OS. Cron tem suas desvantagens e é por isso que os temporizadores estão substituindo. Por exemplo, se queremos agendar nosso backup às 5 da noite e de alguma forma, nosso sistema desliga entre 4:50 e 5:10, Cron pula o backup nesse caso que mata o objetivo de agendar.

Para trabalhar com os temporizadores, precisamos das seguintes coisas como pré -requisitos:

  • Privilégios de raiz
  • terminal

As funções do Systemd Timers precisam de dois arquivos de configuração que são:

Unidade de temporizador: A unidade do temporizador acompanha quando usar os arquivos de serviço. Eles usam uma extensão de “.cronômetro".

Unidade de serviço: Estes são arquivos de configuração de unidade. Eles gerenciam e definem os processos do sistema. Eles têm ".serviço ”extensão como discutido anteriormente.

Agora, discutimos como podemos agendar um backup de servidor automatizado. Outra vantagem do serviço Systemd é que ele não permite que suas tarefas tenham várias instâncias. Se de alguma forma, iniciamos uma tarefa novamente enquanto ela já foi iniciada, ele pula o caule de lançamento e o mantém até que a tarefa atual de execução tenha concluído seu trabalho. Depois de configurarmos nosso serviço SystemD e chegarmos ao agendar, criamos um arquivo com o mesmo nome que nosso serviço.

A única diferença é que ele tem uma extensão de “.temporizador ”e não de serviço. Por exemplo, temos um serviço chamado "xyz". Nesse caso, temos “xyz.Serviço ”como nosso nome de serviço e“ xyz.temporizador ”como nome do nosso cronômetro. Outra coisa a ter em mente é que esses dois arquivos devem estar no mesmo diretório.

Etapas para criar um temporizador Systemd

Crie um script de teste
Este é um script básico de bash como exemplo:

Linux@linux-virtualbox: ~ $ nano teste.sh

O script anterior imprime a data.

Crie um arquivo de serviço
Agora, criamos um arquivo ou unidade de serviço para executar o script bash.

Linux@linux-virtualbox: ~ $ nano/etc/systemd/system/novo.serviço

Este é um exemplo de script para criar o arquivo de serviço. Tem duas opções: uma é "unidade" e a outra é "serviço". Nesta etapa, primeiro dizemos ao sistema do nome da unidade e o que esta unidade está fazendo. Em seguida, definimos um serviço com o tipo de "simples". Por fim, definimos que o serviço começa em caso de falha.

Crie um arquivo de temporizador
Depois de criar o arquivo de serviço, agora criamos um arquivo de temporizador. Executamos o seguinte comando para criar um arquivo de temporizador:

Linux@linux-virtualbox: ~ $ nano/etc/systemd/system/teste.cronômetro

Tem três opções: “unidade”, “timer” e “instalar”. Novamente, depois de executar o comando, definimos o que nossa unidade está fazendo. Tem uma opção "timer". Com a ajuda disso, dizemos ao sistema quando nosso script está executando. A última opção, "Instalar", indica quando nosso serviço começa de acordo com os níveis de execução. Esta opção está ativada apenas quando um serviço é ativado com a ajuda do SystemCTL.

Agora, vamos discutir as opções em mais profundidade para entender melhor os temporizadores.

Unidade: Isso especifica o dispositivo que queremos ativar quando o timer acaba. O parâmetro passado é o nome de uma unidade cuja extensão não deve ser “.cronômetro". Se não conseguirmos fazer isso ou não queremos passar no nome da unidade, o valor padrão é o serviço que tem o mesmo nome que o nome do “.cronômetro ”nesse caso. Como já discutido, a melhor abordagem é que devemos manter o nome do serviço e o nome do timer o mesmo.

Cronômetro: A opção de timer carrega todas as informações sobre o timer que é definido. Na opção Timer, encontramos todas as configurações que precisamos para acionar o timer. As seções do temporizador têm muitas opções como:

ONACTIVESEC =, ONBOOTSEC =, ONSTARTUPSEC =, OnUnitActiveSec =, OnUnitInitIlativeSec =

Na seção do temporizador, também dizemos ao sistema quando executar o processo e quando encerrar esse processo de acordo com o fuso horário do servidor.

A seção do temporizador também possui uma opção muito útil e importante, que é:

ONCALENDER = SETS

Esta opção define com que frequência uma tarefa é executada. Por exemplo, se queremos agendar uma tarefa diariamente, usamos essa opção como "ONCALEndar = diariamente". Isso executa a tarefa diariamente.

Se você quiser ser mais específico, também pode passar por um tempo específico de acordo com seus requisitos. Outra coisa a ter em mente enquanto trabalha com os temporizadores é que os gatilhos diários estão sempre à meia -noite, o que é um horário de pico nos sistemas de computador. Portanto, para evitar os problemas durante isso, recomendamos que você use o “randomizedelaysec =”. Atrasa o cronograma aleatoriamente com a diferença de alguns segundos. Requer um valor que represente os segundos que o cronômetro pode ser atrasado.

O problema é que o diário é sempre acionado às 12h. Semanal é sempre acionado na segunda -feira meia -noite. E anualmente é sempre acionado no primeiro de janeiro. Todos esses são horários de pico e há uma interrupção de rede durante esses lugares.

Ativar e iniciar o timer
Esta é a etapa final da nossa tarefa. Nós executamos esta etapa sistematicamente. Para realizar esta atividade, devemos fazer um “daem-reload”. Para ver se um novo arquivo é criado ou um arquivo antigo é atualizado, todo o sistema é recarregado.

Solução de problemas
Às vezes, não podemos pegar todos os problemas de antemão. No timer do Systemd, podemos certificá -los verificando as unidades de timer "Systemd" antes de habilitá -las. Para fazer isso, usamos o comando "Systemd-Analyze-Verify". Este comando nos ajuda a descobrir um problema em potencial e corrigi -lo de acordo.
Também existem outros comandos que nos ajudam a solucionar problemas e diagnosticar nossos temporizadores. Por exemplo, há um comando que nos ajuda a verificar se nosso serviço é executado com sucesso ou não. O comando é o seguinte:

Linux@linux -virtualbox: ~ $ sudo jornalctl -s hoje -f -u teste.serviço

Este comando nos mostra quando o serviço foi iniciado pela última vez e o resultado do nosso comando bash, como mostrado no seguinte snippet:

Conclusão

Estudamos o cronômetro do sistema. Depois de obter uma revisão detalhada do que é um temporizador do sistema e de seu trabalho, implementamos um exemplo para explicar a ideia para você mais brevemente, na qual explicamos cada etapa em várias partes.