回答:
このようにマルチスレッディングとは呼びませんが、70個のジョブをバックグラウンドで起動するだけで済みます。
for i in {1..70}; do
wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
done
これにより、70のwget
プロセスが同時に実行されます。次の小さなスクリプトのように、より洗練された処理を行うこともできます。
#!/usr/bin/env bash
## The time (in minutes) the script will run for. Change 10
## to whatever you want.
end=$(date -d "10 minutes" +%s);
## Run until the desired time has passed.
while [ $(date +%s) -lt "$end" ]; do
## Launch a new wget process if there are
## less than 70 running. This assumes there
## are no other active wget processes.
if [ $(pgrep -c wget) -lt 70 ]; then
wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
fi
done
pgrep: invalid option -- 'c'
。なぜだかわかりませんが、何が理由だと思いますか?
pgrep
実装があります。これはLinuxですか?どれ?とにかく、あなたはその行をif [ $(pgrep wget | wc -l) -lt 70 ]; then
abを試してください、あなたも素晴らしい統計を得ます:
ab -n 10000 -c 70 http://www.betaservice.domain.host.com/web/hasChanged?ver=0
この呼び出しは、70の並列クエリの同時実行で10000のリクエストを実行します。
Red Hat Enterprise Linux Server release 6.3
ますか?
yum install httpd-tools
記載serverfault.com/a/363775/10989
あなたはGNU Parallelをインストールしてみることができます。あなたはここからいくつかのGNU並列の例を得ることができます。
テスト中
私gnu-parallel
は自分のマシンにソースからインストールし、それを機能させることができました。
ここからソースからインストールできます。私はRedHatのシステムを持っているので、私は、Fedoraのパッケージをダウンロードして、走った.configure
、make
とmake install
取得するparallel
私のシステムにインストールされています。
インストールが成功した後、ディレクトリを作成checking
し、以下のコマンドを実行しました。
seq 10 | parallel -n0 wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0
予想通り、上記のコマンドでWebページのコピーが10個ダウンロードされました。あなたが望む数を設定することができますseq
。
同じコマンドを並行して実行する方法の詳細については、ここからgnu-parallelによって提供される例を確認できます。サンプルページから、
同じ引数で同じコマンドを10回並行して実行したい場合は、次のようにします。
seq 10 | パラレル-n0 my_command my_args
編集
さて、を利用するにはparallel
、実行、次のようなコマンドを使用することができ、
seq 70 | parallel -j70 wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0
この-j
オプションは、CPUコアの合計に基づいて並行して実行できるジョブの合計を指定できるものです。
GNU parallel
。unix.stackexchange.com/questions/114962/...