# Understanding systemd Boot Execution Graph 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 ● │ └─kmsconvt@tty1.service ● ├─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*`.