2016-08-17 1854 views
1

我创建了一个cron作业,每天晚上11点在随机值(例如10分钟)内运行一个命令。我在网上找到了这个例子,但我找不到参考。Crontab - 运行命令随机时间

我有什么不工作

SHELL=/bin/bash 
PATH=/usr/bin:$PATH 
LOCAL_CONFIG_DIR=/user/folder 
    0 11 * * * sleep $(($RANDOM \% 10))m && python /user/folder/file.py 

下工作,但是没有随机10分钟运行:如果我的问题是与$Random

SHELL=/bin/bash 
PATH=/usr/bin:$PATH 
LOCAL_CONFIG_DIR=/user/folder 

0 11 * * * python /user/folder/file.py 

奇迹?

+1

'cron'任务是在一个有限内建和环境的“shell”中执行的。可能'$ RANDOM'不可用,甚至可能是'$((')是一个问题。一种解决方案是将整个任务定义,包括随机定时位,放在单独的'bash'脚本中,然后将crontab脚本 –

+0

在被调用的脚本中实现随机性要容易得多,而不是在cron内部做到这一点,有些crons确实有办法延迟执行的次数,但我不认为这就是你想要。 –

+0

我可能会尝试执行bash脚本来查看是否有效。 –

回答

2

我对bash不太满意,但是你肯定可以在你的python scipt中实现睡眠。

import random 
import time 
time.sleep(random.randint(1, 10)*60) 

#Your actual script goes here 
+0

Ya会工作。 –