GNU/Linux >> Linux Esercitazione >  >> Linux

Dipendenze di Systemd e ordine di avvio

Soluzione 1:

Usa systemctl edit smb.service per aggiornare le dipendenze.

After=dirsrv.target - Garantirà che smb.service venga avviato dopo dirsrv.target.

Per robustezza, (che varrà la pena se stai armeggiando con queste cose) potresti anche voler includere alcuni dei seguenti:

Requires=dirsrv.target - Attiva dirsrv.target quando smb.service è attivato. Farà fallire smb.service se dirsrv.target fallisce.

Wants=dirsrv.target - Attiva dirsrv.target quando smb.service è attivato. Non causerà il fallimento di smb.service se dirsrv.target fallisce.

BindsTo=dirsrv.target - Se dirsrv.target è disattivato, disattivare smb.service.

Fonte:http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui fornisce una GUI per systemd. Offre una buona visuale dello stato di systemd ma dovrai comunque utilizzare un editor di testo per modificare i file unit.

Soluzione 2:

Fai due cose:

  1. Modifica il /lib/systemd/system/smb.service unit file, per specificare la dipendenza. Il [unit] contiene un After= riga che specifica quali servizi/target devono essere raggiunti prima di questo.

    After=syslog.target network.target nmb.service winbind.service
    

    Cambialo in:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Segnala questa dipendenza a Fedora come un bug, in modo che possa essere incorporata nelle versioni future.

Soluzione 3:

potresti dover modificare o includere una riga con Requires direttiva nel [Unit] sezione del /usr/lib/systemd/system/smb.service file.

Requires=dirsrv.target

e

After=dirsrv.target

Soluzione 4:

Ci sono due alternative alla modifica del file di servizio in /usr/lib/systemd/system (vedi Esempio 2. Override delle impostazioni del fornitore):

  1. Copia il file in /etc/systemd/system ed eseguire le modifiche sulla copia. Questo file sovrascriverà completamente il file in /usr/lib .

  2. Crea il file /etc/systemd/system/smb.service.d/local.conf . Il contenuto del file dovrebbe essere simile all'esempio seguente. Ciò sovrascrive in modo selettivo le opzioni "Richiede" e "Dopo" nel file di servizio fornito dal fornitore.

Ognuno di questi (inclusa la modifica del file in /usr/lib ) offre vantaggi e svantaggi. La scelta migliore può dipendere dal servizio e dalla natura delle modifiche.

Anche se può funzionare, non è sufficiente aggiungere solo l'opzione "Dopo" (vedi Opzioni della sezione [Unità]). "Dopo" controlla l'ordine, ma non le dipendenze. Se dirsrv.target non viene avviato in altro modo, specificando un ordine non verrà avviato. L'uso dell'opzione "Richiede" o "Richiede" forzerà dirsrv.target da avviare.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB:non so se questo approccio fosse disponibile quando questa domanda è stata originariamente posta.


Linux
  1. Avvia, arresta e riavvia i servizi sul server Linux RHEL 7 systemd

  2. Aggiunta di un nuovo servizio a Linux systemd

  3. Avvio non grafico con Systemd?

  4. Linux:disabilitazione dei servizi Vbox per ridurre il tempo di avvio?

  5. Systemd:utilizzo sia di After che di Requires

Comandi Systemctl per gestire il servizio Systemd

Installa ed esegui Jenkins con Systemd e Docker

Come ho imparato a smettere di preoccuparmi e ad amare systemd

Gestire cgroup con systemd

Come contare il numero di file e sottodirectory all'interno di una directory

Come eseguire uno script con systemd subito prima dell'arresto?