【发布时间】:2018-04-03 15:03:29
【问题描述】:
我试图了解如何使用 xargs -n 选项循环遍历 csv 文件并运行 CURL 操作以将输出收集到文件以实现更快的处理时间。
示例:
我需要根据带有 URI(其中 1000 个)的 CSV 文件检查网页的运行状况。
URI.csv
signup
account
edit
close
我正在尝试并行检查它们的状态,使用:
猫 URI.csv | xargs -n1 -I {} /bin/bash -c 'curl -I http://localhost/{} &> /dev/null && echo "{},Online">>healthcheck.log || echo "{},Offline">>healthcheck.log '
我可以通过制作-n2 来加快处理速度吗?我知道我可以使用-P4 之类的东西来实现并行性,但是,我无法理解-n 如何用于我的用例。
【问题讨论】:
-
-n单独不会做任何事情。并行性;为此,您可以将其与-P结合。 -
顺便说一句,在
bash -c参数中使用-I {}然后{}很容易导致shell 注入漏洞。永远不要那样做。 (想想如果你有一个包含$(rm -rf ~)的URI会发生什么) -
另外,
foo && bar || baz有时表现得像三元运算符,但它不是三元运算符——极端情况会杀死你。想一想如果foo成功但bar失败会发生什么——你最终可以运行baz除了bar。