https://serverfault.com/questions/617398/is-there-a-way-to-see-the-execution-tree-of-systemd
On NixOS:
> systemctl get-default
multi-user.target
> systemd-analyze critical-chain
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
graphical.target @29.379s
└─multi-user.target @29.379s
└─network-online.target @20.264s
└─NetworkManager-wait-online.service @14.342s +5.921s
└─NetworkManager.service @11.942s +2.398s
└─network-pre.target @11.939s
└─resolvconf.service @11.069s +869ms
└─basic.target @11.044s
└─sockets.target @11.043s
└─docker.socket @11.004s +38ms
└─sysinit.target @10.861s
└─systemd-timesyncd.service @10.827s +32ms
└─systemd-tmpfiles-setup.service @10.709s +115ms
└─systemd-journal-flush.service @6.058s +4.649s
└─systemd-remount-fs.service @4.884s +1.129s
└─systemd-journald.socket @4.830s
└─system.slice @4.821s
└─-.slice @4.821s
> systemctl list-dependencies
default.target
● ├─display-manager.service
● └─multi-user.target
● ├─acpid.service
● ├─alsa-store.service
● ├─avahi-daemon.service
● ├─cpufreq.service
● ├─cups-browsed.service
● ├─docker.service
● ├─gpm.service
● ├─haveged.service
● ├─libvirt-guests.service
● ├─matrix-nix-cache-verify.service
● ├─network-setup.service
● ├─reload-systemd-vconsole-setup.service
● ├─resolvconf.service
● ├─rpcbind.service
● ├─systemd-ask-password-wall.path
● ├─systemd-logind.service
● ├─systemd-modules-load.service
● ├─systemd-sysctl.service
● ├─systemd-tmpfiles-setup-dev.service
● ├─systemd-user-sessions.service
● ├─basic.target
● │ ├─-.mount
● │ ├─audit.service
● │ ├─tmp.mount
● │ ├─paths.target
● │ ├─slices.target
● │ │ ├─-.slice
● │ │ └─system.slice
● │ ├─sockets.target
● │ │ ├─avahi-daemon.socket
● │ │ ├─cups.socket
● │ │ ├─docker.socket
● │ │ ├─libvirtd.socket
● │ │ ├─nix-daemon.socket
● │ │ ├─sshd.socket
● │ │ ├─systemd-coredump.socket
● │ │ ├─systemd-journald-audit.socket
● │ │ ├─systemd-journald-dev-log.socket
● │ │ ├─systemd-journald.socket
● │ │ ├─systemd-udevd-control.socket
● │ │ ├─systemd-udevd-kernel.socket
● │ │ ├─virtlockd.socket
● │ │ └─virtlogd.socket
● │ ├─sysinit.target
● │ │ ├─dev-hugepages.mount
● │ │ ├─dev-mqueue.mount
● │ │ ├─firewall.service
● │ │ ├─kmod-static-nodes.service
● │ │ ├─sys-fs-fuse-connections.mount
● │ │ ├─sys-kernel-config.mount
● │ │ ├─sys-kernel-debug.mount
● │ │ ├─systemd-ask-password-console.path
● │ │ ├─systemd-journal-catalog-update.service
● │ │ ├─systemd-journal-flush.service
● │ │ ├─systemd-journald.service
● │ │ ├─systemd-modules-load.service
● │ │ ├─systemd-random-seed.service
● │ │ ├─systemd-sysctl.service
● │ │ ├─systemd-timesyncd.service
● │ │ ├─systemd-tmpfiles-setup.service
● │ │ ├─systemd-udev-trigger.service
● │ │ ├─systemd-udevd.service
● │ │ ├─systemd-update-done.service
● │ │ ├─systemd-update-utmp.service
● │ │ ├─cryptsetup.target
● │ │ ├─local-fs.target
● │ │ │ ├─-.mount
● │ │ │ ├─boot.mount
● │ │ │ ├─systemd-fsck-root.service
● │ │ │ ├─systemd-remount-fs.service
● │ │ │ └─tmp.mount
● │ │ └─swap.target
● │ │ ├─dev-disk-by\x2did-ata\x2dPLEXTOR_PX\x2dG128M6e_P02445180196\x2dpart2.…
● │ │ └─dev-disk-by\x2did-ata\x2dPLEXTOR_PX\x2dG128M6e_P02445180209\x2dpart2.…
● │ └─timers.target
● │ ├─systemd-tmpfiles-clean.timer
● │ ├─update-locatedb.timer
● │ └─zpool-trim.timer
● ├─getty.target
● │ └─[email protected]
● ├─local-fs.target
● │ ├─-.mount
● │ ├─boot.mount
● │ ├─systemd-fsck-root.service
● │ ├─systemd-remount-fs.service
● │ └─tmp.mount
● ├─machines.target
● ├─network-online.target
● │ └─NetworkManager-wait-online.service
● ├─nfs-client.target
● │ ├─auth-rpcgss-module.service
● │ ├─rpc-statd-notify.service
● │ └─remote-fs-pre.target
● ├─nss-lookup.target
● │ └─nscd.service
● ├─nss-user-lookup.target
● │ └─nscd.service
● ├─remote-fs.target
● │ └─nfs-client.target
● │ ├─auth-rpcgss-module.service
● │ ├─rpc-statd-notify.service
● │ └─remote-fs-pre.target
● ├─swap.target
● │ ├─dev-disk-by\x2did-ata\x2dPLEXTOR_PX\x2dG128M6e_P02445180196\x2dpart2.swap
● │ └─dev-disk-by\x2did-ata\x2dPLEXTOR_PX\x2dG128M6e_P02445180209\x2dpart2.swap
● └─zfs.target
● ├─zfs-mount.service
● ├─zfs-share.service
● ├─zfs-zed.service
● └─zfs-import.target
Use systemctl list-jobs
to see currently running jobs.
Use systemctl start --no-block X.service
to not wait for service start.
You can also use globbing like systemctl restart docker-lattice*
.