是否使用以下脚本
#!/usr/bin/bash
while true
do
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post & ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
done做的和
#!/usr/bin/bash
while true
do
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post
ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
done根据我的经验,第一个脚本创建nalog文件的时间比第二个脚本(超过10分钟)要快(在几秒钟内),这对我来说意味着后者等待ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog完成。不应该是这样的,因为在到目前为止我所研究的中,第二个脚本意味着启动ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog而不等待ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post完成。我希望这两个ab命令同时执行,我如何在Bash中实现这一点?
是&而不是&&。我知道&&做什么,也不想在这里应用它。
发布于 2022-02-28 06:16:44
不,cmd1 [newline] cmd2不像cmd1 & cmd2那样并发--前者在启动cmd2之前等待cmd1完成。
如果希望在第一个命令运行时继续执行,则在将其拆分为两行时需要保留&:
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post & ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog变成了
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post &
ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog如果希望在再次循环之前确保这两个命令都完成,则可以使用wait。
其他shell构造也提供了并发性,特别是管道:a | b (或它在某些shell中的变体,a |& b,用于重定向两个输出流)同时运行a和b,并在继续之前等待两者完成。一些shell还支持协同进程(参见如何在各种外壳中使用coproc命令?)和进程替换(参见如何在各种外壳中使用coproc命令?),它们可以用于并发运行命令。
有关列表终止符(包括&)和管道操作符的详细信息,请参见D15。
除非在ksh中,它作为一个共同进程运行a。
https://unix.stackexchange.com/questions/692358
复制相似问题