GUN parallel并行执行shell函数
#!/bin/bash
dir=/root/
code_dir="code"
doubleit()
{
local transfer_dir=$1
local moudles=`cat ${code_dir}/depend/$2`
for module in $ moudles;do
${code_dir}/build/build_module.sh $transfer_dir $module
transfer $transfer_dir
done
}
export -f doubleit
export -f transfer
export code_dir
parallel doubleit ::: $dir ::: base basis
实际项目中使用大致上面代码,有很多基础模块,分为两类,一类是c/c++使用,一类是nginx 和php的,因此两类模块间没有依赖我想实现并行编译打包。但是每一类模块间要按照文件中的顺序进行编译。
但是按照上面写法后,提示job failed,我手动去运行提示失败的job确发现没有问题,echo $?是0,parallel是如何判断job failed?
出错信息:(都是些告警,实际项目中的信息,可能参考意义不大,可以从哪些方面排查)
Makefile:18: warning: overriding recipe for target `install'
common.mk:100: warning: ignoring old recipe for target `install'
upgrade_col.cpp: In function ‘void increase_update_count(unsigned int)’:
upgrade_col.cpp:170:33: warning: narrowing conversion of ‘uptime’ from ‘time_t {aka long int}’ to ‘unsigned int’ inside { } is ill-formed in C++11 [-Wnarrowing]
update_ctx_t uctx = {1, uptime};
^
Makefile:18: warning: overriding recipe for target `install'
common.mk:100: warning: ignoring old recipe for target `install'
parallel: This job failed:
build_packages_parallel /root/v2.5/code/build/eps_cloud basis
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
parallel看不到bash函数. 你得写成单独文件.