我有几个喜欢定期运行的任务:
- 推送所有 git 仓库(每天 5 次)
- 对文件进行病毒扫描(每 90 天)
- 从服务器下载备份(每天一次)
对于所有这些任务,我都有一个脚本。为了编排这些,我编写了一个名为的脚本maintenance
,它是我的一部分维修工程。这脚本的当前版本。
它有一个用于任务的 JSON 配置文件:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
我想用一些现有的任务调度程序替换我的脚本,因为我想减少系统上的自定义软件。但是,我有以下要求:
- 使用电池运行时请勿运行。
- 提供一些可见的状态。那甚至可以通过
kdialog
。 - 一次仅运行一项磁盘繁重的任务。
该maintenance
脚本会处理这个问题,只要我有足够的时间让任务运行,我就可以运行它。如果没有,我可以中止所有任务并稍后重新启动。
普通的 cron 不太好,因为当我的计算机关闭时它不会工作。 anacron 可能会更好,但我认为它会在启动后立即运行所有任务。另外,如果我碰巧需要虚拟机磁盘,我该如何告诉调度程序停止?
是否有一些现有的程序,或者我应该继续使用我的程序?
答案1
如果我碰巧需要磁盘用于虚拟机,我将如何告诉调度程序停止?
Cron 和 anacron(通常)是守护进程服务。您可以像停止和启动任何其他服务一样停止和启动它们。
cron 不太好,因为当我的计算机关闭时它不会工作
这是一个很难绕过的标准。当计算机关闭时,您希望软件执行什么操作?
anacron 可能会更好,但我认为它会在启动后立即运行所有任务。
显然。不过,这里有一个想法:开始和停止anacron
以cron
.
一次仅运行一项磁盘繁重任务
Anacron 有这个选项:
-s
串行执行作业。 Anacron 在前一个作业完成之前不会启动新作业。
这只是让你实现这两个:
- 使用电池运行时请勿运行。
- 提供一些可见的状态。甚至可以通过 kdialog 来实现。
第一个可以通过让 cron 在启动 anacron 之前检查电池状态来完成。第二个可以通过多种方式完成。你自己已经推荐了一个。