Iniciar / parar um systemd.service em horários específicos

11

Eu quero iniciar e interromper um systemd.service em horários específicos. Presumivelmente, usarei uma unidade .timer para iniciar o trabalho, mas existe uma forma integrada de parar o trabalho após uma duração específica ou em um horário específico ou tenho que criar uma segunda unidade .timer que execute o stop ?

Obrigado

    
por Jamie Kitson 25.02.2016 / 12:29

3 respostas

4

Para interromper um serviço A com um temporizador, você pode criar um serviço B do tipo oneshot em que ele estará em conflito com e usar um temporizador para iniciar o serviço B.

If a unit has a Conflicts= setting on another unit, starting the former will stop the latter and vice versa. (source)

A. serviço:

[Unit]
Conflicts=B.service
...

B.serviço:

[Unit]
Description=B service description

[Service]
Type=oneshot
ExecStart=/bin/echo ''

B.timer:

[Timer]
AccuracySec=1
OnActiveSec=10

[Install]
WantedBy=timers.target

O seguinte interromperá o serviço A após 10 segundos.

systemctl start A.service
systemctl start B.timer
    
por 30.09.2017 / 02:08
3

Existe de fato uma outra maneira de interromper um serviço após determinado tempo de execução configurado no arquivo .service .

RuntimeMaxSec=...

Você pode não gostar do fato de o serviço ser considerado falho, mas isso é um resultado mais ou menos lógico de matar um serviço de longa execução.

Para obter uma resposta melhor, você pode explicar sua justificativa para usar um recurso tão incomum. Os serviços geralmente são executados para sempre ou até que sejam explicitamente interrompidos, não apenas por um período fixo de tempo.

    
por 25.10.2016 / 11:28
0

Você pode usar alguns cron jobs:

 # ┌───────────── min (0 - 59) 
 # │ ┌────────────── hour (0 - 23)
 # │ │ ┌─────────────── day of month (1 - 31)
 # │ │ │ ┌──────────────── month (1 - 12)
 # │ │ │ │ ┌───────────────── day of week (0 - 6)
 # │ │ │ │ │
 # │ │ │ │ │
   * * * * *  systemctl start $SERVICE.service
   * * * * *  systemctl stop $SERVICE.service

Mais informações sobre o cron: link , link

    
por 25.02.2016 / 20:35