Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

Bash脚本实现批量作业并行化

时间:2016-06-26 21:56 来源:网络整理 作者:linux系统 阅读:

  在Linux运行业时, 经常会遇到以下情形: 有大量作业需要运行, 完成每个作业所需要的时间也不是很长. 如果我们以串行方式来运行这些作业, 可能要耗费较长的时间; 若采用并行方式运行则可以大大节约运行时间. 再者, 目前的计算机绝大部分都是多核架构, 要想充分发挥它们的计算能力也需要并行化. 总结网上看到的资料, 利用Bash脚本, 可以采用下面几种方法实现批量作业的并行化. 注意, 下面论述中将不会区分进程和线程, 也不会区分并行和并发.

1. 采用GNU的paralle程序

   parallel是GNU专门用于并行化的一个程序, 对于简单的批量作业并行化非常合适. 使用parallel不需要编写脚本, 只需在原命令的基础上简单地加上parallel就可以了. 所以, 如果能用paralle并行化你的作业, 请优先使用. 有关paralle的详细说明, 请参考其官方文档.

2. 最简单的并行化方法:&+wait

利用Bash的后台运行&和wait函数, 可实现最简单的批量作业并行化.

如下面的代码, 串行执行大约需要10秒

{}和()的区别在shell是否会衍生子进程

(4) 此方法在目前的Cygwin(版本1.7.27)下无法使用, 因其不支持双向命名管道. 有人提到一个解决方案, 使用两个文件描述符来替代单个文件描述符, 但此方法我没有测试成功.



【linux系统】

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Bash脚本实现批量作业并行化》技术文章,《Bash脚本实现批量作业并行化》详细使用和说明,有时《Bash脚本实现批量作业并行化》可能不完善、敬请谅解!如果《Bash脚本实现批量作业并行化》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

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