crontab実行部分

crontab実行部分

run-partsCentOS 7でスクリプトを見ています。次のように非常に似ています。

https://github.com/ikysil/run-parts/blob/master/run-parts

cron.hourly1〜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-parallelRANDOM *変数を設定し、crontabファイルから削除するようにスクリプトを変更することもできます。または、他の場所で実行コンポーネントを使用していない場合は、RANDOM *変数を入れて/etc/sysconfig/run-partsランダム遅延をグローバルデフォルトに設定できます。

おすすめ記事