我想每1小时1分钟安排一次命令。例如,如果第一个命令在01:01 pm执行,则下一个命令将在01:02 PM执行;命令执行之间的时间是1小时1分钟。
我尝试使用
*/1 */1 * * *
但它每分钟运行一次。任何人都可以帮助我吗?
答案 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命令 执行其余的工作。