推迟一些守护进程的启动,直到启动时磁盘空闲之后

推迟一些守护进程的启动,直到启动时磁盘空闲之后

背景:我有一台运行 Debian 测试/不稳定并使用 systemd 启动的笔记本电脑。它有一个普通的笔记本电脑磁性硬盘驱动器(不是 SSD)。该机器设置为开机时自动登录,因此它从系统启动直接进入桌面加载 - 这是 KDE 5,并不完全是轻量级的。

我想将一些守护进程设置为仅在桌面完全加载后启动(例如,PostgreSQL、exim、apache 等),以便更快地获得可用的桌面。可以相当容易地检测到“桌面已满”:磁盘空闲。

问题:是否有一些 systemd 功能可以仅在桌面完全启动后启动系统守护进程?我浏览了文档,之后似乎没有任何内容graphical.target。我觉得我一定缺少一些东西,因为它具有 systemd 的所有功能。

我想到了一些事情:

  • PostgreSQL 至少不支持套接字激活,所以这不是一个选项。
  • Type=idle服务,但听起来可能会等到sddm启动,但不会等到桌面加载。
  • 编写一个所需的服务,graphical.target每 10 秒检查一次磁盘活动量,如果没有,则使用 systemctl 启动一个local-idle.target或类似的服务(然后存在)。试图避免这种情况。

答案1

首先,有没有这样的事件因为“桌面已完全启动”。没有办法以通用的方式检测这种情况。

您将如何正式定义它? DE自身的自动启动机制(/etc/xdg/autostart~/.config/autostart)不受systemd控制;它无法知道 DE 是否已完成启动。

此外,磁盘可能永远不会闲置。如果你匆忙启动系统并立即开始做某事怎么办?

所以,你必须决定做什么通过“桌面完全启动”来理解,然后只需编写一个脚本来检测这种情况并使用所有繁重的服务启动另一个目标。所以这实际上是第三种选择。

相关内容