shell脚本多进程运行

例子

1
2
3
4
5
6
7
8
9
10
for ip in 192.168.56.{1..254}
do
(
ping $ip -c 4 &>/dev/null;
if [ $? -eq 0 ]; then
echo $ip is alive
fi
) &
done
wait

解释

重点是在于()&,把for里面需要执行的命令当作一个组合并在后台运行
wait等待所有后台子程序执行完毕

执行效率

使用time可以查看运行的时间。这个效率我就不用多说了吧。

1
2
3
4
5
6
7
8
9
time bash a.sh
192.168.56.101 is alive
192.168.56.1 is alive
192.168.56.102 is alive
192.168.56.103 is alive
real 0m13.164s
user 0m0.157s
sys 0m1.160s

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器