# 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 # 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 # 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 # 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 state. hostnamectl hostnamectl --pretty status hostnamectl --static status # Set hostnames. hostnamectl set-hostname staticky --static hostnamectl set-hostname prettiky --pretty ``` ## User services User's service files should be placed into `~/.config/systemd/user`: ```sh cat > "${HOME}/.config/systemd/user/davmail.service" <