Como posso prever a ordem de desligamento do systemd?

9

Existe uma maneira de systemdme dizer a ordem aproximada em que os serviços serão encerrados quando eu desligar todo o sistema? Como as systemdcoisas serão encerradas em paralelo, eu aprecio que não há como saber a ordem exata, mas ainda assim seria muito útil saber quais restrições systemdimporão na sequência de desligamento, de preferência em algum tipo de visualização fácil de entender.

A motivação é que, para o desenvolvimento e depuração de arquivos de serviço, seria muito mais conveniente obter essa lista prevista com antecedência, em vez de ter que fazer um desligamento real e, em seguida, inicializar novamente e inspecionar os logs toda vez que eu quiser determinar que impacto uma alteração em um arquivo de unidade de serviço ou algum outro aspecto da configuração do systemd terá na ordem de desligamento.

Eu estava esperando que algo como

systemctl list-dependencies --before shutdown.service

faria o trabalho, mas emite apenas:

shutdown.service
Adam Spires
fonte

Respostas:

2

O seguinte pode ajudá-lo:

systemctl list-dependencies --before shutdown.target

Saudações,

Mohamed Salhi
fonte
3
Bem, obrigado por apontar meu erro estúpido que é shutdown.targetnão shutdown.service. No entanto, isso ainda não está fornecendo a lista ordenada solicitada, mas fornecendo uma lista muito curta ou mesmo vazia em alguns sistemas.
Adam Spiers
Systemd é opaco de propósito, infelizmente. Para o estilo sysvinit da velha escola, é possível adicionar log aos arquivos de inicialização e registrar os processos iniciados em um arquivo com um carimbo de data / hora - pelo menos é o que me vem à cabeça primeiro.
shevy
1
@AdamSpiers @Mohamed Salhi basicamente "antes" significa "começa antes". Isso significa que o comando que você deseja é systemctl list-dependencies --after shutdown.target... pelo menos, que encontrará tudo o que o primeiro comando não encontrar. Também é confuso porque shutdown.targetestá começando , mas todas as outras unidades estão parando e, nesse caso, não importa se você tem um pedido "antes" ou "depois"; a parada é feita antes do início nos dois casos.
precisa saber é o seguinte
1

A ordem de desligamento geralmente é o inverso da ordem de inicialização.

Dito isto, todos os daemons recebem um sinal de desligamento e levará uma quantidade variável de tempo para realmente desligar e sair.

Deixando para o systemd simples, não acho possível prever com utilidade quais serviços sairão em que sequência. Além disso, as dependências controlarão algumas seqüências.

Jonesome Restabelecer Monica
fonte
1
Certo - eu estava ciente disso, devido à paralelização. No entanto, não preciso da ordem exata - apenas quais ordens são aplicadas e quais coisas podem ser executadas em paralelo. Vou atualizar minha pergunta para esclarecer isso. Além disso, você pode se qualificar "normalmente"? Quando não seria o contrário?
Adam Spiers