回答:
たとえば/etc/cron.15m
、すべてのスクリプトをディレクトリに入れてから、cronを実行させることができます
*/15 * * * * run-parts /etc/cron.15m
これは、run-parts
コマンドがあることを前提としています。少なくともすべてのDebianベースのシステムに存在します。指定されたディレクトリ内のすべての実行可能プログラムをリスト順に1つずつ実行します。
この方法の欠点は、スクリプトの1つがハングした場合、残りはすべて待機し、実行されないことです。それらすべての実行時間が15分を超える場合、ジョブは再び実行を開始し、多くのプロセスが積み重なる可能性があります。
これを行う最も簡単な方法は、必要なときに実行するコマンドを手動で設定することです。
0,15,30,45 * * * * command0
1,16,31,46 * * * * command1
2,17,32,47 * * * * command2
...
14,29,44,59 * * * * command14
または、適切なcrontabエントリを自動的に生成するスクリプトを記述できます(タイプミスを回避します)。
cronの一部のバージョン(おそらく使用しているものを含む)は、拡張構文を受け入れます。
0-59/15 * * * * command0
1-59/15 * * * * command1
1-59/15 * * * * command2
...
14-59/15 * * * * command14
クロンはあなたがやろうとしていることを本当に得意ではありません。基本的に15分間スリープし、コマンドを実行してからループするデーモンとして機能するスクリプトを記述することを検討しましたか?
sleep 300
、コマンドを実行するたびに実行すると、コマンド自体の実行により時間がドリフトすることです。15:00ごとではなく15:10ごとに実行される場合があります。また、バックグラウンドプロセスが停止した場合やシステムが再起動した場合、とは異なりcrond
、自動的に再起動しません。バックグラウンドプロセスを「デーモン化」する方法はありますが、それではほとんど再実装されcrond
ます。
run-parts
ほとんどのcronインストールに同梱される標準のスクリプトがあり、それを具体的に行うことが一般的に必要です。@AndrewSchulmanの回答を参照してください。
多くのディストリビューションには/etc/cron.d/cronhourlyがあり、すべてのスクリプトは1時間ごとに実行されます。連続番号で開始することで順序を指定することもできます(lik 01scriptA 02scriptB)。SmoothwallのLinuxディストリビューションベースで「cronhourlybyfour」を呼び出す必要があるため、すでに必要なcronの知識は簡単です。
警告:これは、以前に提案されたrun-partsを使用し、run-partsは。名前にあるので、「deletehomefolders.sh」とは呼ばず、「01deletehomefolders」と呼んで、正しい#で始めるようにしてください。スクリプトを解釈する予定の行。
run-parts
Fedora / Red Hatシステムにも存在します。