手动激活时延迟运行 systemd 作业,而不是在启动时运行

手动激活时延迟运行 systemd 作业,而不是在启动时运行

我正在尝试设置一个 systemd 作业,使其在特定激活后延迟运行一次。我不希望它在启动时运行。我曾以为以下计时器文件可以解决问题:

[Unit]
Description=Tests whether onactivesec runs at boot

[Timer]
OnActiveSec=2min
Persistent=false

[Install]
WantedBy=timers.target

现在,它可以完成我需要它做的事情:如果我手动激活它,其关联的服务文件将在 2 分钟后运行。但是,它也会在计算机启动时触发,因此服务文件也会在启动后 2 分钟运行。

有没有办法调整它,以便它在特定激活时延迟运行但不在启动时运行?

答案1

systemd 定时器单元旨在定期运行服务单元,而定期包括“每次启动过程后”。

为您提供两种可能的解决方案:

  • 运行后停用该单元,这将阻止它在下次重新启动/系统启动时运行。
  • 放弃计时器单元并向服务单元添加指令TimeoutStartSec=125ExecStartPre=/bin/sleep 120并使单元在ExecStart运行指令之前休眠 120 秒。该TimeoutStartSec指令是必要的,因为当实际要执行的命令/程序未在 90 秒内启动时,服务单元将被 systemd 终止。

相关内容