systemd - Unidades temporizadas que imitam o comportamento anacron

10

Eu preciso escrever uma unidade temporizada para uma máquina que é ativada com freqüência (por exemplo, a configuração clássica da área de trabalho). Esta unidade temporizadora precisa ser ativada regularmente, mas não com muita frequência (por exemplo, semanalmente, mensalmente).

Eu encontrei algumas abordagens, mas todas elas não se encaixam:

  • De acordo com as páginas do manual, somente as diretivas OnBootSec e OnStartupSec serão ativadas se o ponto de tempo configurado estiver no passado. Eu encontrei também alguns exemplos usando uma combinação destes com OnActiveSec para definir um evento regular. O problema é: Toda vez que a máquina é inicializada, o timer ativará a unidade configurada. Se você tem um temporizador que deve executar uma vez por semana / mês que é muito frequentemente. Por exemplo: não quero que meus logs sejam girados três vezes ao dia ...

  • Soluções com a diretiva OnCalendar . Se a máquina estiver desligada no ponto configurado no tempo (principalmente meia-noite, porque se você omitir a hora na especificação de tempo, o padrão é 00:00:00), o temporizador não será ativado após a próxima inicialização. Isso é pelo menos como eu entendi. Está certo?

Então, vem a pergunta:
O timer com eventos de calendário é ativado logo após a próxima inicialização, se o horário configurado estiver no passado?
Se não: existe uma solução alternativa para obter tal comportamento?

    
por mmh 30.07.2013 / 02:44

2 respostas

11

Esse recurso já foi implementado em systemd (ver > = 212) usando o Diretiva Persistent= , para que você só precise inserir Persistent=true no arquivo de unidade ao usar a diretiva OnCalendar= para estabelecer a data / hora para executar o trabalho.

Persistent=

Takes a boolean argument. If true, the time when the service unit was last triggered is stored on disk. When the timer is activated, the service unit is triggered immediately if it would have been triggered at least once during the time when the timer was inactive. This is useful to catch up on missed runs of the service when the machine was off. Note that this setting only has an effect on timers configured with OnCalendar=.

    
por 09.12.2014 / 19:02
0

De acordo com este e-mail na lista de discussão do systemd-devel, o desejado comportamento está no roteiro e será adicionado no futuro.

    
por 31.07.2013 / 04:42

Tags