我是Linux新手并被介绍给“&”最近。我必须运行几个traceroutes并将它们存储在一个文件中,我很好奇我是否能够并行启动这些traceroutes?
我尝试了以下但生成的文件中的结果是不是分开了?嗯,这就是我的意思。
traceroute -n -z 100 www.yahoo.com >> theLog.log &
traceroute -n -z 100 www.abc.com >> theLog.log &
我要问甚至可以做什么?如果是这样,我应该使用什么命令?
感谢您给出的任何指示。
答案 0 :(得分:1)
也许您可以调查parallel(并告诉我们您的体验)?
如果您使用的是Ubuntu,则可以sudo apt-get install moreutils
获取parallel
。
答案 1 :(得分:1)
如果您希望它并行运行,最好将中间结果保存在单独的文件中,最后将它们连接起来。步骤是开始每个跟踪到它的日志文件并存储他们的pid,等待他们全部停止,他们加入结果,如下所示:
traceroute -n -z 100 www.yahoo.com > theLog.1.log & PID1=$!
traceroute -n -z 100 www.abc.com > theLog.2.log & PID2=$!
wait $PDI1 $PDI2
cat theLog.1.log theLog.2.log > theLog.log
rm theLog.2.log theLog.1.log
答案 2 :(得分:0)
使用以下命令它们并不是真正并行,但您可以继续使用终端,结果将被拆分:
{ traceroute -n -z 100 www.yahoo.com; traceroute -n -z 100 www.abc.com; } >> theLog.log &
答案 3 :(得分:0)
正如您所写,行为未定义。您可以尝试使用enzotib发布的内容,或尝试将每个内容写入自己的文件并在最后将它们整合在一起。
答案 4 :(得分:0)
traceroute
按顺序一次执行一个。
您可以使用@rmk parallel
utility的建议并行执行traceroute
。
$ /usr/bin/time parallel traceroute -n -z 100 <hosts.txt >> parallel.log
24.78user 0.63system 1:24.04elapsed 30%CPU (0avgtext+0avgdata 37456maxresident)k
72inputs+72outputs (2major+28776minor)pagefaults 0swaps
顺序模拟慢5倍:
$ /usr/bin/time ./sequential.sh
24.63user 0.51system 7:19.09elapsed 5%CPU (0avgtext+0avgdata 5296maxresident)k
112inputs+568outputs (1major+8759minor)pagefaults 0swaps
sequential.sh
的位置:
#!/bin/bash
( while read host; do traceroute -n -z 100 $host; done; ) <hosts.txt >>sequential.log
hosts.txt
是:
www.yahoo.com
www.abc.com
www.google.com
stackoverflow.com
facebook.com
youtube.com
live.com
baidu.com
wikipedia.org
blogspot.com
qq.com
twitter.com
msn.com
yahoo.co.jp
taobao.com
google.co.in
sina.com.cn
amazon.com
google.de
google.com.hk