需要一些帮助来识别 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 分钟)。