暂时停止所有 systemd 计时器单元

暂时停止所有 systemd 计时器单元

我正在编写一个脚本来为我的 Linux 系统进行基准测试做好准备。除此之外,我想停止所有 systemd 计时器单元,然后恢复此操作。

简而言之,我需要相当于 service crond stop/start

到目前为止我所发现的就是systemctl list-timers手动停止每个,然后手动启动每个。您知道更好、更通用的解决方案吗?

答案1

要停止所有当前正在运行的计时器,您可以简单地使用:

systemctl stop '*.timer'

要稍后重新启动计时器,您必须记住当时正在运行哪些计时器。

timers=$(systemctl list-units --type=timer --state=active --no-legend | awk '{print $1}')
systemctl stop $timers
# ...
systemctl start $timers

(显然单位的模式与非活动单位不匹配,所以systemctl start '*.timer'不起作用。)

答案2

好问题。我在man systemctl或中没有看到此选项man systemd.timer

在相对干净的系统上,在基准测试期间可能只有少量运行。因此,在第一次运行systemctl stop命令后,下次将停止/启动命令保存在 bash 脚本中,并以这种方式自动执行停止/启动命令。

相关内容