# systemd

Date: 2021-05-20 22:37:22 +08:00Date modified: 2022-04-19 20:21:56 +08:00

systemd is a big tool for a big system. Let's explore some of them from a perspective of a wannabe power user.

Among other things, it has the following list of features.

- systemd timers which can replace cron for task scheduling.

- systemd services along with the usual antics of a service manager such as managing dependencies and commands to run when killed.

- systemd transient units for quickly creating and scheduling one-off services.

- systemd unit templates is handy for managing units that have common structure, enabling to start them quickly and dynamically.

- systemd environment directives enable setting environment variables from a systemd-ful session.

- systemd-networkd is the network configuration manager in case you want to do Network configuration in Linux.

- systemd-boot is a bootloader mainly for UEFI-based systems.

- systemd-journald is the system logging service providing a structured way to manage your logs from different units.

- systemd unit hardening can help your services secure.

# systemd at user-level

systemd has the ability to run at user-level empowering the user to manage their own system with their own settings. It immensely helps separating user-specific settings from the system-wide settings.

systemd looks for the units from certain paths. You can look for them from the `systemd.unit.5` manual page.

To run systemd as a user instance, simply add a `--user` flag beforehand for `systemctl` and other systemd binaries, if applicable.

    # See how different the output when run at user- and system-level.
    systemctl --user show-units
    systemctl show-units

    systemctl --user show-environment
    systemctl show-environment

    systemctl --user start $SERVICE

# Extra information

- `systemd.directives.7` is an index of configuration directives including unit keys, environment variables, and command line options for systemd-related things. Also contains the related manual pages for a deeper references.

- On a similar note, `systemd.index.7` is an alphabetical index of the important keywords found in systemd.

- `systemd.mount` units require the filename to be the mountpoint. Though, it has to be converted to what systemd accepts (e.g., `systemd-escape --path $PATH`).

## Backlinks

- Command line: systemctl
- How all Linux distros are technically operating systems of their own
- systemd environment directives
- systemd timers
- systemd transient units
- Why wishing a unified Linux distro is a pointless task