How can I predict systemd's shutdown order?
Is there a way to get systemd
to tell me the rough order in which it will shutdown services when I cleanly shut the whole system down? Since systemd
will shut things down in parallel, I appreciate there is no way to know the exact order, but it would still be very helpful to know what constraints systemd
will impose on the shutdown sequence, preferably in some kind of visualization which is easy to understand.
The motivation is that for development and debugging of service files, it would be a lot more convenient to get this predicted list in advance, rather than having to do a real shutdown and then boot up again and inspect the logs every time I want to determine what impact a change to a service unit file or some other aspect of systemd's configuration will have on the shutdown order.
I was hoping that something like
systemctl list-dependencies --before shutdown.service
would do the job, but it only emits:
shutdown.service
Maybe stating the obvious reduces the learning effect, but all I did to get the full list of reverse dependencies for shutdown-target as asked in the original post, was:
systemctl list-dependencies --after shutdown.target
OT: I ran in a problem where the shutdown of a kubernetes system hangs (the machine becomes irresponsive and will not shut down) because the nfs mounts are killed before the actual services have completed shutdown. This question helped me progress.
The following might help you :
systemctl list-dependencies --before shutdown.target
Regards,
Shutdown order is usually the reverse of startup order.
That said, daemons are all sent a shutdown signal, and will take varying amounts of time to actually shut down and exit.
Leaving to plain systemd, I don't think it is feasible to usefully predict what services will exit in what sequence. Further, dependencies will control some sequences.