Un .service escrito a mano suele acabar sin Restart=, corriendo como root y sin ninguna restricción. Aquí sale con las tres cosas resueltas, y con el .timer al lado si sustituye a una entrada de cron.
Se genera en tu navegador; nada se envía a ningún servidor
/etc/systemd/system/mi-servicio.service
Con un .timer, el .service se deja sin habilitar: lo
arranca el temporizador. Persistent=true recupera la ejecución perdida si la
máquina estaba apagada, que es la diferencia práctica frente a una entrada de cron.
Para revisar el endurecimiento: systemd-analyze security mi-servicio.service.
Si el servicio no arranca con ProtectSystem=strict, declara los directorios
donde necesita escribir con ReadWritePaths= en vez de quitar la opción.
Si necesitas soporte profesional para configurar, optimizar o migrar tus servidores Linux, cuéntanos qué tienes montado.
Solicitar soporte