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

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

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

/etc/init/rc-sysinit.conf

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

如何更改运行级别?我不想通过 grub 或其他解决方法机制来覆盖它。而且我并不是在寻找如何具体禁用 X。

我在网上找到的所有说明都有些旧了,16.04 有什么变化吗?

答案1

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 中的目标的更多信息。

相关内容