
UNIX サーバーで 40 分ごとに Java プログラムを実行する cron ジョブを作成する必要があります。次の点を考慮してください。1) 月曜日から金曜日の 8:30 から 12:30 までと 14:00 から 18:00 まで実行する必要があります。2) 休日を考慮します。
私はこれについてたくさん読みましたが、*/30 8..13,14..19 * * 1..5 が最も近い解決策であることがわかりました。crontab で必要な操作を実行できるかどうか、また実行できない場合は、休日の日付を確認する Java などのコードを書くことができるかどうかを知りたいです。ご協力ありがとうございます
答え1
CRON はそれほど賢くないので、同じようなルールをたくさん用意するか、もう少し特注のものを作成して、それを実行する必要があります (ただし、注意が必要です。特別な注意を払わずに、ユーザーが提供したものを root として実行するスクリプトは作成しないでください。いや、そんなことをするスクリプトは作成しないでください)。
答え2
James が言ったように、cron は実際にはそれほど賢くありません。「これらのことをこれらの時間に、私が停止するように指示するまで何度も繰り返し実行する」ことは得意ですが、変動休日に従ったり、「奇妙な」タイミングを喜んだりすることはありませんevery 40 minutes
(そのようなことを実行するには、多数の crontab エントリが必要です。実行ごとに 1 つ作成する必要があります)。
おそらく、cron を「可能な限り」実行し (つまり、パート 1 の制限内で「HH:30 マークで 30 分ごとに実行する」という上記のルール)、スクリプトで例外 (休日) を独自にチェックして、続行するかどうかを決定するのが最善です。
答え3
必要以上に高度な機能かもしれませんが、Hudson を使用してジョブを実行することもできます。それ自体では、タイミング ルールを使用してジョブを実行する機能がすぐに得られるわけではありませんが、さまざまな方法でリモートからジョブをトリガーできます。したがって、Web ページのコンテンツを変更したり、新しいファイルを作成したり、Hudson に REST 呼び出しを実行したり、ジョブを実行したいときにいつでも git チェックインを実行したりするスクリプトを作成できる場合は、幸運です。また、cron のみの場合よりも優れたログ機能が得られ、ジョブが失敗するたびに簡単に警告を受け取ることができます (電子メール、jabber、irc、nabaztag など)。
これを別の観点から見てみましょう。指定されたルール内で実行することが本当に必要ですか? 代わりに 30 分ごとに実行するとどうなりますか? 望まない時間に実行するとどうなりますか?