从bash中的txt文件中多次读取(并行处理)

742

这是HTTP状态代码的简单bash脚本

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

我正在从文本文件中读取URL,但是一次只能处理一个,占用了太多时间,GNU并行和xargs一次也处理了一行(已测试)

如何处理同时URL以进行处理以改善计时?换句话说,URL文件的线程而不是bash命令的线程(GNU parallel和xargs这样做)

作为用户的答复,此代码可以正常工作,只不过它不处理某些最后的URL

urlstatus=$(curl -o /dev/null --silent --head --write-out  '%{http_code}' "${url}" --max-time 5 ) && echo "$url  $urlstatus" >> urlstatus.txt &

可能正在添加等待帮助,,,任何建议

me_alok

在bash中,您可以使用&符号在后台运行程序。例子

for i in {1..100..1}; do
  echo $i>>numbers.txt &
done;

编辑:对不起,但您在评论中提出的问题的答案是错误的,所以我只是编辑了答案。建议代码

urlstatus=$(curl -o /dev/null --silent --head --write-out  '%{http_code}' "${url}" --max-time 5 ) && echo "$url  $urlstatus" >> urlstatus.txt &

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章