作者:糖糖6 | 来源:互联网 | 2017-11-06 00:02
随着Fedora15的发布,systemd正式开始了替代SysVinit的步伐。通过本文的秘籍表,可助您轻松由SysVinit过渡到systemd。该文档目的在于帮助系统管理员了解systemd中可以取代原先sysvinit工作流程的命令。如果想要了解systemd的一般信息,参阅systemd。注意‘service’和‘chkconfig’命令
随着 Fedora 15 的发布,systemd 正式开始了替代 SysVinit 的步伐。通过本文的秘籍表,可助您轻松由 SysVinit 过渡到 systemd 。
该文档目的在于帮助系统管理员了解 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 |
|
不需要,没有等效命令。 |
注意以上列出的所有 /sbin/service 和 /sbin/chkconfig 在 systemd 环境下依然可以工作,并且在必要的情况下将会被翻译成原生的等效命令。唯一的例外是 chkconfig –list。
额外的命令:
- 在 SysVinit,服务可以任意定义命令。例如 service iptables panic 或 service httpd graceful。原生 systemd 服务不具有此能力。
- 当编写原生 systemd 服务配置时,任何以这种方式定义了额外命令的服务需要定义其他、特定于服务的方式来完成此项任务。
- 查阅软件包自身的发布日志来了解可能进行类似操作的服务。
运行级别/目标:
Systemd 引入一个概念 目标,它的用途和运行级别类似,但是运行起来有一些不同。每一个目标使用名称而不是数字命名的,服务于一个特定的目的。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. 一些 目标 通过继承另一个 目标 然后添加其他额外服务来实现。也有一些 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 |
设置在下一次启动时使用多用户运行级别。 |