如何在 shell 脚本中识别最小时

如何在 shell 脚本中识别最小时

需要一些帮助来识别 shell 脚本中的最小时?我有一个 cron,它每 10 分钟运行一次并执行一个 shell 脚本,但我不希望这个脚本在整点运行。所以我试图通过检查最小时来跳过脚本的执行

答案1

一般来说,最好将调度决策留给 cron 或正在调度的事物之外的其他进程。

使用 cron 计划每 10 分钟运行一次脚本或代码,这样就可以避免在整点运行:

10,20,30,40,50 * * * * my-command-here

这比尝试让你的脚本检测它何时运行。也不会影响手动使用你的脚本。

根据您的 cron 实现,您可以可能使用

10-50/10 * * * * my-command-here

它将从整点 10 点到整点 50 点每十分钟运行一次作业(即,它将跳过整个小时)。

或者甚至只是

10/10 * * * * my-command-here

即,从整点十点到整点五十九点每十分钟一班。

您需要测试最后两个示例中的语法在您的系统上是否有效,我建议您阅读手册crontab(5)( man 5 crontab)。

答案2

为了回答您的问题,以下bash脚本将跳过“最小时”,但是拘萨罗南达的回答更有效 - 这是一个更好的答案。

#!/usr/bin/env bash

nowminute=$(date +%M)
topofhr="00"
if [ $nowminute == $topofhr ]; then exit 0; fi 

...

balance of your script

date +%M得到分钟从 的当前值开始date;之后进行比较,看看是否是“最小时”(00 分钟)。

相关内容