GNU parallel and xargs also process one line at time (tested)
Você pode dar um exemplo disso? Se você usar -j
, poderá executar muito mais de um processo por vez.
Eu escreveria assim:
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 input.txt | parallel -j0 -k doit
Com base no arquivo input.txt:
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
Eu recebo a saída:
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
O que parece certo:
000 if domain does not exist
301/302 for redirection
200 for success
Devo dizer que estou um pouco surpreso se as linhas de entrada que você forneceu realmente são partes da entrada que você realmente usa. Nenhum desses domínios existe e nomes de domínio com espaços provavelmente nunca existirão:
Input file is txt file and lines are separated as
Any.Google.Com
Something like this
Se você não deu entrada do seu arquivo de entrada, você deveria fazer isso em vez de inventar coisas - especialmente se o material inventado não se assemelhar aos dados reais.
Editar
Depurando por que isso não funciona para você.
Por favor, não escreva um script, mas execute isso diretamente no terminal:
bash # press enter here to make sure you are running this in bash
doit() {
url="$1"
urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "${url}" --max-time 5 )
echo "$url $urlstatus"
}
export -f doit
echo pi.dk | parallel -j0 -k doit
Isso deve dar:
pi.dk 200