bashシェルスクリプトでサービスURLを並列に呼び出すには?

bashシェルスクリプトでサービスURLを並列に呼び出すには?

他のアプリケーションから呼び出されるサービスがあります。以下は私が呼び出すサービスURLです。

http://www.betaservice.domain.host.com/web/hasChanged?ver=0

上記のサービスURLを順番に1つずつ呼び出すのではなく、マルチスレッド方式でロードテストを実行する必要があります。

bashシェルスクリプトがマルチスレッド方式で呼び出して上記のサービスURLをロードする方法はありますか?可能であれば、上記のURLを非常に迅速に並列に呼び出す60〜70のスレッドを持つことはできますか?

ベストアンサー1

マルチスレッドとは呼ばれませんが、単にバックグラウンドで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

おすすめ記事