如何每1小时1分钟设置一次crontab

时间:2016-12-11 01:44:33

标签: linux unix crontab schedule

我想每1小时1分钟安排一次命令。例如,如果第一个命令在01:01 pm执行,则下一个命令将在01:02 PM执行;命令执行之间的时间是1小时1分钟。

我尝试使用

*/1 */1 * * *

但它每分钟运行一次。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

crontab中没有办法安排每61分钟运行一次(BTW,这是一件很奇怪的事情),但是你可以间接地去做。

您可以安排作业每分钟运行一次:

* * * * * wrapper_script

其中wrapper_script仅在当前分钟是61的倍数时调用所需的命令,如下所示:

#!/bin/bash

second=$(date +%s)
minute=$((second / 60)) 
remainder=$((minute % 61))
if [[ $remainder == 0 ]] ; then
    your_command
fi

这将$minute设置为自Unix纪元1970-01-01 00:00:00 UTC以来的分钟数。您可以在比较中使用0以外的值来调整命令的运行时间。

假设您希望它每61分钟运行一次(这就是您所要求的)。但是如果你想在每日循环中重复,那么它在00:00,01:01,...,23:23运行,然后在第二天00:00运行,你可以直接在crontab中执行:

 0  0 * * * your_command
 0  0 * * * your_command 
 1  1 * * * your_command 
 2  2 * * * your_command 
# ...
21 21 * * * your_command
22 22 * * * your_command 
23 23 * * * your_command

答案 1 :(得分:0)

您可以使用此方法告诉它在cron作业后每61分钟运行一次。

while true
do
  # do stuff here every 61 minutes
  sleep 61m
done

另一种选择:

  

Cron可以轻松地每小时跑步,但是61分钟很难实现。

     

常规方法包括使用睡眠命令或其他各种方法   脚本本身精心设计的方法每隔61分钟启动一次。

     

一个更简单的方法是使用cron的堂兄,at命令。在   命令将运行一个文件并运行里面的所有命令,所以   你只需要将命令放在一个文件中,每行一个,然后添加   这行到文件的底部:

at now + 61 minutes < file
     

命令可以是您想要使用的任何类型的单行。

     

这是一个例子。将此文件命名为foo并启动执行   第一次,你可以简单地运行:sh foo

date >> ~/foo_out
cd ~/tmp && rm *
at now + 61 minutes < ~/foo
     

这会将日期和时间输出到〜/ foo_out然后移动到tmp   目录和清理文件,然后告诉at命令运行自己   再次在61分钟后,将再次运行at命令   执行其余的工作。