Come posso prevedere l'ordine di spegnimento di systemd?


9

C'è un modo per systemddirmi l' ordine approssimativo in cui arresterà i servizi quando spegnerò in modo pulito l'intero sistema? Dal momento systemdche chiuderà le cose in parallelo, apprezzo che non c'è modo di conoscere l'ordine esatto, ma sarebbe comunque molto utile sapere quali vincoli systemdimporranno sulla sequenza di spegnimento, preferibilmente in un tipo di visualizzazione che è facile da capire.

La motivazione è che per lo sviluppo e il debug dei file di servizio, sarebbe molto più conveniente ottenere in anticipo questo elenco previsto , piuttosto che dover fare un vero arresto e quindi riavviare e ispezionare i registri ogni volta che voglio determinare quale impatto avrà una modifica su un file di unità di servizio o su qualche altro aspetto della configurazione di systemd sull'ordine di spegnimento.

Speravo che qualcosa del genere

systemctl list-dependencies --before shutdown.service

farebbe il lavoro, ma emette solo:

shutdown.service

Risposte:


2

Quanto segue potrebbe aiutarti:

systemctl list-dependencies --before shutdown.target

Saluti,


3
Bene, grazie per aver sottolineato il mio stupido errore che non lo shutdown.targetè shutdown.service. Tuttavia, ciò non mi dà ancora l'elenco ordinato richiesto, ma invece un elenco molto breve o addirittura vuoto su alcuni sistemi.
Adam Spires,

Sfortunatamente Systemd è di proposito opaco. Per lo stile sysvinit oldschool, si potrebbe probabilmente aggiungere la registrazione ai file di avvio e registrare i processi avviati in un file con un timestamp - almeno questo è ciò che mi verrebbe in mente per primo.
Shevy,

1
@AdamSpiers @Mohamed Salhi fondamentalmente, "prima" significa "inizia prima". Questo significa che il comando che vuoi è systemctl list-dependencies --after shutdown.target... almeno quello troverà tutto ciò che il primo comando non ha. È anche fonte di confusione perché si shutdown.targetsta avviando , ma tutte le altre unità si stanno arrestando , e in questo caso non importa se si dispone di un ordine "prima" o "dopo"; l'arresto viene eseguito prima dell'inizio in entrambi i casi.
sourcejedi,

1

L'ordine di arresto è generalmente il contrario dell'ordine di avvio.

Detto questo, tutti i demoni ricevono un segnale di spegnimento e impiegheranno diverse quantità di tempo per spegnersi ed uscire.

Lasciando al semplice sistema, non credo sia possibile prevedere utilmente quali servizi usciranno in quale sequenza. Inoltre, le dipendenze controlleranno alcune sequenze.


1
Bene, ne ero consapevole, a causa della parallelizzazione. Tuttavia, non ho bisogno dell'esatto ordine - solo quali ordini vengono applicati e quali cose possono potenzialmente essere eseguite in parallelo. Aggiornerò la mia domanda per chiarire questo. Inoltre, puoi qualificarti "di solito"? Quando non sarebbe il contrario?
Adam Spires,
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.