2.4 KiB
title |
---|
System control commands |
systemctl
Commands generally accept patterns to select subsets of the set of all units.
-
list-units
-
list-sockets
-
list-timers
-
is-active (predicate over units)
-
is-failed
-
status
-
show
-
cat (introspection on source files for units)
-
help (this is interesting!)
-
list-dependencies
-
start
-
stop
-
reload ("please reload your configuration" - even though we are mostly reactive, most services won't be, and sometimes config in files exists etc)
-
restart (stop (if running) and then start (unconditionally))
-
try-restart (if running, stop and then start)
-
reload-or-restart, try-reload-or-restart
-
isolate (effectively set a new "supergoal", removing all others. nb
AllowIsolate
flag) -
kill
-
clean (remove various cache/state/config/log data)
-
freeze, thaw
-
set-property (for us, change a config .pr file; no --runtime equivalent, though)
-
reset-failed (resets the state variables of the supervisor)
-
(several others)
Enable vs start.
Enable: --system
, --user
, --runtime
, --global
: various scopes for enabling a unit.
Container management.
Job management. (It has a job queue!)
Environment management for spawned services.
daemon-reexec
, serializes state for an upgrade
System lifecycle: startup -> running -> (shutdown | (maintenance -?-> running))
At shutdown or sleep, "inhibitor locks" exist. The action can respect or ignore these. Interactive shutdown/sleep requests default to respecting; non-interactive, to ignoring.
isolate
targets:
- default
- rescue
- emergency
- halt
- poweroff
- reboot
- suspend
- hibernate
- hybrid-sleep
- suspend-then-hibernate
switch-root
Service unit configuration
https://www.freedesktop.org/software/systemd/man/systemd.service.html
Service templates: can take a single argument to become instantiated.
If a service unit config file doesn't exist, falls back to looking for an init script and synthesizes a unit on the fly.
Default dependencies:
- requires sysinit.target
- starts after sysinit.target
- starts after basic.target
- conflicts with shutdown.target
- shuts down before shutdown.target (?)
"slice units"? Oh ok, hierarchical supervision... and configuration of whole branches of the tree.
Service lifecycle:
- states: active, activating, deactivating, dead, inactive, starting, ... more?
Options:
- Type (it's complicated)