Bash

如何從 bash shell 腳本並行呼叫服務 URL?

  • October 3, 2014

我有一個從另一個應用程序呼叫的服務。以下是我正在呼叫的服務 URL -

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

我需要以多執行緒方式對上面的服務 URL 進行一些負載測試,而不是一個一個地依次呼叫。

bash shell腳本有什麼辦法,我可以通過以多執行緒方式呼叫上面的服務URL來載入它嗎?如果可能的話,我可以讓 60-70 個執行緒並行呼叫以上 URL 嗎?

我不會將其稱為多執行緒,但您可以簡單地在後台啟動 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

引用自:https://unix.stackexchange.com/questions/154459