![以与启动不同的顺序停止 systemd 单元](https://linux22.com/image/736523/%E4%BB%A5%E4%B8%8E%E5%90%AF%E5%8A%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%81%9C%E6%AD%A2%20systemd%20%E5%8D%95%E5%85%83.png)
如何定义两个 systemd 单元,使得它们的停止顺序与启动顺序不同?
出于性能问题,我让单元 A 和 B 同时启动(它们都在 systemd 套接字之后启动),但单元 A 不能在单元 B 之前停止
答案1
不是。如果 B 包含After=A
,则 A 先开始,B 先停止。
服务管理器在启动 A 时等待什么取决于类型。参考systemd.service 手册。具体来说,simple
甚至不等待 exec(),而是forking
等待父进程退出。
如果你追求的是性能,那么自然有多种竞争工具可用于对单元的启动进行计时,systemd-analyze 和 bootchart. 确定您可以容忍的最大启动时间,然后测量它实际需要多长时间。
为了进一步改进,请详细分析此事并查看其代码。