如何更改systemd上的运行级别?


27

很简单,我正在尝试更改运行级别。我在网上找到的所有内容都指向位于以下位置的文件:

/etc/init/rc-sysinit.conf

在这里,我尝试将“ DEFAULT_RUNLEVEL”更改为3或其他任何值,并且没有区别(原始值为2,也没有太大意义)。无论如何,我的机器完全启动,当我检查运行级别命令时,每次都会看到“ N 5”作为结果。

如何更改运行级别?我宁愿不通过grub或其他解决方法覆盖它。而且我不是在寻找如何专门禁用X的方法。

我在网上找到的所有说明都有些旧,16.04是否有所更改?


那么,您是要在引导后手动更改它还是每次都自动引导到另一个运行级别?
Byte Commander

每次自动。它是用ubuntu桌面设置的,但是现在我想降低运行级别,并将其放在某个角落。
2013年

实际上,为什么要更改运行级别?您是否只想引导到终端界面而不是加载桌面?在那种情况下,您应该在引导时修改标准目标systemd的负载并添加“文本”内核选项。
字节指挥官

4
可能是因为从15.10开始,Ubuntu使用systemd而不是,upstart而您正在谈论的文件是for upstart。如果您阅读更老的文章,您也会找到老方法init。但是systemd,只需使用sudo systemctl start graphical.target和即可在GUI模式和文本模式之间切换sudo systemctl start multi-user.target
字节指挥官

5
致所有评论者这是一个有效的问题!有IS的方式使用来改变运行级别(无论它被称为“运行级别”或“目标”)systemctl isolate
罗恩

Answers:


50

Ubuntu 16.04使用systemd而不是init,因此runlevels术语替换了的概念targets。因此,在基于init的运行级别和基于systemd的目标之间确实存在映射:

   Mapping between runlevels and systemd targets
   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘

现在,只需在16.04中更改“运行级别”,您可以使用例如:

sudo systemctl isolate multi-user.target

要将其设置为默认的“运行级别”,可以使用:

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

man systemctl

   isolate NAME
       Start the unit specified on the command line and its dependencies and stop all others. If
       a unit name with no extension is given, an extension of ".target" will be assumed.

       This is similar to changing the runlevel in a traditional init system. The isolate command
       will immediately stop processes that are not enabled in the new unit, possibly including
       the graphical environment or terminal you are currently using

也可以看看man systemd.special以了解有关systemd中目标的更多信息。


嗨@罗恩,您的回答很棒,我是为了安装Nvidia官方驱动程序而做的,但现在我的屏幕除了蓝屏外什么都不显示。我怎样才能解决这个问题 ?在此先感谢您的帮助。
拉斐尔·特纳

从Grub进入恢复模式,然后以root身份恢复到先前的运行级别。
LottaLava

是的 我只是在评论那些发出从gui boot到文本模式的极好命令的家伙根本不在乎告诉我们如何从text-boot返回到gui boot。
nyxee

因此,请注意,我sudo systemctl set-default multi-user.target在GUI模式下运行,重新启动后出现黑屏,这是GUI无法启动的一个好兆头,因此我按Ctrl-Alt-F3Enter进入Runlevel 3,完成了我需要的操作(安装了NVIDIA- CUDA),运行sudo systemctl set-default graphical.target并返回到GUI登录屏幕。但是,我现在无法登录。这是还原到先前运行级别的正确方法吗?
nyxee

2
@nyxee-是的,sudo systemctl set-default graphical.target是还原到GUI桌面环境的正确方法。您的登录失败听起来与在运行级别之间切换无关-听起来更像是nVidia 引导循环问题。为了找到肯定,下降回落到runlevel 3,取出的nVidia和CUDA驱动程序,从回购,设置默认安装nVidia驱动到runlevel 5(graphical.target),然后重新启动,看看你能不能登录。
安迪·特弗(Andy Turfer)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.