Em vários exemplos, vi 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 explicação adicional é oferecida.
As páginas a seguir também não oferecem nenhuma explicação sobre WantedBy:
- https://www.freedesktop.org/software/systemd/man/systemd.timer.html
- https://www.freedesktop.org/software/systemd/man/systemd.time.html
Quero entender um método simples* que posso usar quando necessário para escrever um cronômetro systemd em vez de um trabalho cron.
* A configuração de um trabalho cron é de 1 linha. Os cronômetros do 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 cronômetros systemd mais difíceis do que o cron em minha experiência - é a multiplicidade de opções e a (aparente) falta de documentação clara com exemplos simples que são totalmente explicados.
Para o caso de uso simples, use
WantedBy=timers.target
. Vejaman systemd.special
:Os temporizadores obtêm uma dependência de
Before=timers.target
por padrão. E, se você verificarman bootup
, verá que é umabasic.target
dependênciatimers.target
. Portanto, achoWantedBy=basic.target
que parece funcionar bem na maioria dos casos (o mesmo paradefault.target
, que geralmente émulti-user.target
ougraphical.target
, ambos vêm depois debasic.target
). Mas:Portanto, um cronômetro mais complicado que dependa de alguma outra unidade de serviço seria melhor depender
timers.target
de qualquer uma das outras.