Lovenemesis (talk | contribs) No edit summary |
m (→运行级别/目标) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 [[systemd]]。 | 该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 [[systemd]]。 | ||
{{admon/tip |注意 'service' 和 'chkconfig' 命令|这两条命令在 systemd 环境下依然可用,该教程目的在于告诉您如何使用原生 systemctl 替代品。}} | |||
systemctl | |||
== | == 服务 == | ||
{| | {|border="1" cellspacing="0" | ||
! | !Sysvinit 命令!!Systemd 命令!!备注 | ||
|- | |- | ||
| service frobozz start || systemctl start frobozz.service || | | service frobozz start || systemctl start frobozz.service || 用来启动一个服务 (并不会重启现有的) | ||
|- | |- | ||
| service frobozz stop || systemctl stop frobozz.service || | | service frobozz stop || systemctl stop frobozz.service || 用来停止一个服务 (并不会重启现有的)。 | ||
|- | |- | ||
| service frobozz restart || systemctl restart frobozz.service || | | service frobozz restart || systemctl restart frobozz.service || 用来停止并启动一个服务。 | ||
|- | |- | ||
| service frobozz reload || systemctl reload frobozz.service || | | service frobozz reload || systemctl reload frobozz.service || 当支持时,重新装载配置文件而不中断等待操作。 | ||
|- | |- | ||
| service frobozz condrestart || systemctl condrestart frobozz.service || | | service frobozz condrestart || systemctl condrestart frobozz.service || 如果服务正在运行那么重启它。 | ||
|- | |- | ||
| service frobozz status || systemctl status frobozz.service || | | service frobozz status || systemctl status frobozz.service || 汇报服务是否正在运行。 | ||
|- | |- | ||
| ls /etc/rc.d/init.d/ || ls /lib/systemd/system/*.service /etc/systemd/system/*.service || | | ls /etc/rc.d/init.d/ || systemctl list-unit-files --type=service (推荐)<br /> ls /lib/systemd/system/*.service /etc/systemd/system/*.service || 用来列出可以启动或停止的服务列表。 | ||
|- | |- | ||
| chkconfig frobozz on || systemctl enable frobozz.service || | | chkconfig frobozz on || systemctl enable frobozz.service || 在下次启动时或满足其他触发条件时设置服务为启用 | ||
|- | |- | ||
| chkconfig frobozz off || systemctl disable frobozz.service || | | chkconfig frobozz off || systemctl disable frobozz.service || 在下次启动时或满足其他触发条件时设置服务为禁用 | ||
|- | |- | ||
| chkconfig frobozz || systemctl is-enabled frobozz.service || | | chkconfig frobozz || systemctl is-enabled frobozz.service || 用来检查一个服务在当前环境下被配置为启用还是禁用。 | ||
|- | |- | ||
| | | chkconfig --list || systemctl list-unit-files --type=service (推荐)<br/> ls /etc/systemd/system/*.wants/ || 输出在各个运行级别下服务的启用和禁用情况 | ||
|- | |- | ||
| chkconfig frobozz --add || | | chkconfig frobozz --list || ls /etc/systemd/system/*.wants/frobozz.service || 用来列出该服务在哪些运行级别下启用和禁用。 | ||
|- | |||
| chkconfig frobozz --add || systemctl daemon-reload || 当您创建新服务文件或者变更设置时使用。 | |||
|- | |- | ||
|} | |} | ||
注意以上列出的所有 /sbin/service 和 /sbin/chkconfig 在 systemd 环境下依然可以工作,并且在必要的情况下将会被翻译成原生的等效命令。唯一的例外是 chkconfig --list。 | |||
{{admon/warning| | {{admon/warning|额外的命令|在 SysVinit,服务可以任意定义命令。例如 '''service iptables panic''' 或 '''service httpd graceful'''。原生 systemd 服务不具有此能力。 | ||
当编写原生 systemd 服务配置时,任何以这种方式定义了额外命令的服务需要定义其他、特定于服务的方式来完成此项任务。 | |||
查阅软件包自身的发布日志来了解可能进行类似操作的服务。}} | |||
== | == 运行级别/目标 == | ||
Systemd | Systemd 引入一个概念:''目标''。它的用途和运行级别类似,但是运行起来有一些不同。每一个''目标''使用名称而不是数字命名的,服务于一个特定的目的。一些 ''目标'' 通过继承另一个 ''目标'' 然后添加其他额外服务来实现。也有一些 systemd ''目标'' 模仿通常的 sysvinit 运行级别,于是您依然可以通过熟悉的<code>telinit RUNLEVEL</code> 来切换 ''目标''。在纯净 Fedora 系统上运行级别 0, 1, 3, 5, 和 6; 与特定的 ''目标'' 之间存在 1:1 的映射关系。遗憾的是,对于用户自定义运行级别 2 和 4 没法实现类似的转换。如果您使用了这些运行级别,建议您用 <code>/etc/systemd/system/$YOURTARGET</code> 的方式创建一个新的 systemd ''目标'',并以一个已有的运行级别作为基础 (您可以查看 <code>/lib/systemd/system/graphical.target</code> 作为例子),创建一个目录 <code>/etc/systemd/system/$YOURTARGET.wants</code>,然后符号链接您想要启用的额外服务到该目录下 (您符号链接的服务位于 <code>/lib/systemd/system</code>)。 | ||
{| | {|border="1" cellspacing="0" | ||
! | !Sysvinit 运行级别!!Systemd 目标!!备注 | ||
|- | |- | ||
| 0 || runlevel0.target, poweroff.target || | | 0 || runlevel0.target, poweroff.target || 关闭系统。 | ||
|- | |- | ||
| 1, s, single || runlevel1.target, rescue.target || | | 1, s, single || runlevel1.target, rescue.target || 单用户模式。 | ||
|- | |- | ||
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || | | 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || 用户定义/域特定运行级别。默认等同于 3。 | ||
|- | |- | ||
| 3 || runlevel3.target, multi-user.target || | | 3 || runlevel3.target, multi-user.target || 多用户,非图形化。用户可以通过多个控制台或网络登录。 | ||
|- | |- | ||
| 5 || runlevel5.target, graphical.target || | | 5 || runlevel5.target, graphical.target || 多用户,图形化。通常为所有运行级别 3 的服务外加图形化登录。 | ||
|- | |- | ||
| 6 || runlevel6.target, reboot.target || | | 6 || runlevel6.target, reboot.target || 重启 | ||
|- | |- | ||
| emergency || emergency.target || | | emergency || emergency.target || 紧急 Shell | ||
|- | |- | ||
|} | |} | ||
改变运行级别: | |||
{| | {|border="1" cellspacing="0" | ||
! | !Sysvinit 命令!!Systemd 命令!!备注 | ||
|- | |- | ||
| telinit 3 || systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) || | | telinit 3 || systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) || 改变至多用户运行级别。 | ||
|- | |- | ||
| sed s/^id:.*:initdefault:/id:3:initdefault:/ || ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target || | | sed s/^id:.*:initdefault:/id:3:initdefault:/ || ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target || 设置在下一次启动时使用多用户运行级别。 | ||
|} | |} | ||
[[Category:Zh]] |
Latest revision as of 03:41, 25 January 2013
该文档目的在于帮助系统管理员了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,参阅 systemd。
服务
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/ | systemctl list-unit-files --type=service (推荐) 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 --list | systemctl list-unit-files --type=service (推荐) ls /etc/systemd/system/*.wants/ |
输出在各个运行级别下服务的启用和禁用情况 |
chkconfig frobozz --list | ls /etc/systemd/system/*.wants/frobozz.service | 用来列出该服务在哪些运行级别下启用和禁用。 |
chkconfig frobozz --add | systemctl daemon-reload | 当您创建新服务文件或者变更设置时使用。 |
注意以上列出的所有 /sbin/service 和 /sbin/chkconfig 在 systemd 环境下依然可以工作,并且在必要的情况下将会被翻译成原生的等效命令。唯一的例外是 chkconfig --list。
运行级别/目标
Systemd 引入一个概念:目标。它的用途和运行级别类似,但是运行起来有一些不同。每一个目标使用名称而不是数字命名的,服务于一个特定的目的。一些 目标 通过继承另一个 目标 然后添加其他额外服务来实现。也有一些 systemd 目标 模仿通常的 sysvinit 运行级别,于是您依然可以通过熟悉的telinit RUNLEVEL
来切换 目标。在纯净 Fedora 系统上运行级别 0, 1, 3, 5, 和 6; 与特定的 目标 之间存在 1:1 的映射关系。遗憾的是,对于用户自定义运行级别 2 和 4 没法实现类似的转换。如果您使用了这些运行级别,建议您用 /etc/systemd/system/$YOURTARGET
的方式创建一个新的 systemd 目标,并以一个已有的运行级别作为基础 (您可以查看 /lib/systemd/system/graphical.target
作为例子),创建一个目录 /etc/systemd/system/$YOURTARGET.wants
,然后符号链接您想要启用的额外服务到该目录下 (您符号链接的服务位于 /lib/systemd/system
)。
Sysvinit 运行级别 | Systemd 目标 | 备注 |
---|---|---|
0 | runlevel0.target, poweroff.target | 关闭系统。 |
1, s, single | runlevel1.target, rescue.target | 单用户模式。 |
2, 4 | runlevel2.target, runlevel4.target, multi-user.target | 用户定义/域特定运行级别。默认等同于 3。 |
3 | runlevel3.target, multi-user.target | 多用户,非图形化。用户可以通过多个控制台或网络登录。 |
5 | runlevel5.target, graphical.target | 多用户,图形化。通常为所有运行级别 3 的服务外加图形化登录。 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急 Shell |
改变运行级别:
Sysvinit 命令 | Systemd 命令 | 备注 |
---|---|---|
telinit 3 | systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) | 改变至多用户运行级别。 |
sed s/^id:.*:initdefault:/id:3:initdefault:/ | ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target | 设置在下一次启动时使用多用户运行级别。 |