mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-01-31 04:58:21 +00:00
88 lines
3.9 KiB
Org Mode
88 lines
3.9 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 20830b22-9e55-42a6-9cef-62a1697ea63d
|
|
:END:
|
|
#+title: systemd
|
|
#+date: "2021-05-20 22:37:22 +08:00"
|
|
#+date_modified: "2022-09-29 12:21:34 +08:00"
|
|
#+language: en
|
|
#+property: header-args :eval no
|
|
|
|
|
|
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.
|
|
|
|
- [[id:f1b21fc8-86a5-47cd-b3d8-da6ac7a34427][systemd timers]] which can replace cron for task scheduling.
|
|
- [[id:cd5f0d04-d9bb-44e8-a0f2-630ea58c1e94][systemd services]] along with the usual antics of a service manager such as managing dependencies and commands to run when killed.
|
|
- [[id:a602f900-cdcf-4090-9278-d5926d80eedc][systemd transient units]] for quickly creating and scheduling one-off services.
|
|
- [[id:14b49597-011c-4da1-b955-bed6059af4a3][systemd unit templates]] is handy for managing units that have common structure, enabling to start them quickly and dynamically.
|
|
- [[id:3c67e623-c269-4c9b-9bdf-4ad677d46a35][systemd environment directives]] enable setting environment variables from a systemd-ful session.
|
|
- [[id:e4dba4ef-71dd-4d30-9a2c-4ad97223510b][systemd-networkd]] is the network configuration manager in case you want to do [[id:a208dd50-2ebc-404d-b407-3ec2f556535e][Network configuration in Linux]].
|
|
- [[id:8505f1f0-f15b-4b04-91fc-12be01913ce6][systemd-boot]] is a bootloader mainly for UEFI-based systems.
|
|
- [[id:d83c099a-fc11-4ccc-b265-4de97c85dcbe][systemd-journald]] is the system logging service providing a structured way to manage your logs from different units.
|
|
- [[id:7fce893f-418f-42aa-b2b1-59d9f0993406][systemd unit hardening]] can help your services secure.
|
|
|
|
|
|
|
|
|
|
* systemd at user-level
|
|
:PROPERTIES:
|
|
:ID: c7edff80-6dea-47fc-8ecd-e43b5ab8fb1e
|
|
:END:
|
|
|
|
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.
|
|
|
|
#+begin_src shell :results none
|
|
# 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
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
* Navigating systemd documentation
|
|
:PROPERTIES:
|
|
:ID: 352629df-916a-442a-b81c-af71ef34a475
|
|
:END:
|
|
|
|
Because of the wide scope of the tool, it is best to know where you can find certain information.
|
|
Here's an exhaustive list of the locations.
|
|
|
|
- Most sensible distributions should include the manual pages from the software.
|
|
systemd has a lot of them from knowing [[id:f1b21fc8-86a5-47cd-b3d8-da6ac7a34427][systemd timers]] at =systemd.timers.5=, the unit formats and their locations at =systemd.unit.5=.
|
|
|
|
- =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.
|
|
[fn:: How did I pass a year without knowing this?]
|
|
|
|
- On a similar note, =systemd.index.7= is an alphabetical index of the important keywords found in systemd.
|
|
|
|
|
|
|
|
|
|
|
|
* Extra information
|
|
|
|
- =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=).
|
|
|
|
- systemd has a few usual units such as =default.target= which is a target for the current environment of the user.
|
|
It can be get with =systemctl get-default= command.
|
|
More can be seen with =systemd.special.7= from the manual.
|
|
|
|
- Not all units are equal as systemd treats some units specially.
|
|
You can see what these specific units are and what it does with =systemd.special.7= from the manual.
|