我已经设置了一个 systemd 计时器来在 Ubuntu 22.04 上每分钟触发一个服务,但我遇到了一个问题,即服务的执行时间在第一次运行后显着增加。该服务只是使用 /bin/echo 记录一些文本。详细信息如下:
服务文件(testA.service):
[Unit]
Description=Sample Service A
[Service]
ExecStart=/bin/echo "Hello from Service A"
定时器文件(testA.timer):
[Unit]
Description=1min timer
[Timer]
OnCalendar=*-*-* *:*:00
[Install]
WantedBy=timers.target
观察到的行为:
该服务的第一次执行在 6 秒内完成。随后的执行需要 17 秒。
系统日志:
Feb 16 10:47:06 test systemd[923]: Started Sample Service A.
Feb 16 10:47:06 test echo[2740609]: Hello from Service A
Feb 16 10:48:17 test echo[2740652]: Hello from Service A
Feb 16 10:48:17 test systemd[923]: Started Sample Service A.
Feb 16 10:49:17 test systemd[923]: Started Sample Service A.
Feb 16 10:49:17 test echo[2740691]: Hello from Service A
Feb 16 10:50:17 test systemd[923]: Started Sample Service A.
Feb 16 10:50:17 test echo[2740731]: Hello from Service A
另一个测试甚至更慢 - 58 秒:
Feb 19 13:43:58 test systemd[917]: Started Sample Service A.
Feb 19 13:43:58 test echo[119031]: Hello from Service A
系统详细信息:
Ubuntu 22.04.2 8 个处理器 8GB RAM 充足的磁盘空间 使用 htop 监控显示系统没有过载。
问题: 如何诊断和优化此 systemd 服务的执行时间以确保它始终快速完成?为什么第一次运行后执行时间会增加?
我已经检查了系统负载和磁盘空间等常见问题,但没有找到任何可以解释此行为的内容。
答案1
感谢@AlexD 的提示。添加选项AccuracySec=
计时器的神奇之处在于每次运行都能在正确的时间运行服务。