2016-08-17 122 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會工作。 –