Qual é a maneira correta de desativar uma unidade de timer do systemd?

18

Migrei com êxito alguns dos meus trabalhos cron para o systemd. Segui alguns guias e segui a abordagem padrão de criar 3 arquivos:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

Como você provavelmente pode adivinhar, em um determinado momento, myjob.timer é acionado, que executa myjob.service, que por sua vez executa myjob.sh.

Eu tenho a mesma configuração para todos os meus timers e agora que vejo que tudo está funcionando bem, quero desativar o myjob.timer, que é apenas um testador.

Eu apenas faço:

systemctl --user disable myjob.timer

ou eu também tenho que fazer:

systemctl --user disable myjob.service

Qual é a coisa correta a fazer? Eu sou muito novo no systemd, então eu gostaria de aprender como fazer as coisas da maneira correta. Suponho que seja correto desativar as duas unidades para manter o sistema livre de excesso de bagagem em funcionamento.

bitofagoob
fonte

Respostas:

18

se myjob.servicenão contém nenhum [Install]bloco, basta desabilitar o timer. O cronômetro foi a única coisa que iniciou o .servicearquivo; portanto, com os .timerdesativados, nada iniciará o .servicearquivo.

Lembre-se também de correr systemctl --user stop myjob.timer. Desativar o cronômetro impede que ele seja iniciado na próxima inicialização, mas não para o cronômetro em execução no momento.

Mark Stosberg
fonte
Eu tenho um bloco [Install] em cada uma das minhas unidades de timer. Ele tem uma entrada, dizendo 'WantedBy = default.target'. Eu recebi isso dos guias que segui. Posso me livrar completamente do bloco [Install]?
22418 bitofagoob
1
ESTÁ BEM. Eu li sobre a seção [Install] e acho que WantedBy = default.target existe apenas para garantir que a unidade, quando ativada, seja trazida à vida durante qualquer sessão de inicialização normal (multiusuário ou gráfica). Vou seguir o conselho de Mark Stosberg e desabilitar apenas a unidade de timer. Vou também marcar sua resposta como a solução. Elogios Mark!
22417 bitofagoob
2
Você deseja a seção [Install] nas suas unidades de timer para que elas sejam iniciadas na inicialização. Normalmente WantedBy=timers.target. Você só precisa de uma [Install]seção para um serviço se desejar que o serviço seja iniciado no momento da inicialização, o que parece que você não deseja neste caso.
Mark Stosberg
1
Obrigado. Eu removi a seção [Install] da unidade de serviço e alterei a seção [Install] no meu timer para WantedBy = timers.target.
Bitofagoob