run-parts
CentOS 7でスクリプトを見ています。次のように非常に似ています。
https://github.com/ikysil/run-parts/blob/master/run-parts
cron.hourly
1〜300秒の間のランダムな遅延を置き、etc。ディレクトリ内のすべての項目を順番に実行しているようです。
cron.hourly
独自の設定のために実行する必要があるスクリプトがたくさんあります。私はそれらをすべて同時に実行したいのですが、それぞれの実行前にランダムな遅延が発生します。
それは次のとおりです。
directory_script_list = contents(/etc/cron.hourly)
for script in directory_script_list:
if script_is_executeable(script):
execute(sleep(random(1, 300)) && script) &)
私はサーバーが攻撃を受けるたびにサーバーがあふれたくありません。
このスクリプトはCPU負荷をあまり使用せず、主に応答が遅いSNMPデバイスに対してクエリを実行します。一部は完了するのに長い時間がかかり、一部は非常に高速です。ネットワークトラフィックもあまりありません。現在スクリプトが30個ほどありますが、頻繁に追加、更新、削除をしています。
そのようなものが存在することを知っている人はいますか?
答え1
実行部分は必要なものと非常に似ているため、実行部分をコピーして必要な部分に正確に合わせて変更できます。
たとえば、
# cp -a /usr/bin/run-parts /usr/local/bin/run-parts-parallel
次に、この違いが示すように、/usr/local/bin/run-parts-parallelの最後の「fi」の後に「&」を追加します。
# diff -u /usr/bin/run-parts /usr/local/bin/run-parts-parallel
--- /usr/bin/run-parts 2014-06-09 18:14:31.000000000 -0400
+++ /usr/local/bin/run-parts-parallel 2017-02-03 14:55:11.327000000 -0500
@@ -95,7 +95,7 @@
{ print; }'
logger -i -p cron.notice -t "run-parts($1)" "finished $(basename $i)"
fi
- fi
+ fi &
done
exit 0
その後、次の行を変更できます/etc/cron.d/0hourly
。
01 * * * * root run-parts /etc/cron.hourly
到着
01 * * * * root RANDOMIZE=1 RANDOMTIME=300 /usr/local/run-parts-parallel /etc/cron.hourly
/etc/sysconfig/run-parts-parallel
RANDOM *変数を設定し、crontabファイルから削除するようにスクリプトを変更することもできます。または、他の場所で実行コンポーネントを使用していない場合は、RANDOM *変数を入れて/etc/sysconfig/run-parts
ランダム遅延をグローバルデフォルトに設定できます。