Answers:
在SystemD(aemon)中,运行级别公开为“目标”。这个概念仍然存在,但是根据您的需求产生期望结果的工作流程是不同的。
附件应澄清此问题。
如何更改当前运行级别?
$ systemctl isolate runlevelX.target
如何更改下次启动的默认运行级别?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGET DESTINATION
-s
创建符号链接-f
删除现有的目标文件或(如@centimane建议)只需使用“ blessed” systemd
命令:
systemctl set-default [target name].target
如何确定当前运行水平?
$ systemctl list-units --type=target
systemctl set-default [target name].target
而不是手动创建链接。
不会。因为系统化的人员自己重复两次,一次在他们的telinit
手册中,一次在他们的runlevel
手册中,运行级别“过时”。您可以忘记运行级别。
这些东西实际上在systemd中根本不存在,除了一些兼容性垫片。
default.target
(和a graphical.target
和a 之一或两者multi-user.target
),a rescue.target
或an emergency.target
。关闭过程涉及a shutdown.target
,a reboot.target
,a halt.target
或a poweroff.target
。 引导或关闭过程均不涉及运行级目标。telinit
人们可能会认为该命令使用兼容性符号链接来映射其命令行参数,但该命令也不会这样做。有一个在源代码的硬连线的表telinit
程序,并且该号码2
,3
,4
,和5
作为参数的命令被硬连线到映射到multi-user.target
和graphical.target
。systemd-update-utmp
还有一个内部硬接线表。rc
,而不与van Smoorenburg 兼容init
。systemd-update-utmp
命令,在激活的项内部操作的状态rescue.target
,multi-user.target
和graphical.target
。systemd-sysv-generator
systemd的向后兼容服务单元生成器将/etc/rc[234].d
目录合并为生成的服务单元中的一个Wanted-By
关系multi-user.target
。在生成的服务单元中没有运行级别的实际参考。(几年前曾经有过,但是系统化的人们发现这是错误的,因为在其他任何地方都没有引用过它们。)如果一个人是在问他的Arch Linux的是建立一个systemd系统的用户“ 为什么`初始化0`导致‘过剩参数’上拱安装? ”,一个甚至没有获得兼容性垫片,和这样的命令作为init 0
结果,在“本机” systemd行为,这是抱怨命令已被不正确地调用。
runlevel
。系统手册页。Freedesktop.org。telinit
。系统手册页。Freedesktop.org。bootup
。系统手册页。Freedesktop.org。/etc/inittab
已经成为过去。。经常给出答案。非常感谢。因此,如果我正确理解:
例如:
ls -ll /usr/lib/systemd/system/runlevel*.target
输出:
/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target
如您所见,运行级别的概念确实存在,但是由于runlevel.target文件实际上不是“真实”文件而是与新的,现代的,命名更好的文件方案的软链接,因此它已经过时了。 systemd喜欢称它们为“目标”。
因此,如果您想做某事telinit 5
,就像这样:systemctl isolate runlevel5.target
它与:相同systemctl isolate graphical.target
(我认为建议)。
以防万一您有兴趣了解所有可能的目标:
ls /usr/lib/systemd/system/*.target
ls -ll
等于ls -l
。您可能想养成使用的习惯ls -ld
。
telinit 0
/ telinit 6
仍然有效。由于这有助于迁移,因此我认为大多数发行版仍然看不到放弃支持的理由。isolate
显然希望模仿运行级别的工作原理,但是存在各种恶性情况。我强烈建议您忽略isolate runlevel5.target
甚至所有的指示isolate graphical.target
。边缘案例示例:github.com/systemd/systemd/issues/6505
systemd引入了目标,作为sysV init系统中运行级别的对应对象。系统开发人员使其几乎与大多数sysV脚本兼容。也会发生同样的情况
telinit <runlevel>
。这被翻译成systemd等效项。
例如telinit 0
关闭机器电源。systemd具有poweroff.target与runlevel 0相同。因此telinit 0
由systemd转换为激活poweroff.target。
但是sytemd和sysV初始化系统存在一些兼容性问题-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities。