问题
Here is a simple bash script for HTTP status code
while read url
do
urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "${url}" --max-time 5 )
echo "$url $urlstatus" >> urlstatus.txt
done < $1
I am reading URL from text file but it processes only one at a time, taking too much time, GNU parallel and xargs also process one line at time (tested)
How to process simultaneous URL for processing to improve timing? In other words threading of URL file rather than bash commands (which GNU parallel and xargs do)
Input file is txt file and lines are separated as
ABC.Com
Bcd.Com
Any.Google.Com
Something like this
回答1:
GNU parallel and xargs also process one line at time (tested)
Can you give an example of this? If you use -j
then you should be able to run much more than one process at a time.
I would write it like this:
doit() {
url="$1"
urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "${url}" --max-time 5 )
echo "$url $urlstatus"
}
export -f doit
cat "$1" | parallel -j0 -k doit >> urlstatus.txt
Based on the input:
Input file is txt file and lines are separated as
ABC.Com
Bcd.Com
Any.Google.Com
Something like this
www.google.com
pi.dk
I get the output:
Input file is txt file and lines are separated as 000
ABC.Com 301
Bcd.Com 301
Any.Google.Com 000
Something like this 000
www.google.com 302
pi.dk 200
Which looks about right:
000 if domain does not exist
301/302 for redirection
200 for success
来源:https://stackoverflow.com/questions/41713991/multiple-read-from-a-txt-file-in-bash-parallel-processing