17

72分ごとにcronジョブを実行するにはどうすればよいですか?それとも、それほどきれいではない数ですか?

4

7 に答える 7

43

ジョブは間隔ベースではなく時間ベースで実行されるためcron、驚くほど簡単な方法はありません。ただし、少しハックですcrontabが、共通点が見つかるまで複数の行を設定できます。ジョブを 72 分ごとに実行するため、次の時間に実行する必要があります。

  • 00:00
  • 01:12
  • 02:24
  • 03:36
  • 04:48
  • 06:00
  • 07:12
  • ...

ご覧のとおり、パターンは 5 つのジョブで 6 時間ごとに繰り返されます。したがって、次の 5 行が含まれますcrontab

0 0,6,12,18 * * * コマンド
12 1,7,13,19 * * * コマンド
24 2,8,14,20 * * * コマンド
36 3,9,15,21 * * * コマンド
48 4,10,16,22 * * * コマンド

もちろん、もう 1 つのオプションは、停止するまで希望の時間実行およびスリープするラッパー デーモンまたはシェル スクリプトを作成することです。

于 2009-04-14T00:44:38.133 に答える
25

at(man at)で使用します。アプリまたは起動スクリプトに72分後の起動時間を計算させ、動作を開始する前に再度実行するようにスケジュールを設定します。

WindowsXPとビスタでも利用できます。

gnu/linuxの例を次に示します。at-fcommand.shnow+72分

于 2009-04-14T00:36:54.860 に答える
4

クローンを使用しないでください...

#!/bin/sh
while [ true ] 
do
     sleep 4320
     echo "Put your program here" &
done
于 2009-04-23T23:49:59.680 に答える
4

毎分 cron をトリガーし、スクリプトが 72 分以上前に実行された場合は、スクリプトをすぐに終了させるというアプローチをいつでも取ることができます。

于 2009-04-14T00:45:45.277 に答える
3

cron/crontabから直接これを行うことはできません。

cronジョブは、特定の間隔ではなく、特定のスケジュールで実行されます。

1つの代替案は、深夜1:12、2:24、3:36、...に実行し、深夜にほぼヒットするようにそれを伸ばすことによって、「72分ごと」に近いスケジュールを作成することです。crontabファイルでは、これらすべての時間を実行時間として指定できます。

もう1つの方法は、別のアプリケーションでスケジューリングを処理し、アプリケーションを起動することです。

于 2009-04-14T00:35:26.347 に答える
2

これには正確に 20 個のタスクを設定する必要があります。つまり、1 つを 00:00 に設定し、次のタスクを 01:12 に、次のタスクを 02:24 に設定するなどです。

20 回の反復で 1 日になります。

残念ながら、これが唯一の方法です。cron タスクは実行されるのではなく、事前に固定されたスケジュールで設定されているためです。たとえば、「X 分後に最後のタスクが実行された」などです。

于 2009-04-14T00:42:10.620 に答える
-6

ええと、これがかなり遅れていることは承知していますが、スケジュールの問題を調べていて、この質問を見ました。

crontabでこれを行うだけです

*/72 * * * * /home/script.sh

于 2009-08-04T15:35:19.650 に答える