No edit summary |
|||
Line 1: | Line 1: | ||
{{autolang|base=yes}} | |||
This is a document to help system administrators who need to understand what commands in systemd replace their old workflow in SysVinit. If you want generation information on systemd, refer to [[systemd]] | This is a document to help system administrators who need to understand what commands in systemd replace their old workflow in SysVinit. If you want generation information on systemd, refer to [[systemd]] | ||
Revision as of 22:46, 12 April 2011
This is a document to help system administrators who need to understand what commands in systemd replace their old workflow in SysVinit. If you want generation information on systemd, refer to systemd
Note that the 'service' and 'chkconfig' commands will continue to work as expected in the systemd world, this guide is how to use the native systemctl calls that are being made by those commands.
Services
SystemVinit Command | Systemd Command | Notes |
---|---|---|
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 frobozz | systemctl is-enabled frobozz.service; echo $? | Used to check whether a service is configured to start or not in the current environment. |
chkconfig frobozz --list | ls /etc/systemd/system/*.wants/frobozz.service | Used to list what levels this service is configured on or off |
chkconfig frobozz --add | systemctl enable frobozz.service | Set a service to run in the runlevels specified in the init script[nb 1] |
chkconfig frobozz --level 12345 on | for target in rescue multi-user ; do ln -s /lib/systemd/system/frobozz.service /etc/systemd/system/$target.target.wants/ && systemctl daemon-reload | Turn the service on for the next reboot. [nb 2] |
chkconfig frobozz --level 12345 off | for target in rescue multi-user ; do rm /etc/systemd/system/$target.target.wants/frobozz.service && systemctl daemon-reload | Turn the service off for the next reboot. [nb 2] |
service frobozz start | systemctl start frobozz.service (OR service frobozz start) | Used to start a service (not reboot persistent) |
service frobozz stop | systemctl stop frobozz.service (OR service frobozz stop) | Used to stop a service (not reboot persistent) |
service frobozz restart | systemctl restart frobozz.service (OR service frobozz restart) | Used to stop and then start a service |
service frobozz reload | systemctl reload frobozz.service (OR service frobozz reload) | When supported, reloads the config file without interrupting pending operations. |
service frobozz condrestart | systemctl reload-or-restart frobozz.service (OR systemctl condrestart frobozz.service OR service frobozz condrestart) | When supported, restarts if the service is already running. |
service frobozz status | systemctl status frobozz.service | Tells whether a service is currently running. |
Notes
- ↑
Although chkconfig --add
andsystemctl enable
perform roughly the same action,chkconfig --add
is recommended when you first install a service whilesystemctl enable
is recommended when you first turn a service on. - ↑ 2.0 2.1 In systemd, the numeric runlevels have been replaced by named targets. The
graphical
target is a strict superset of themulti-user
target so you don't have to set it up separately. The custom runlevels (2 and 4 in this example) are not defined well enough to have a real systemd equivalent; if you use them for custom runlevels, you should try a custom named target in systemd instead. See the Runlevels section for more details
Runlevels/targets
Systemd has a concept of targets which serve a similar purpose as runlevels but act a little different. Each target is named instead of numbered and is intended to serve a specific purpose. Some targets are implemented by inheriting all of the services of another target and adding additional services to it. There are systemd targets that mimic the common SystemVinit runlevels so you can still switch targets using the familiar telinit RUNLEVEL
command. The runlevels that are assigned a specific purpose on vanilla Fedora installs; 0, 1, 3, 5, and 6; have a 1:1 mapping with a specific systemd target. Unfortunately, there's no good way to do the same for the user-defined runlevels like 2 and 4. If you make use of those it is suggested that you make a new named systemd target as /etc/systemd/system/$YOURTARGET
that takes one of the existing runlevels as a base (you can look at /lib/systemd/system/graphical.target
as an example), make a directory /etc/systemd/system/$YOURTARGET.wants
, and then symlink the additional services that you want to enable into that directory. (The service unit files that you symlink live in /lib/systemd/system
).
SystemVinit Runlevel | Systemd Target | Notes |
---|---|---|
0 | runlevel0.target, poweroff.target | Halt the system. |
1, s, single | runlevel1.target, rescue.target | Single user mode. |
2, 4 | runlevel2.target, runlevel4.target, multi-user.target | User-defined/Site-specific runlevels. By default, identical to 3. |
3 | runlevel3.target, multi-user.target | Multi-user, non-graphical. Users can usually login via multiple consoles or via the network. |
5 | runlevel5.target, graphical.target | Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login. |
6 | runlevel6.target, reboot.target | Reboot |
emergency | emergency.target | Emergency shell |
Changing runlevels:
SystemVinit Command | Systemd Command | Notes |
---|---|---|
telinit 3 | systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) | Change to multi-user run level. |
sed s/^id:.*:initdefault:/id:3:initdefault:/ | ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target | Set to use multi-user runlevel on next reboot. |