¿Cuál es la forma correcta de desactivar una unidad de temporizador systemd?

18

He migrado con éxito algunos de mis trabajos cron a systemd. Seguí algunas guías y tomé el enfoque estándar de crear 3 archivos:

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

Como probablemente pueda adivinar, en un momento determinado se activa myjob.timer, que ejecuta myjob.service que a su vez ejecuta myjob.sh.

Tengo la misma configuración para todos mis temporizadores y ahora que veo que todo funciona bien, quiero deshabilitar myjob.timer, que es solo un probador.

Acabo de hacer:

systemctl --user disable myjob.timer

o también tengo que hacer:

systemctl --user disable myjob.service

¿Qué es lo correcto hacer? Soy bastante nuevo en systemd, así que me gustaría aprender a hacer las cosas de la manera adecuada. Supongo que es correcto deshabilitar ambas unidades para mantener el sistema libre de exceso de equipaje en funcionamiento.

bitofagoob
fuente

Respuestas:

18

si myjob.serviceno contiene ningún [Install]bloque, entonces es suficiente simplemente deshabilitar el temporizador. El temporizador era lo único que iniciaba el .servicearchivo, por lo que con el .timerdeshabilitado, nada iniciará el .servicearchivo.

También recuerda correr systemctl --user stop myjob.timer. Deshabilitar el temporizador evita que se inicie en el próximo arranque, pero no detiene el temporizador que se está ejecutando actualmente.

Mark Stosberg
fuente
Tengo un bloque [Instalar] en cada una de mis unidades de temporizador. Tiene una entrada que dice 'WantedBy = default.target'. Obtuve esto de las guías que seguí. ¿Puedo deshacerme del bloque [Instalar] por completo?
bitofagoob
1
OKAY. He leído sobre la sección [Instalar] y creo que WantedBy = default.target está ahí para garantizar que la unidad, cuando está habilitada, cobre vida durante cualquier sesión de arranque normal (ya sea multiusuario o gráfica). Seguiré el consejo de Mark Stosberg y deshabilitaré solo la unidad del temporizador. También marcaré su respuesta como la solución. Saludos Mark!
bitofagoob
2
Desea la sección [Instalar] en sus unidades de temporizador para que se inicien en el arranque. Por lo general WantedBy=timers.target. Solo necesita una [Install]sección para un servicio si desea que el servicio se inicie en el momento del arranque, lo que parece que no desea en este caso.
Mark Stosberg
1
Gracias. Eliminé la sección [Instalar] de la unidad de servicio y cambié la sección [Instalar] en mi temporizador a WantedBy = timers.target.
bitofagoob