Fedora 15 systemd 秘籍表

随着 Fedora 15 的发布,systemd 正式开始了替代 SysVinit 的步伐。通过本文的秘籍表,可助您轻松由 SysVinit 过渡到 systemd 。

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

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

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

注意以上列出的所有 /sbin/service 和 /sbin/chkconfig 在 systemd 环境下依然可以工作,并且在必要的情况下将会被翻译成原生的等效命令。唯一的例外是 chkconfig –list。

额外的命令:

  • 在 SysVinit,服务可以任意定义命令。例如 service iptables panicservice 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 运行级别,于是您依然可以通过熟悉的<font face="Courier New">telinit RUNLEVEL</font> 来切换 目标。在纯净 Fedora 系统上运行级别 0, 1, 3, 5, 和 6; 与特定的 目标 之间存在 1:1 的映射关系。遗憾的是,对于用户自定义运行级别 2 和 4 没法实现类似的转换。如果您使用了这些运行级别,建议您用 <font face="Courier New">/etc/systemd/system/$YOURTARGET</font> 的方式创建一个新的 systemd 目标,并以一个已有的运行级别作为基础 (您可以查看 <font face="Courier New">/lib/systemd/system/graphical.target</font> 作为例子),创建一个目录 <font face="Courier New">/etc/systemd/system/$YOURTARGET.wants</font>,然后符号链接您想要启用的额外服务到该目录下 (您符号链接的服务位于 <font face="Courier New">/lib/systemd/system</font>)。

sysvinit 运行级别systemd 目标备注
0runlevel0.target, poweroff.target关闭系统。
1, s, singlerunlevel1.target, rescue.target单用户模式。
2, 4runlevel2.target, runlevel4.target, multi-user.target用户定义/域特定运行级别。默认等同于 3。
3runlevel3.target, multi-user.target多用户,非图形化。用户可以通过多个控制台或网络登录。
5runlevel5.target, graphical.target多用户,图形化。通常为所有运行级别 3 的服务外加图形化登录。
6runlevel6.target, reboot.target重启
emergencyemergency.target紧急 Shell

改变运行级别:

sysvinit 命令systemd 命令备注
telinit 3systemctl 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设置在下一次启动时使用多用户运行级别。

 

相关推荐