2009-04-01 5 views

答えて

-1

あなたは、特定の間隔で実行されるのcrontabを生成するためにこれを使用することができます。

http://www.robertplank.com/cron/

またはこの

http://www.webmaster-toolkit.com/cron-generator.shtml

一つの解決策は、セットアップに6 crons、1になります毎月、毎月午前7時にそれぞれ実行されます。

これはおそらく最も簡単な方法ですが、次はスクリプトを作成することです。

-1

いいえ、あなたはそれを行うことはできません。

cronフィールドは、分、時、日、月、曜日の値をそれぞれ保持します。 crontabのフォーマットは範囲を受け入れないよう

10 5 10 * * means run at 5:10 on every 10th of every month. 

10 5 * 12 * means run at 5:10 on every day in december 

10 5 * * 1 means run at 5:10 every Monday 

あなたは、それが特定の数ヶ月のシリーズ上で実行することができます。 4月から12月は、その月のフィールドの場合は4-12になります。しかし、これは2009年に限られているというあなたの希望を考慮していません。

cronjobの開始日と終了日を設定する仕組みはありません。これはもちろん、これをスクリプト化することができます。 cronjobを毎日走らせ、現在の日付を30/12より前にチェックする。それが31/12であれば、自分自身を削除する。または何かより多くの思考。

0 7 * * 6-12 command_X 

のcrontabのは、あなたが部分的にやりたいだろうが、それは6月1日から開始し、12月31日を通じて実行します。 6月と12月31日の最初の部分をスキップするには、Xコマンドでスクリプト化する必要があります。

14

はやりにくい方法で行う必要があります。 6月の29日と30日("0 7 29,30 6 * X")用

  • 1:

    あなたはすべてが(この場合はX)同じコードを実行し、その範囲のために3つの別々のcronジョブを必要とします。
  • 7月から11月の間の毎日1つ("0 7 * 7-11 * X")。
  • 12月の最終日を除くすべて("0 7 1-30 12 * X")です。

これは、あなたに与えます:

# Min Hr DayOfMonth Month DayOfWeek Command 
# --- -- ---------- ----- --------- ------- 
    0  7  29,30  6  *   X 
    0  7   *  7-11  *   X 
    0  7  1-30  12  *   X 

を次に2010年6月29日が来る前に、あなたがそれらをコメントアウトしてください。12月31日に最終的にcronジョブを追加して、無効にする必要があることを電子メールで知らせることができます。

それとも、今年は、あなたが仕事を無効にするのを忘れた場合、それは問題ではないであろう2009年

if [[ "$(date +%Y)" != "2009" ]] ; then 
    exit 
fi 

ない場合はすぐに終了するXを変更することができます。

4

はい、ほとんどです。いくつかのcron実装は何年もサポートしていますが、そうでないものもあります。また、私はこのジョブがcronデーモンによってのみ実行されていると仮定しているので、実行ビットを使用してcronでジョブを実行する必要があるかどうかを判断できます。

実行したい時間がかかるまでスクリプトを実行不可能な状態にしておく必要があることに注意してください。

次のcron式は、(週末も含めて)毎日したいものです。

# Make the job executable on 29 June. 
0 6 29 6 * chmod +x /path/to/my/job/script 

# Run the job between June and December, only if it's executable. 
0 7 * 6-12 * test -x /path/to/my/job/script && /path/to/my/job/script 

# Disable execution after 30 December. 
0 8 30 12 * chmod -x /path/to/my/job/script 
2

私は通常、実行中のプログラムでロジックを維持するファンです。スクリプトを毎日実行する1つのcronジョブを設定し、有用な処理を行うかどうかをスクリプトが独自に決定するように考えることもできます。最後の有効日(12月30日)が過ぎると、スクリプトはcrontabから削除されます。スクリプトでは、あなたがやっていることとその理由を説明するのに必要なすべてのコメントを使ってロジックを設定することができます。

ジョブがバイナリプログラムの場合は、プログラムを呼び出す前にこのスケジュールフィルタ処理を実行するrun_scriptを設定することができます。

+1

私は、プログラムがcron(およびUnixのオタクがそうすると仮定していると仮定している)以外の目的を果たすと仮定しているかどうかは、少し異なります。それが一般的な目的を果たしている場合は、ルールを設定していつ実行するかを決めるか、設定ファイルを解析することは重大な過度な作業です。推奨されていません(おそらく、チェック)。 'cron'やその変種を扱えるようにする方がはるかに良い! –

+0

私は実際に、期日までcronジョブを実行する方法を探していました。おそらく両方を削除するために2番目のジョブを作成します。たくさんの仕事を作るのではなく、私は毎日自分のスクリプトを呼び出すためにスクリプトを作成し、何かするかどうかを決定します。 – StackUnder

関連する問題