# Systemd ## TL;DR ```sh # List all available units. systemctl list-unit-files # List failed units only. systemctl list-units --state='failed' # Start services. sudo systemctl start 'adb.service' systemctl --user start 'keybase.service' # Restart services. sudo systemctl restart 'bluetooth.service' systemctl --user restart 'davmail.service' # Stop services. sudo systemctl stop 'cups.service' systemctl --user stop 'davmail.service' # Enable services on boot. sudo systemctl enable 'sshd.service' sudo systemctl enable --now 'docker.service' systemctl --user enable --now 'davmail.service' # Disable services from boot. sudo systemctl disable 'clamav-freshclam.service' sudo systemctl disable --now 'gdm.service' systemctl --user disable --now 'davmail.service' # Check a service is currently active. systemctl is-active 'wpa_supplicant.service' # Suspend the system. # Saves the state to RAM only. systemctl suspend # Hibernate the system. # Saves the state to disk only. systemctl hibernate # Suspend the system in hybrid mode. # Saves the state to *both* RAM *and* disk. systemctl hybrid-sleep # Suspend the system, then hibernate after some time. # Saves the state to RAM initially, and if not interrupted within the specified # delay then wake up using an RTC alarm and hibernate. # Specify such delay in HibernateDelaySec in systemd-sleep.conf(5). systemctl suspend-then-hibernate # Show log entries. journalctl journalctl -f journalctl -n '20' journalctl -o 'json-pretty' journalctl --no-pager journalctl --utc # Show what boots the system has logs about. journalctl --list-boots # Display logs from specific boots only. # Persistent logging needs to be enabled. journalctl -b journalctl -b -3 # Display logs in a specific time window journalctl --since 'yesterday' journalctl --since "2015-01-10 17:15:00" journalctl --since '09:00' --until "1 hour ago" journalctl --since "2015-01-10" --until "2015-01-11 03:00" # Filter logs by unit. journalctl -u 'nginx.service' journalctl -u 'nginx.service' -u 'php-fpm.service' --since 'today' # Filter logs by process, user id or group id. journalctl _PID='8088' journalctl _UID='33' --since 'today' journalctl -F '_GID' # Filter logs by path. journalctl '/usr/bin/bash' # Filter logs by identifier (like a tag). journalctl -t 'CROND' # Display kernel logs only. # Works like `dmesg`. journalctl -k journalctl -k -b -5 # Filter logs by priority. journalctl -p err -b # Truncate the output. journalctl --no-full # Print everything. journalctl -a # Show current logs disk usage. journalctl --disk-usage # Delete old logs. sudo journalctl --vacuum-size='1G' sudo journalctl --vacuum-time='1years' # Show the current time settings. timedatectl # List available timezones. timedatectl list-timezones # Set timezones. sudo timedatectl set-timezone 'UTC' sudo timedatectl set-timezone 'Europe/Dublin' # Set the time. sudo timedatectl set-time '15:58:30' sudo timedatectl set-time '2015-11-20 16:14:50' # Set the hardware clock to UTC. timedatectl set-local-rtc 0 # Set the hardware clock to local timezone. timedatectl set-local-rtc 1 # Set automatic time sync. sudo timedatectl set-ntp true sudo timedatectl set-ntp false # Check the time and timezones state. timedatectl status # Show the current hostname settings. hostnamectl hostnamectl --pretty status hostnamectl --static status # Set hostnames. hostnamectl set-hostname 'static_hostname' --static hostnamectl set-hostname 'pretty_hostname' --pretty # Show the current DNS resolution settings. resolvectl status resolvectl status 'eth0' # Get an address-ip resolution and viceversa. resolvectl query 'www.0pointer.net' resolvectl query '85.214.157.71' # Retrieve PGP keys. resolvectl openpgp 'zbyszek@fedoraproject.org' # Restart the DNS resolver. sudo systemctl restart 'systemd-resolved.service' ``` ## User services User's service files should be placed into `~/.config/systemd/user`: ```sh cat > "${HOME}/.config/systemd/user/davmail.service" <