Vou começar esta resposta com:
Eu recomendo que você force os desenvolvedores a usar coisas como enable
, disable
, after
e wants
nos serviços systemd
corretamente, em vez de fazer um dump e restaurar o que está sendo executado.
Agora que tirei isso do meu sistema ...
systemctl snapshot
pode ajudar você a fazer o que está procurando.
Ao executar systemctl snapshot ${SNAPSHOT_NAME}
systemd
cria uma unidade chamada ${SNAPSHOT_NAME}.snapshot
. Esta unidade parece existir apenas na memória. No entanto, você ainda pode consultá-lo usando systemctl
.
Usando systemctl show ${SNAPSHOT_NAME}.snapshot
listará todas as informações systemd
coletadas para a captura instantânea, uma observação especial para você seria as seções Wants=
/ After=
(que parecem ser as mesmas), que lista todas as unidades que estavam ativos no momento do instantâneo. Se você fosse analisar essa lista e lançá-la em um destino personalizado, você poderia alcançar o que estava procurando usando systemctl isolate ${CUSTOM_TARGET}
.
Start the unit specified on the command line and its dependencies and stop all others. If a unit name with no extension is given, an extension of ".target" will be assumed.
This is similar to changing the runlevel in a traditional init system. The isolate command will immediately stop processes that are not enabled in the new unit, possibly including the graphical environment or terminal you are currently using.
Note that this is allowed only on units where AllowIsolate= is enabled. See systemd.unit(5) for details.
Você pode até escrever um serviço que atualize as seções ${CUSTOM_TARGET}
Wants
/ After
no encerramento.