如何在 Ubuntu 中禁用 GUI

cus*_*cup 10 gnome gui xorg virtualbox tty

假设我想复制 Ubuntu Server 并且没有运行 GUI,我该怎么做才能做到这一点?从 tty 会话运行 htop/top 后,我看到 gnome 和 xorg 仍在运行并占用了相当多的内存(我使用的是 VirtualBox 并为 Ubuntu 分配了 1024MB)。为了释放资源,我希望能够随时禁用/停止 gnome 和 Xorg。我认为从 Xorg 切换到 tty 并保持进程运行没有任何意义。但是,我希望能够在离开 tty 时重新启用/启动必要的文件。我不希望事情被永久禁用,尽管有这个选项会很有用/

有什么帮助吗?谢谢

dan*_*zel 12

您可以使用systemctl“隔离”目标,这在某种程度上类似于切换运行级别。这里感兴趣的目标是

  • graphical.target

  • multi-user.target

令人困惑的是,它graphical.target是 Ubuntu 桌面和服务器中的默认目标,但由于服务器中没有安装显示管理器,它本质上与multi-user.target.

在 Ubuntu 运行时切换

切换到“文本模式”(你可以简单地在 eg 中运行它gnome-terminal):

sudo systemctl isolate multi-user.target
Run Code Online (Sandbox Code Playgroud)

切换到“图形模式”

sudo systemctl isolate graphical.target
Run Code Online (Sandbox Code Playgroud)

设置启动目标

您可以设置启动后达到的默认目标(在重启后仍然存在),例如:

sudo systemctl set-default multi-user.target
Run Code Online (Sandbox Code Playgroud)

您还可以使用内核参数设置目标systemd.unit,例如

systemd.unit=multi-user.target
Run Code Online (Sandbox Code Playgroud)

内核参数优先于默认目标。

这可用于通过在引导前编辑 grub 引导条目来引导到特定目标一次。或者您可以为不同的目标添加多个引导条目。

  • @CarstenS `isolate` 是短暂的;使其持久使用`set-default` (2认同)

NGR*_*des 6

您可以使用systemctl(systemd 系统和服务管理器)来控制您的显示管理器。在 Ubuntu 的情况下,这是 GDM - Gnome 显示管理器、SDDM 和 LightDM 是其他常见的显示管理器。

要从命令行检查状态:

sudo systemctl status gdm
Run Code Online (Sandbox Code Playgroud)

停止:

sudo systemctl stop gdm
Run Code Online (Sandbox Code Playgroud)

开始:

sudo systemctl start gdm
Run Code Online (Sandbox Code Playgroud)

禁用(防止在系统启动时加载):

sudo systemctl disable gdm
Run Code Online (Sandbox Code Playgroud)

启用(在系统启动时加载):

sudo systemctl enable gdm
Run Code Online (Sandbox Code Playgroud)