我希望有人可以帮我解决这个简单的问题。我想并行运行此命令
windmill chrome test=./test http://www.google.ch
我正在玩xargs并查看互联网上的示例。但是,我无法构造一个xargs命令来并行执行我提到的命令。
我尝试了以下
echo "chrome test=./test http://www.google.ch" | xargs -n 1 -P 2 windmill
没有执行正确的命令,这意味着风车必须执行错误的命令,因为输出不正确(风车的默认输出用于指定错误的参数)。
然而,我得到了另一个问题,即终端/ python抱怨“socket.error:[Errno 48]地址已经在使用”。
所以当我通过openen例如两个终端并行运行windmill命令并在每个终端运行windmill命令时它就可以工作。
如果xargs不是解决方案,那么如果你能以正确的方式指出我怎么做,我会非常感激:)
答案 0 :(得分:1)
xargs
无法运行您的命令并行。
为什么不在任何兼容bourne的shell中执行此操作?
for i in 1 2; do windmill chrome test=./test http://www.google.ch & done
答案 1 :(得分:1)
您提到要并行运行命令。只有在程序本身内部并行化时才能这样做。
然而,您可以做的是并行运行多个命令。假设你想并行运行这些:
windmill chrome test=./test http://www.google.ch
windmill chrome test=./test http://www.google.se
windmill chrome test=./test http://www.google.no
windmill chrome test=./test http://www.google.de
使用GNU Parallel,您可以:
parallel windmill chrome test=./test http://www.google.{} ::: ch se no de
观看介绍视频以了解详情:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1并浏览教程(man parallel_tutorial)。你命令行爱你。
如果这不是你想要的,请重新说出你的问题。
答案 2 :(得分:0)
我发现有时程序会遇到绑定到最近发布的套接字的问题 - 内核会出于安全原因尝试阻止这种情况。如果你需要能够立即重新绑定,你可能应该尝试SO_REUSEADDR或者每次都绑定到不同的端口。