#run-command #timezone #times #hours #day #run-time #timespec

app during

仅在一天中的特定时间运行命令的实用工具

2 个版本

0.1.1 2024 年 2 月 3 日
0.1.0 2024 年 1 月 31 日

#11 in #hours

MIT 协议

10KB
149 (不包括注释)

during

仅在特定时间运行命令的实用工具包装器

用法

需要一个指定允许运行作业时间的 timespec。timespec 的格式是一组以逗号分隔的字符串,例如 DDD[HH:MM-HH:MM(,HH:MM-HH:MM)]。D 是一个数字,对应于 ISO 8601 的星期几(1-7,1 = 星期一,7 = 星期日),而方括号内是作业可以在指定日运行的小时/分钟范围。

默认情况下,使用您计算机的本地时间,但也可以指定任何时区。

例如,此调用允许命令 ./run.sh 在工作日 5pm 到 9pm PT 之外的时间运行,或在周末的任何时间运行。

during --tz US/Pacific --timespec 12345[00:00-17:00,21:00-00:00],67[00:00-00:00] ./run.sh

注意

如果范围以 00:00 结束,则表示为下一午夜。结束时间为 23:59 会导致作业在一天的最后一分钟终止。

范围是累加的。如果当前时间在任一给定范围内,则允许作业运行。

但为什么呢...?

在高峰电价期间,关闭长时间运行或耗电的作业,如加密货币挖掘或蛋白质折叠,可能会有所帮助。

大多数现有解决方案似乎都涉及使用类似 systemd 或 cron 之类的工具在特定时间向进程发送信号以停止或启动进程,但未包括防止服务在允许时间之外启动的逻辑。

依赖项

~4.5–6.5MB
~110K SLoC