Linux下模拟多线程的并发shell脚本写法

29 篇文章 2 订阅
一个在Linux下模拟多线程的并发的方法,使用这个方法可以同时批量在定义数量的服务器上执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高非常多。
1、不使用多线程的情况
/Users/nisj/PycharmProjects/BiDataProc/UserPortrait/user_portrait_view_singleThread.sh
#!/usr/bin/env bash

date
for indexCalc_sqlFile in /home/hadoop/nisj/UserPortrait/indexCalc-view-by*.sql
do
{
echo $indexCalc_sqlFile
sleep 3
}
done
echo '/home/hadoop/nisj/UserPortrait/indexCalc-view-historyBehavior.sql'
sleep 3
date
调试结果示例:
[hadoop@emr-worker-9 UserPortrait]$ sh user_portrait_view_singleThread.sh  
Fri Mar  3 16:22:18 CST 2017
/home/hadoop/nisj/UserPortrait/indexCalc-view-byGameId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byRoomId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byTagId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byUidOnly.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-historyBehavior.sql
Fri Mar  3 16:22:33 CST 2017

2、使用多线程情况
/Users/nisj/PycharmProjects/BiDataProc/UserPortrait/user_portrait_view_moreThread.sh
#!/usr/bin/env bash

date
for indexCalc_sqlFile in /home/hadoop/nisj/UserPortrait/indexCalc-view-by*.sql
do
{
echo $indexCalc_sqlFile
sleep 3
} &
done
wait
echo '/home/hadoop/nisj/UserPortrait/indexCalc-view-historyBehavior.sql'
sleep 3
date
调试结果示例:
[hadoop@emr-worker-9 UserPortrait]$ sh user_portrait_view_moreThread.sh 
Fri Mar  3 16:26:00 CST 2017
/home/hadoop/nisj/UserPortrait/indexCalc-view-byGameId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byRoomId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byTagId.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-byUidOnly.sql
/home/hadoop/nisj/UserPortrait/indexCalc-view-historyBehavior.sql
Fri Mar  3 16:26:06 CST 2017

3、多线程说明
使用'&'+wait 实现“多进程”实现
Shell中并没有真正意义的多线程,要实现多线程可以启动多个后端进程,最大程度利用cpu性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值