最小系统服务(单元)和默认目标

最小系统服务(单元)和默认目标

请原谅我的问题可能有点幼稚。我从事 Windows 开发和 IT 管理工作 30 多年,但很少使用 Linux。我有一台老款笔记本电脑,只有 4GB 内存和 4 核 @ 2.53Ghz... 我最初在 14 年前安装了 Ubuntu,它一直很稳定,我一直跟进发行版升级,从 v19 开始,我注意到性能和稳定性受到了影响。目前是 21.04 GNOME 3.38.5/X11

我并不经常使用它,只是用 VSCode 进行应用程序开发。我不需要任何花哨的东西,例如(Web Srvr、邮件、打印等)...所以...我一直在阅读有关启动顺序的信息,并查看目标以及单元在启动过程中如何启动,因为我看到正在运行我不需要的进程,例如电子邮件和日历等,以及大量的 gnome 进程。我正试图将其精简为最小的图形用户界面。

查看 graphic.target 时,它显示需要 multi-user.target。必须这样吗?该目标充满了依赖项。我只有一个用户,不需要切换用户。我不想从最小系统安装 CD 重新安装。我的开发环境已设置。

减少我的开销和删除我不需要的服务/设备的最佳方法是什么?

答案1

查看 graphic.target 时,它显示需要 multi-user.target。必须这样吗?

是的,这是 Linux 的核心功能。systemd 是这样实现的:

 $  ls -al /lib/systemd/system/runlevel*
/lib/systemd/system/runlevel0.target -> poweroff.target
/lib/systemd/system/runlevel1.target -> rescue.target
/lib/systemd/system/runlevel2.target -> multi-user.target
/lib/systemd/system/runlevel3.target -> multi-user.target
/lib/systemd/system/runlevel4.target -> multi-user.target
/lib/systemd/system/runlevel5.target -> graphical.target
/lib/systemd/system/runlevel6.target -> reboot.target

目标是针对分组单元的,不会占用启动过程的时间。目标也与正在运行的系统无关。这些目标也不会影响性能。服务会影响启动速度;因此这些目标会增加进入桌面所需的时间。

以“.target”结尾的单元配置文件编码了有关 systemd 目标单元的信息,用于对单元进行分组以及作为启动期间的已知同步点。

  • 单个用户目标 = 救援。目标 = 救援模式。
  • multi-user.target 是设置多用户和控制台访问的非图形部分。基本上是“服务器”版本
  • graphic.target 是桌面。

如果没有它,那就不是 Linux :)


我只有一个用户,无需切换用户

您的机器只有 1 个实际用户,但您的系统上却有很多用户 ;) 但同样:这与性能或改进性能无关。除非使用,否则所有这些都处于休眠状态。


现在来讨论主要问题。

减少我的开销和删除我不需要的服务/设备的最佳方法是什么?

  • 在命令行上查看top性能、功耗、CPU 使用率等,看看是否有任何突出的内容。htop(需要安装)以获得相同信息的良好布局。
  • 删除第三方驱动程序或打开显卡的省电模式
  • 删除不需要的活动服务
  • 清除孤立库deborphan

列出所有活动服务:

systemctl list-units --type=service --state=activ   

并停止服务:

sudo systemctl disable {service}

但这将会保留已安装的软件。

我看到了正在运行的不需要的进程,比如电子邮件和日历等,以及一大堆 gnome 进程

每个都会有一个包名。从“软件”中删除您不需要的软件,服务也会被删除。不过,删除它们都不会提高速度或性能:不使用时对性能的影响接近于零。所有这些都与桌面管理器绑定并使用相同的服务;如果不删除桌面管理器,您就无法删除那个。

仅配备 4Gb 内存和 4 核 @ 2.53Ghz

考虑使用要求较少的版本;例如 Xubuntu 或 Lubuntu。

我不想从最小系统安装 CD 重新安装。我的开发环境已设置。

因此,请准备好您的设置以承受重新安装。将您所做的所有更改放在一个文本文件中,以便您可以在安装后执行它。将所有个人文件放在单独的分区上,以便您可以在安装期间挂载它。使用源代码中的软件,以便您可以将其安装在该分区上。在您的文本文件中放置一个符号链接,使其连接到 /bin 或 /usr/bin 中的二进制文件。这需要付出努力,但您只需这样做一次。

相关内容