如何定义两个 systemd 单元,使得它们的停止顺序与启动顺序不同?
出于性能问题,我让单元 A 和 B 同时启动(它们都在 systemd 套接字之后启动),但单元 A 不能在单元 B 之前停止
答案1
不是。如果 B 包含After=A
,则 A 先开始,B 先停止。
服务管理器在启动 A 时等待什么取决于类型。参考systemd.service 手册。具体来说,simple
甚至不等待 exec(),而是forking
等待父进程退出。
如果你追求的是性能,那么自然有多种竞争工具可用于对单元的启动进行计时,systemd-analyze 和 bootchart. 确定您可以容忍的最大启动时间,然后测量它实际需要多长时间。
为了进一步改进,请详细分析此事并查看其代码。