summaryrefslogtreecommitdiffstats
path: root/docs/TIPS_AND_TRICKS.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/TIPS_AND_TRICKS.md')
-rw-r--r--docs/TIPS_AND_TRICKS.md185
1 files changed, 185 insertions, 0 deletions
diff --git a/docs/TIPS_AND_TRICKS.md b/docs/TIPS_AND_TRICKS.md
new file mode 100644
index 0000000..f181f12
--- /dev/null
+++ b/docs/TIPS_AND_TRICKS.md
@@ -0,0 +1,185 @@
+---
+title: Tips And Tricks
+category: Manuals and Documentation for Users and Administrators
+layout: default
+SPDX-License-Identifier: LGPL-2.1-or-later
+---
+
+# Tips & Tricks
+
+Also check out the [Frequently Asked Questions](http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions)!
+
+## Listing running services
+
+```sh
+$ systemctl
+UNIT LOAD ACTIVE SUB JOB DESCRIPTION
+accounts-daemon.service loaded active running Accounts Service
+atd.service loaded active running Job spooling tools
+avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
+bluetooth.service loaded active running Bluetooth Manager
+colord-sane.service loaded active running Daemon for monitoring attached scanners and registering them with colord
+colord.service loaded active running Manage, Install and Generate Color Profiles
+crond.service loaded active running Command Scheduler
+cups.service loaded active running CUPS Printing Service
+dbus.service loaded active running D-Bus System Message Bus
+...
+```
+
+## Showing runtime status
+
+```sh
+$ systemctl status udisks2.service
+udisks2.service - Storage Daemon
+ Loaded: loaded (/usr/lib/systemd/system/udisks2.service; static)
+ Active: active (running) since Wed, 27 Jun 2012 20:49:25 +0200; 1 day and 1h ago
+ Main PID: 615 (udisksd)
+ CGroup: name=systemd:/system/udisks2.service
+ └ 615 /usr/lib/udisks2/udisksd --no-debug
+
+Jun 27 20:49:25 epsilon udisksd[615]: udisks daemon version 1.94.0 starting
+Jun 27 20:49:25 epsilon udisksd[615]: Acquired the name org.freedesktop.UDisks2 on the system message bus
+```
+
+## cgroup tree
+
+```sh
+$ systemd-cgls
+└ system
+├ 1 /usr/lib/systemd/systemd --system --deserialize 18
+├ ntpd.service
+│ └ 8471 /usr/sbin/ntpd -u ntp:ntp -g
+├ upower.service
+│ └ 798 /usr/libexec/upowerd
+├ wpa_supplicant.service
+│ └ 751 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
+├ nfs-idmap.service
+│ └ 731 /usr/sbin/rpc.idmapd
+├ nfs-rquotad.service
+│ └ 753 /usr/sbin/rpc.rquotad
+├ nfs-mountd.service
+│ └ 732 /usr/sbin/rpc.mountd
+├ nfs-lock.service
+│ └ 704 /sbin/rpc.statd
+├ rpcbind.service
+│ └ 680 /sbin/rpcbind -w
+├ postfix.service
+│ ├ 859 /usr/libexec/postfix/master
+│ ├ 877 qmgr -l -t fifo -u
+│ └ 32271 pickup -l -t fifo -u
+├ colord-sane.service
+│ └ 647 /usr/libexec/colord-sane
+├ udisks2.service
+│ └ 615 /usr/lib/udisks2/udisksd --no-debug
+├ colord.service
+│ └ 607 /usr/libexec/colord
+├ prefdm.service
+│ ├ 567 /usr/sbin/gdm-binary -nodaemon
+│ ├ 602 /usr/libexec/gdm-simple-slave --display-id /org/gnome/DisplayManager/Display1
+│ ├ 612 /usr/bin/Xorg :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-O00GPA/database -seat seat0 -nolisten tcp
+│ └ 905 gdm-session-worker [pam/gdm-password]
+├ systemd-ask-password-wall.service
+│ └ 645 /usr/bin/systemd-tty-ask-password-agent --wall
+├ atd.service
+│ └ 544 /usr/sbin/atd -f
+├ ksmtuned.service
+│ ├ 548 /bin/bash /usr/sbin/ksmtuned
+│ └ 1092 sleep 60
+├ dbus.service
+│ ├ 586 /bin/dbus-daemon --system --address=systemd: --nofork --systemd-activation
+│ ├ 601 /usr/libexec/polkit-1/polkitd --no-debug
+│ └ 657 /usr/sbin/modem-manager
+├ cups.service
+│ └ 508 /usr/sbin/cupsd -f
+├ avahi-daemon.service
+│ ├ 506 avahi-daemon: running [epsilon.local]
+│ └ 516 avahi-daemon: chroot helper
+├ system-setup-keyboard.service
+│ └ 504 /usr/bin/system-setup-keyboard
+├ accounts-daemon.service
+│ └ 502 /usr/libexec/accounts-daemon
+├ systemd-logind.service
+│ └ 498 /usr/lib/systemd/systemd-logind
+├ crond.service
+│ └ 486 /usr/sbin/crond -n
+├ NetworkManager.service
+│ ├ 484 /usr/sbin/NetworkManager --no-daemon
+│ └ 8437 /sbin/dhclient -d -4 -sf /usr/libexec/nm-dhcp-client.action -pf /var/run/dhclient-wlan0.pid -lf /var/lib/dhclient/dhclient-903b6f6aa7a1-46c8-82a9-7f637dfbb3e4-wlan0.lease -cf /var/run/nm-d...
+├ libvirtd.service
+│ ├ 480 /usr/sbin/libvirtd
+│ └ 571 /sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listenaddress 192.168.122.1 --dhcp-range 192.168.122.2,1...
+├ bluetooth.service
+│ └ 479 /usr/sbin/bluetoothd -n
+├ systemd-udev.service
+│ └ 287 /usr/lib/systemd/systemd-udevd
+└ systemd-journald.service
+└ 280 /usr/lib/systemd/systemd-journald
+```
+
+### ps with cgroups
+
+```sh
+$ alias psc='ps xawf -eo pid,user,cgroup,args'
+$ psc
+ PID USER CGROUP COMMAND
+...
+ 1 root name=systemd:/systemd-1 /bin/systemd systemd.log_target=kmsg systemd.log_level=debug selinux=0
+ 415 root name=systemd:/systemd-1/sysinit.service /sbin/udevd -d
+ 928 root name=systemd:/systemd-1/atd.service /usr/sbin/atd -f
+ 930 root name=systemd:/systemd-1/ntpd.service /usr/sbin/ntpd -n
+ 932 root name=systemd:/systemd-1/crond.service /usr/sbin/crond -n
+ 935 root name=systemd:/systemd-1/auditd.service /sbin/auditd -n
+ 943 root name=systemd:/systemd-1/auditd.service \_ /sbin/audispd
+ 964 root name=systemd:/systemd-1/auditd.service \_ /usr/sbin/sedispatch
+ 937 root name=systemd:/systemd-1/acpid.service /usr/sbin/acpid -f
+ 941 rpc name=systemd:/systemd-1/rpcbind.service /sbin/rpcbind -f
+ 944 root name=systemd:/systemd-1/rsyslog.service /sbin/rsyslogd -n -c 4
+ 947 root name=systemd:/systemd-1/systemd-logger.service /lib/systemd/systemd-logger
+ 950 root name=systemd:/systemd-1/cups.service /usr/sbin/cupsd -f
+ 955 dbus name=systemd:/systemd-1/messagebus.service /bin/dbus-daemon --system --address=systemd: --nofork --systemd-activation
+ 969 root name=systemd:/systemd-1/getty@.service/tty6 /sbin/mingetty tty6
+ 970 root name=systemd:/systemd-1/getty@.service/tty5 /sbin/mingetty tty5
+ 971 root name=systemd:/systemd-1/getty@.service/tty1 /sbin/mingetty tty1
+ 973 root name=systemd:/systemd-1/getty@.service/tty4 /sbin/mingetty tty4
+ 974 root name=systemd:/user/lennart/2 login -- lennart
+ 1824 lennart name=systemd:/user/lennart/2 \_ -bash
+ 975 root name=systemd:/systemd-1/getty@.service/tty3 /sbin/mingetty tty3
+ 988 root name=systemd:/systemd-1/polkitd.service /usr/libexec/polkit-1/polkitd
+ 994 rtkit name=systemd:/systemd-1/rtkit-daemon.service /usr/libexec/rtkit-daemon
+...
+```
+
+## Changing the Default Boot Target
+
+```sh
+$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
+```
+
+This line makes the multi user target (i.e. full system, but no graphical UI) the default target to boot into. This is kinda equivalent to setting runlevel 3 as the default runlevel on Fedora/sysvinit systems.
+
+```sh
+$ ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
+```
+
+This line makes the graphical target (i.e. full system, including graphical UI) the default target to boot into. Kinda equivalent to runlevel 5 on fedora/sysvinit systems. This is how things are shipped by default.
+
+## What other units does a unit depend on?
+
+For example, if you want to figure out which services a target like multi-user.target pulls in, use something like this:
+
+```sh
+$ systemctl show -p "Wants" multi-user.target
+Wants=rc-local.service avahi-daemon.service rpcbind.service NetworkManager.service acpid.service dbus.service atd.service crond.service auditd.service ntpd.service udisks.service bluetooth.service cups.service wpa_supplicant.service getty.target modem-manager.service portreserve.service abrtd.service yum-updatesd.service upowerd.service test-first.service pcscd.service rsyslog.service haldaemon.service remote-fs.target plymouth-quit.service systemd-update-utmp-runlevel.service sendmail.service lvm2-monitor.service cpuspeed.service udev-post.service mdmonitor.service iscsid.service livesys.service livesys-late.service irqbalance.service iscsi.service netfs.service
+```
+
+Instead of "Wants" you might also try "WantedBy", "Requires", "RequiredBy", "Conflicts", "ConflictedBy", "Before", "After" for the respective types of dependencies and their inverse.
+
+## What would get started if I booted into a specific target?
+
+If you want systemd to calculate the "initial" transaction it would execute on boot, try something like this:
+
+```sh
+$ systemd --test --system --unit=foobar.target
+```
+
+for a boot target foobar.target. Note that this is mostly a debugging tool that actually does a lot more than just calculate the initial transaction, so don't build scripts based on this.