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
.
切换到“文本模式”(你可以简单地在 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 引导条目来引导到特定目标一次。或者您可以为不同的目标添加多个引导条目。
您可以使用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)