如何在每天晚上10点运行一次cron?

236

我输入了:

* 22 * * * test > /dev/null

然而,我通过电子邮件收到通知,称它每分钟运行一次。我感到困惑,因为我认为这符合我的要求。


5
这个网站可以解释任何 Cron 时间表:https://crontab.guru/ - Bruno Finger
5个回答

442

我猜它每小时都在第22分钟运行一次。尝试以下方法,使其在每小时的第一分钟22秒运行:

0 22 * * * ....

虽然22点可能相对较安全,但请考虑此问题的第一个情况。 - Martin Thoma
@MartinThoma 首先尝试使用 man cron 命令,你应该能找到你需要的信息。 - Marc Simon
1
记得检查系统的日期,我曾经将crontab设置为在22点开始工作,但实际上它在23点开始,因为系统是UTC(所以对于我来说,系统的22点实际上是GMT的23点)。 - nnsense
我点赞了这个答案,但我不知道这个规则... 不管怎样,我想确认一下我的默默知识:D - rnrneverdies

189

以下是一些更多的例子

  • 每6个小时的46分钟运行一次:

    46 */6 * * *

  • 在凌晨2:10运行:

    10 2 * * *

  • 在凌晨3:15运行:

    15 3 * * *

  • 在凌晨4:20运行:

    20 4 * * *

  • 在凌晨5:31运行:

    31 5 * * *

  • 在下午5:31运行:

    31 17 * * *


1
了解 cron 语法的好例子 - Sohel Pathan

70

6
抱歉照片尺寸不好。 - jaypal singh

34

以下是我每次写新的计划任务时会查看的内容:

如果要从终端开始编辑,请输入:

 zee$ crontab -e

您将要添加到crontab文件中的内容:

0 22 * * 0  some-user /opt/somescript/to/run.sh

意思是什么:

[ 
+ user => 'some-user',      
+ minute => ‘0’,             <<= on top of the hour.
+ hour => '22',              <<= at 10 PM. Military time.
+ monthday => '*',           <<= Every day of the month*
+ month => '*',              <<= Every month*
+ weekday => ‘0’,            <<= Everyday (0 thru 6) = sunday thru saturday
] 

同时,检查您的计算机正在运行哪个shell,并相应地命名文件,否则它将无法执行。

可以使用echo $SHELLecho $0检查shell。

它可能是“Bourne shell (sh)”,“Bourne again shell (bash)”,“Korn shell (ksh)”等。


你的命令显示星期为0,但是你的解释中却显示为*。 - Frak

4
crontab的语法
* * * * * 

Minute(0-59) Hour(0-24) Day_of_month(1-31) Month(1-12) Day_of_week(0-6) Command_to_execute

你的语法
* 22 * * * test > /dev/null

您的工作将在每周、每月和每年的22:00执行。

在分钟位置添加选项(0-59)将使其在每周、每月和每年的22:00仅运行一次。

0 22 * * * command_to_execute 

来源 https://www.adminschoice.com/crontab-quick-reference

这是一个关于Crontab的快速参考指南。Crontab是一种在Linux和Unix操作系统上进行周期性任务调度的工具,本指南提供了Crontab各种命令和选项的详细说明和示例。

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