2016-10-11 8 views
2

crontab設定の作成中に興味深いものが見つかりました。Crontab設定 - 55分ごとにスクリプトを実行

私は、このコマンドを使用:

crontab -e 

と、この行を埋める:

*/55 * * * * export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null 

私の考えでは55分ごとにscript.sh開始スケジューラを作成しました。

しかし、このスクリプトは、(例えば)、この回で実行される:

08:55, 09:00, 09:05, 09:55, 10:00, 10:05, ... 

と私は理由を知りません。

誰かが私にそれを説明できますか?

+0

これは次のようになります: '55 * * * * export DISPLAY =:0 &&/home/user/Documents/scriptです。sh $ 2>/dev/null' – Hackerman

+0

@Hackermanそれは「毎時間の55分」を意味するでしょう。私は、OPが "05:55、06:50、07:45"を求めていると思っています。つまり、毎時55分ではなく、55分ごとです。 1月、あなたは明確にしてもらえますか? – HeyZiko

答えて

2

このようなスクリプトを置き換えると正常に動作します。

*/5 * * * * [ $(($(date +%s)/60 % 55)) -eq 0 ] && export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null 

分 - 時 - 日 - 月 - 年

* any value 
, value list separator 
- range of values 
/ step values 
0

ので、5分ごとに、この行います。1. 1. 1970年からの経過秒

数は60で割っただろうに=どのように多くの 1476201056 ... 二分

エコー$(日付+%sの)

モジュロの結果が

エコー$(($(日付+%S)/ 60)) 24603351 ...

それは分

の数にモジュロ使用します。その後0の場合、TRUE値を送信します。

そして、それは典型的な論理

[$((...))-eq 0] & &輸出DISPLAY ..です& & ... /スクリプト.sh

ありがとう。

それは本当に便利です:)

0

別のオプションは、ジョブ「での」自己複製です。 cronに勝る利点は、あまり明白ではなく、X分ごとではなく、最後のジョブが完了してからX分後に開始する必要がある場合です。したがって、スクリプトには、終了する前に新しい 'at'ジョブを作成するための行だけが含まれます。何かが好きです:

echo "/full/path/to/my/script > /root/myScript.at.log" | at now + X minutes 
関連する問題