Estou escrevendo um temporizador systemd. Qual valor devo usar para o WantedBy?

0

Em vários exemplos, tenho visto todas essas diferentes opções sugeridas:

  • WantedBy = timers.target
  • WantedBy = multi-user.target
  • WantedBy = basic.target
  • WantedBy = default.target
  • WantedBy = mytimer.target (nome personalizado definido pelo usuário)

No entanto, nos exemplos que encontrei, nenhuma outra explicação é oferecida.

As páginas seguintes também não oferecem explicações sobre WantedBy:

Eu quero entender um método simples * que eu possa usar quando necessário para escrever um timer do systemd em vez de um cron job.

* A configuração de um cron job é de 1 linha. Temporizadores Systemd envolvem a gravação de dois arquivos e a execução de um ou dois comandos systemctl. Mas esse fato por si só não é necessariamente o que torna os timers do sistema mais difíceis do que o cron na minha experiência - é a infinidade de opções e a (aparente) falta de documentação clara com exemplos simples que são totalmente explicados.

    
por MountainX 01.03.2018 / 01:59

1 resposta

3

Para o caso de uso simples, use WantedBy=timers.target . Consulte man systemd.special :

timers.target

A special target unit that sets up all timer units (see systemd.timer(5) for details) that shall be active after boot.

It is recommended that timer units installed by applications get pulled in via Wants= dependencies from this unit. This is best configured via WantedBy=timers.target in the timer unit's "[Install]" section.

Por padrão, os cronômetros obtêm uma dependência de Before=timers.target . E, se você verificar man bootup , verá que basic.target é ativado timers.target como dependência. Então eu acho que WantedBy=basic.target parece funcionar OK na maioria dos casos (mesmo para default.target , que geralmente é multi-user.target ou graphical.target , ambos vêm depois de basic.target ). Mas:

timers.target is pulled-in by basic.target asynchronously. This allows timers units to depend on services which become only available later in boot.

Assim, um cronômetro mais complicado que dependa de alguma outra unidade de serviço seria melhor dependendo de timers.target em vez de qualquer um dos outros.

    
por 01.03.2018 / 04:15