Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save CMCDragonkai/2e86b8395fe6005f8a11332e27f5b754 to your computer and use it in GitHub Desktop.
Save CMCDragonkai/2e86b8395fe6005f8a11332e27f5b754 to your computer and use it in GitHub Desktop.
Understanding systemd Boot Execution Graph #systemd

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*.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment