在Linux上每六个小时运行一个cron任务

148

我该如何每天每六个小时运行一次命令?

我尝试了以下方法,但无效:

/6 * * * * *  mycommand

7
可能是如何每2小时运行crontab的重复问题。 - Cas
2
每6小时怎么样 * */6 * * * - madalinivascu
8个回答

341

你忘了一个*,并且你有太多的字段。现在是你需要关注的时候。

0 */6 * * * /path/to/mycommand

这意味着从0开始,每隔六个小时执行一次,即在第0、6、12和18小时执行,您可以将其表示为

0 0,6,12,18 * * * /path/to/mycommand

谢谢您的回复,这是每6小时从什么时间开始?是在创建cron的时间吗? - Gandalf StormCrow
谢谢。所以,如果我想要在 15:00 开始每隔 6 小时运行它,那么就应该是 15 15,23,05,11 * * * /path/to/mycommand - Gandalf StormCrow
6
是的,尽管第一个字段表示分钟,你已将其设置为15,这意味着它将在15:15、23:15、05:15和11:15运行。(顺便说一句,并不是每6个小时运行一次,也许你的意思是 0 15,21,3,9 * * *)。 - nos

7

由于cron仅在极度简化的环境下运行,您应该包括命令的路径。您将无法获得交互式shell会话中拥有的所有环境变量。

最好指定脚本/二进制文件的绝对路径,或在crontab本身中定义PATH。为了帮助调试任何问题,我还会将stdout / err重定向到日志文件。


1
谢谢回复,但是如果我在我的sh文件中声明环境变量,例如export variable=something,我仍然可以在同一个脚本中使用它们吗?而且我在脚本中经常使用date命令。 - Gandalf StormCrow
@Gandalf - 是的。你可以在脚本内定义所有环境变量。这是一个好主意,因为这意味着你的脚本是独立的,并与你可能想要在cron中运行的其他东西隔离开来。 - Brian Agnew

5
0 */6 * * * command

这将是表示每天6小时的完美方式。

您的命令输入了六分钟!


3
我很肯定这是因为它并没有为已存在的被接受答案增添任何内容,而那个答案是在4年前写的。 - Adinia

5
请注意以下语法:
* */6 * * *

这意味着每6小时60次(每分钟一次),而不是每6小时一次。

1
你需要使用 *。
0 */6 * * * /path/to/mycommand

此外,您还可以参考https://crontab.guru/,以帮助您更好地进行调度...

0
0 */6 * * *

每6小时执行一次的crontab是常用的cron计划表。


5
这个回答有什么其他回答没有的内容?@rkoots已经提到了这个确切的命令。 - Blue
“常用”的意思是什么?你能详细解释一下吗? - Peter Mortensen

0

-3

尝试:

0 */6 * * * command

*必须


1
这里的最后一行没有太多意义。您是否考虑扩展它? - halfer
1
看起来答案不完整。 - ajayramesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接