Qual è il modo corretto di disabilitare un'unità timer systemd?


18

Ho migrato con successo alcuni dei miei lavori cron su systemd. Ho seguito alcune guide e ho adottato l'approccio standard per la creazione di 3 file:

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

Come si può immaginare, a un certo momento viene attivato myjob.timer, che esegue myjob.service che a sua volta esegue myjob.sh.

Ho la stessa configurazione per tutti i miei timer e ora che vedo che tutto funziona bene voglio disabilitare myjob.timer, che è solo un tester.

Faccio solo:

systemctl --user disable myjob.timer

o devo anche fare:

systemctl --user disable myjob.service

Qual è la cosa giusta da fare? Sono abbastanza nuovo su systemd, quindi mi piacerebbe imparare a fare le cose nel modo giusto. Immagino che sia corretto disabilitare entrambe le unità per mantenere il sistema libero dal bagaglio in eccesso in funzione.

Risposte:


18

se myjob.servicenon contiene [Install]blocchi, è sufficiente disabilitare il timer. Il timer era l'unica cosa che avviava il .servicefile, quindi con i .timerdisabilitati, nulla avvierà il .servicefile.

Ricorda anche di correre systemctl --user stop myjob.timer. La disabilitazione del timer ne impedisce l'avvio all'avvio successivo, ma non arresta il timer attualmente in esecuzione.


Ho un blocco [Installa] in ciascuna delle mie unità timer. Ha una voce che dice "WantedBy = default.target". L'ho preso dalle guide che ho seguito. Posso semplicemente eliminare del tutto il blocco [Installa]?
bitofagoob

1
OK. Ho letto della sezione [Installa] e penso che WantedBy = default.target sia proprio lì per garantire che l'unità, quando abilitata, prende vita durante una normale sessione di avvio (multiutente o grafica). Prenderò il consiglio di Mark Stosberg e disabiliterò solo il timer. Segnerò anche la sua risposta come soluzione. Saluti Mark!
bitofagoob

2
Vuoi la sezione [Installa] sulle tue unità timer in modo che vengano avviate all'avvio. Di solito WantedBy=timers.target. È necessaria una [Install]sezione per un servizio solo se si desidera che il servizio venga avviato all'avvio, il che sembra che in questo caso non si desideri.
Mark Stosberg,

1
Grazie. Ho rimosso la sezione [Installa] dall'unità di servizio e ho cambiato la sezione [Installa] nel mio timer in WantedBy = timers.target.
bitofagoob,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.