From Fedora Project Wiki
No edit summary
No edit summary
Line 3: Line 3:
该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 [[systemd]]。
该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 [[systemd]]。


Note that the 'service' and 'chkconfig' commands will mostly continue to work as expected in the systemd world, this guide is how to use the native
注意 'service' 'chkconfig' 命令在 systemd 环境下依然可用,该教程目的在于告诉您如何使用原生 systemctl 替代品。
systemctl replacements.


== Services ==
== 服务 ==


{|
{|
!sysvinit Command!!systemd Command!!Notes
!sysvinit 命令!!systemd 命令!!备注
|-
|-
| service frobozz start || systemctl start frobozz.service || Used to start a service (not reboot persistent)
| service frobozz start || systemctl start frobozz.service || 用来启动一个服务 (并不会重启现有的)
|-
|-
| service frobozz stop || systemctl stop frobozz.service || Used to stop a service (not reboot persistent)
| service frobozz stop || systemctl stop frobozz.service || 用来停止一个服务 (并不会重启现有的)
|-
|-
| service frobozz restart || systemctl restart frobozz.service  || Used to stop and then start a service
| service frobozz restart || systemctl restart frobozz.service  || 用来停止并启动一个服务。
|-
|-
| service frobozz reload || systemctl reload frobozz.service  || When supported, reloads the config file without interrupting pending operations.
| service frobozz reload || systemctl reload frobozz.service  || 当支持时,重新装载配置文件而不中断等待操作。
|-
|-
| service frobozz condrestart || systemctl condrestart frobozz.service  || Restarts if the service is already running.
| service frobozz condrestart || systemctl condrestart frobozz.service  || 如果服务正在运行那么重启它。
|-
|-
| service frobozz status || systemctl status frobozz.service || Tells whether a service is currently running.
| service frobozz status || systemctl status frobozz.service || 汇报服务是否正在运行。
|-
|-
| 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
| ls /etc/rc.d/init.d/ || ls /lib/systemd/system/*.service /etc/systemd/system/*.service || 用来列出可以启动或停止的服务列表。
|-
|-
| chkconfig frobozz on || systemctl enable frobozz.service || Turn the service on, for start at next boot, or other trigger.
| chkconfig frobozz on || systemctl enable frobozz.service || 在下次启动时或满足其他触发条件时设置服务为启用
|-
|-
| chkconfig frobozz off || systemctl disable frobozz.service || Turn the service off for the next reboot, or any other trigger.
| chkconfig frobozz off || systemctl disable frobozz.service || 在下次启动时或满足其他触发条件时设置服务为禁用
|-
|-
| chkconfig frobozz || systemctl is-enabled frobozz.service || Used to check whether a service is configured to start or not in the current environment.
| chkconfig frobozz || systemctl is-enabled frobozz.service || 用来检查一个服务在当前环境下被配置为启用还是禁用。
|-
|-
|- chkconfig --list || ls /etc/systemd/system/*.wants/ || Print a table of services that lists which runlevels each is configured on or off
|- chkconfig --list || ls /etc/systemd/system/*.wants/ || 输出在各个运行级别下服务的启用和禁用情况
| chkconfig frobozz --list || ls /etc/systemd/system/*.wants/frobozz.service || Used to list what levels this service is configured on or off
| chkconfig frobozz --list || ls /etc/systemd/system/*.wants/frobozz.service || 用来列出该服务在哪些运行级别下启用和禁用。
|-
|-
| chkconfig frobozz --add ||  || Not needed, no equivalent.
| chkconfig frobozz --add ||  || 不需要,没有等效命令。
|-
|-
|}
|}

Revision as of 09:34, 31 May 2011

该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 systemd

注意 'service' 和 'chkconfig' 命令在 systemd 环境下依然可用,该教程目的在于告诉您如何使用原生 systemctl 替代品。

服务

sysvinit 命令 systemd 命令 备注
service frobozz start systemctl start frobozz.service 用来启动一个服务 (并不会重启现有的)
service frobozz stop systemctl stop frobozz.service 用来停止一个服务 (并不会重启现有的)。
service frobozz restart systemctl restart frobozz.service 用来停止并启动一个服务。
service frobozz reload systemctl reload frobozz.service 当支持时,重新装载配置文件而不中断等待操作。
service frobozz condrestart systemctl condrestart frobozz.service 如果服务正在运行那么重启它。
service frobozz status systemctl status frobozz.service 汇报服务是否正在运行。
ls /etc/rc.d/init.d/ ls /lib/systemd/system/*.service /etc/systemd/system/*.service 用来列出可以启动或停止的服务列表。
chkconfig frobozz on systemctl enable frobozz.service 在下次启动时或满足其他触发条件时设置服务为启用
chkconfig frobozz off systemctl disable frobozz.service 在下次启动时或满足其他触发条件时设置服务为禁用
chkconfig frobozz systemctl is-enabled frobozz.service 用来检查一个服务在当前环境下被配置为启用还是禁用。
chkconfig frobozz --list ls /etc/systemd/system/*.wants/frobozz.service 用来列出该服务在哪些运行级别下启用和禁用。
chkconfig frobozz --add 不需要,没有等效命令。

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.

Warning.png
Additional commands
In SysVinit, services can define arbitrary commands. Examples would be service iptables panic, or service httpd graceful. Native systemd services do not have this ability.

Any service that defines an additional command in this way would need to define some other, service-specific, way to accomplish this task when writing a native systemd service definition.

Check the package-specific release notes for any services that may have done this.

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 sysvinit 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).

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:

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.