Linux系统运维:http://www.linuxyw.com,QQ交流群:244914685

Linux系统运维

当前位置: 首页 > Shell >

Linux shell 实现多线程(2)

时间:2013-04-03 23:31来源:转载 作者:网络 点击:
wait cataa|wc-l rmaa 这个实例实际上就在上面基础上多加了一个后台执行符号,此时应该是5个循环任务并发执行,最后需要3s左右时间。 $ time bashtest.sh done!

转载请注明出处: Linux系统运维 http://www.linuxyw.com/linux/Shell/20130403/16.html



linux <wbr>shell <wbr>实现多线程 wait 
linux <wbr>shell <wbr>实现多线程 cat aa | wc  - l
linux <wbr>shell <wbr>实现多线程 rm aa

 

这个实例实际上就在上面基础上多加了一个后台执行&符号,此时应该是5个循环任务并发执行,最后需要3s左右时间。

 

linux <wbr>shell <wbr>实现多线程$  time  bash test . sh 
linux <wbr>shell <wbr>实现多线程 done ! 
linux <wbr>shell <wbr>实现多线程 done ! 
linux <wbr>shell <wbr>实现多线程 done ! 
linux <wbr>shell <wbr>实现多线程 done ! 
linux <wbr>shell <wbr>实现多线程 done ! 
linux <wbr>shell <wbr>实现多线程 5 
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程 real    0m3 . 011s
linux <wbr>shell <wbr>实现多线程 user    0m0 . 002s
linux <wbr>shell <wbr>实现多线程 sys     0m0 . 004s

 

效果非常明显。

这里需要说明一下wait的左右。wait是等待前面的后台任务全部完成才往下执行,否则程序本身是不会等待的,这样对后面依赖前面任务结果的命令 来说就可能出错。例如上面wc -l的命令就报错:不存在aa这个文件。

wait命令的官方解释如下:

 

linux <wbr>shell <wbr>实现多线程        wait [n]
linux <wbr>shell <wbr>实现多线程              Wait for the specified process and return its termination status.  n may be a process ID or  a  job  specification; if a job spec is given, all processes in that job's pipeline are waited for.  If n is not given, all currently active child processes are waited for, and the return status is zero.  If  n  specifies  a  non-existent process  or job, the return status is 127.  Otherwise, the return status is the exit status of the last processor job waited for.

 

以上所讲的实例都是进程数目不可控制的情况,下面描述如何准确控制并发的进程数目。

 

linux <wbr>shell <wbr>实现多线程# !/bin/bash
linux <wbr>shell <wbr>实现多线程 # 2006-7-12, by wwy
linux <wbr>shell <wbr>实现多线程 #———————————————————————————–
linux <wbr>shell <wbr>实现多线程 # 此例子说明了一种用wait、read命令模拟多线程的一种技巧
linux <wbr>shell <wbr>实现多线程 # 此技巧往往用于多主机检查,比如ssh登录、ping等等这种单进程比较慢而不耗费cpu的情况
linux <wbr>shell <wbr>实现多线程 # 还说明了多线程的控制
linux <wbr>shell <wbr>实现多线程 #———————————————————————————–
 
linux <wbr>shell <wbr>实现多线程 
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程 function a_sub {  

本文来自linux系统运维http://www.linuxyw.com/linux/Shell/20130403/16.html

顶一下
(0)
0%
踩一下
(0)
0%
分享按钮
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片