GNU/Linux >> Linux Esercitazione >  >> Linux

Systemd:utilizzo sia di After che di Requires

Mentre la risposta di Umut è corretta, c'è un'interazione tra Requires= e After= che è raramente enunciato. Da systemd.unit#Requires=(la sottolineatura è mia):

Se questa unità viene attivata, verranno attivate anche le unità elencate. Se una delle altre unità non si attiva, e una dipendenza dell'ordine After= sull'unità difettosa è impostato , questa unità non verrà avviata.

Essenzialmente, questo significa che senza After= , entrambi i servizi verranno avviati se foo.service viene avviato (a causa di Requires= ), ma systemd non fermerà foo.service se bar.service non si avvia correttamente.

Tuttavia, con l'aggiunta di After= , attenderà bar.service per avviarsi correttamente (con alcune eccezioni; vedere la nota nel Requires= docs) prima che inizi foo.service e non lo avvierà se bar.service non si avvia.

In qualche modo correlata è la differenza tra Requires= e BindsTo= (vedi i documenti intorno al link qui sopra).


Va perfettamente bene usare entrambi After= e Requires= . Hanno scopi diversi. Requires= imposta una dipendenza iniziale. systemd si assicura che se qualcuno sta tentando di avviare foo.service, dovrebbe avviare anche bar.service. Se bar.service dovesse fallire a un certo punto, anche foo.service verrà rimosso.

After= sta mettendo un ordine di inizio tra i servizi. Se è previsto l'avvio di entrambi i servizi, allora After= si assicura che l'ordine di inizio sia impostato.

Puoi guardare il file di servizio di systemd come esempio.

/lib/systemd/system/basic.target
[Unit]
...
Requires=sysinit.target
After=sysinit.target
...

Linux
  1. Perché Systemd interrompe il servizio immediatamente dopo l'avvio?

  2. Debian – Systemd:il servizio manca sia dell'impostazione Execstart=che di Execstop=. Rifiutare?

  3. Il servizio Systemd non avvia Nodejs?

  4. Avvia, arresta e riavvia Crond Daemon in Linux

  5. Disattivare un servizio systemd dopo il periodo di inattività

Gestisci l'avvio usando systemd

Inizia a utilizzare systemd come strumento di risoluzione dei problemi

Come ho imparato a smettere di preoccuparmi e ad amare systemd

Utilizzo delle funzionalità di systemd per proteggere i servizi

Come configurare l'esecuzione automatica di uno script Python utilizzando Systemd

Dipendenze di Systemd e ordine di avvio