私はこのような設定をしたいと考えています。unix/linuxのcron式は正確な開始日と終了日を指定できます
- 毎日午前7時にジョブ 'X'を実行したいのですが、29/june/2009から30/12/2009まで毎日実行します。現在の日付を2009/4/4と考えてください。
私はこのような設定をしたいと考えています。unix/linuxのcron式は正確な開始日と終了日を指定できます
あなたは、特定の間隔で実行されるのcrontabを生成するためにこれを使用することができます。
http://www.robertplank.com/cron/
またはこの
http://www.webmaster-toolkit.com/cron-generator.shtml
一つの解決策は、セットアップに6 crons、1になります毎月、毎月午前7時にそれぞれ実行されます。
これはおそらく最も簡単な方法ですが、次はスクリプトを作成することです。
いいえ、あなたはそれを行うことはできません。
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コマンドでスクリプト化する必要があります。
はやりにくい方法で行う必要があります。 6月の29日と30日("0 7 29,30 6 * X"
)用
X
)同じコードを実行し、その範囲のために3つの別々のcron
ジョブを必要とします。"0 7 * 7-11 * X"
)。"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
を変更することができます。
はい、ほとんどです。いくつかの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
私は通常、実行中のプログラムでロジックを維持するファンです。スクリプトを毎日実行する1つのcronジョブを設定し、有用な処理を行うかどうかをスクリプトが独自に決定するように考えることもできます。最後の有効日(12月30日)が過ぎると、スクリプトはcrontabから削除されます。スクリプトでは、あなたがやっていることとその理由を説明するのに必要なすべてのコメントを使ってロジックを設定することができます。
ジョブがバイナリプログラムの場合は、プログラムを呼び出す前にこのスケジュールフィルタ処理を実行するrun_scriptを設定することができます。
私は、プログラムがcron(およびUnixのオタクがそうすると仮定していると仮定している)以外の目的を果たすと仮定しているかどうかは、少し異なります。それが一般的な目的を果たしている場合は、ルールを設定していつ実行するかを決めるか、設定ファイルを解析することは重大な過度な作業です。推奨されていません(おそらく、チェック)。 'cron'やその変種を扱えるようにする方がはるかに良い! –
私は実際に、期日までcronジョブを実行する方法を探していました。おそらく両方を削除するために2番目のジョブを作成します。たくさんの仕事を作るのではなく、私は毎日自分のスクリプトを呼び出すためにスクリプトを作成し、何かするかどうかを決定します。 – StackUnder