quick-docs/en-US/sysvinit-to-systemd-cheatsheet.adoc

172 lines
6.4 KiB
Text

= SysVinit to Systemd Cheatsheet
'''
[IMPORTANT]
======
This page was automatically converted from https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet
It is probably
* Badly formatted
* Missing graphics and tables that do not covert well from mediawiki
* Out-of-date
* In need of other love
Please fix it, remove this notice, and then add to `_topic_map.yml`
Pull requests accepted at https://pagure.io/fedora-docs/fedora-howto
Once that is live, go to the original wiki page and add an `{{old}}`
tag, followed by a note like
....
{{admon/note|This page has a new home!|
This wiki page is no longer maintained. Please find the up-to-date
version at: https://docs.fedoraproject.org/whatever-the-url
}}
....
======
'''
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 general information on systemd, refer to systemd.
[[services]]
Services
~~~~~~~~
Note that all recent versions of systemctl assume the '.service' if left
off. So, 'systemctl start frobozz.service' is the same as 'systemctl
start frobozz'
[cols=",,",options="header",]
|=======================================================================
|Sysvinit Command |Systemd Command |Notes
|service frobozz start |systemctl start frobozz |Used to start a service
(not reboot persistent)
|service frobozz stop |systemctl stop frobozz |Used to stop a service
(not reboot persistent)
|service frobozz restart |systemctl restart frobozz |Used to stop and
then start a service
|service frobozz reload |systemctl reload frobozz |When supported,
reloads the config file without interrupting pending operations.
|service frobozz condrestart |systemctl condrestart frobozz |Restarts if
the service is already running.
|service frobozz status |systemctl status frobozz |Tells whether a
service is currently running.
|ls /etc/rc.d/init.d/ |systemctl (or) systemctl list-unit-files
--type=service (or) +
ls /lib/systemd/system/*.service /etc/systemd/system/*.service |Used to
list the services that can be started or stopped +
Used to list all the services and other units
|chkconfig frobozz on |systemctl enable frobozz |Turn the service on,
for start at next boot, or other trigger.
|chkconfig frobozz off |systemctl disable frobozz |Turn the service off
for the next reboot, or any other trigger.
|chkconfig frobozz |systemctl is-enabled frobozz |Used to check whether
a service is configured to start or not in the current environment.
|chkconfig --list |systemctl list-unit-files --type=service (or) ls
/etc/systemd/system/*.wants/ |Print a table of services that lists which
runlevels each is configured on or off
|chkconfig --list | grep 5:on |systemctl list-dependencies
graphical.target |Print a table of services that will be started when
booting into graphical mode
|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 daemon-reload |Used when you create
a new service file or modify any configuration
|=======================================================================
Note that all /sbin/service and /sbin/chkconfig lines listed above
continue to work on systemd, and will be translated to native
equivalents as necessary. The only exception is chkconfig --list.
[[runlevelstargets]]
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 __target__s that
mimic the common sysvinit runlevels so you can still switch __target__s
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`).
[cols=",,",options="header",]
|=======================================================================
|Sysvinit 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:
[cols=",,",options="header",]
|=======================================================================
|Sysvinit 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.
|=======================================================================
Kernel Options:
The above systemd targets can be used when booting. At the GRUB menu,
edit the selection to add "systemd.unit=__target__" (without the
double-quotation marks) as a kernel option where _target_ is one of the
above. (For example, "rescue.target".)
Tip: the ".target" extention is optional. The "systemd.unit=rescue"
kernel option works the same as "systemd.unit=rescue.target".
'''
See a typo, something missing or out of date, or anything else which can be
improved? Edit this document at https://pagure.io/fedora-docs/fedora-howto.