====== Useful SystemD commands ====== (hints for systemctl or systemctl vs chkconfig and service) ===== List all running services ===== # systemctl ===== Start/stop or enable/disable services ===== Activates a service immediately: # systemctl start foo.service Deactivates a service immediately: # systemctl stop foo.service Restarts a service: # systemctl restart foo.service Shows status of a service including whether it is running or not: # systemctl status foo.service Enables a service to be started on bootup: # systemctl enable foo.service Disables a service to not start during bootup: # systemctl disable foo.service Check whether a service is already enabled or not: # systemctl is-enabled foo.service; echo $? 0 indicates that it is enabled. 1 indicates that it is disabled ===== How do I change the runlevel? ===== systemd has the concept of targets which is a more flexible replacement for runlevels in sysvinit. Run level 3 is emulated by multi-user.target. Run level 5 is emulated by graphical.target. runlevel3.target is a symbolic link to multi-user.target and runlevel5.target is a symbolic link to graphical.target. You can switch to ‘runlevel 3′ by running # systemctl isolate multi-user.target (or) systemctl isolate runlevel3.target You can switch to ‘runlevel 5′ by running # systemctl isolate graphical.target (or) systemctl isolate runlevel5.target ===== How do I change the default runlevel? ===== systemd uses symlinks to point to the default runlevel. You have to delete the existing symlink first before creating a new one # rm /etc/systemd/system/default.target Switch to runlevel 3 by default # ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target Switch to runlevel 5 by default # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target systemd does not use /etc/inittab file. ===== List the current run level ===== runlevel command still works with systemd. You can continue using that however runlevels is a legacy concept in systemd and is emulated via ‘targets’ and multiple targets can be active at the same time. So the equivalent in systemd terms is # systemctl list-units --type=target ===== Powering off the machine ===== You can use # poweroff Some more possibilities are: halt -p, init 0, shutdown -P now Note that halt used to work the same as poweroff in previous Fedora releases, but systemd distinguishes between the two, so halt without parameters now does exactly what it says – it merely stops the system without turning it off. ===== Service vs. systemd ===== # service NetworkManager stop (or) # systemctl stop NetworkManager.service ===== Chkconfig vs. systemd ===== # chkconfig NetworkManager off (or) # systemctl disable NetworkManager.service ===== Readahead ===== systemd has a built-in readahead implementation is not enabled on upgrades. It should improve bootup speed but your mileage may vary depending on your hardware. To enable it: # systemctl enable systemd-readahead-collect.service # systemctl enable systemd-readahead-replay.service ===== SystemD cheatsheet ===== | service foobar start | systemctl start foobar.service | Used to start a service (not reboot persistent) | | service foobar stop | systemctl stop foobar.service | Used to stop a service (not reboot persistent) | | service foobar restart | systemctl restart foobar.service | Used to stop and then start a service | | service foobar reload | systemctl reload foobar.service | When supported, reloads the config file without interrupting pending operations. | | service foobar condrestart | systemctl condrestart foobar.service | Restarts if the service is already running. | | service foobar status | systemctl status foobar.service | Tells whether a service is currently running. | | ls /etc/rc.d/init.d/ | ls /lib/systemd/system/*.service /etc/systemd/system/*.service | Used to list the services that can be started or stopped | | chkconfig foobar on | systemctl enable foobar.service | Turn the service on, for start at next boot, or other trigger. | | chkconfig foobar off | systemctl disable foobar.service | Turn the service off for the next reboot, or any other trigger. | | chkconfig foobar | systemctl is-enabled foobar.service | Used to check whether a service is configured to start or not in the current environment. | | chkconfig foobar –list | ls /etc/systemd/system/*.wants/foobar.service | Used to list what levels this service is configured on or off | | chkconfig foobar –add | | Not needed, no equivalent. | ===== References ===== fedoraproject.org/wiki/Systemd \\ fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet \\ https://www.dynacont.net/documentation/linux/Useful_SystemD_commands/ \\ ===== Further Information ===== Understanding Systemd Units and Unit Files https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files Systemd shutdown process and custom systemd shutdown scripts and services https://www.programmersought.com/article/36704999564/ How to run a script with systemd right before shutdown? https://unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown