В моем реальном проекте что-то вроде кода взорвалось, читайте модули servel из файла, например a1 a2 a3, a2 зависит от a1 и a3 зависит от a2.В другой функции, такой как b1, b2, b3, но ничего общего с a1 a2 a3, поэтому они могут быть параллельными.
#! / Bin / Баш
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 ::: $A $B
Если в функции douleit я вызвал example.sh, нужно ли экспортировать все функции в example.sh?
Я получил неправильное сообщение, не могу понять, почему.
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
когда я запускаю задания вручную , echo $? просто выведите 0, как параллельная оценка, если работа не удалась. Я очень рад, если есть какие-либо предложения, хотя они тесно связаны с моими проектами.
другой вопрос, если я запустил функцию, подобную этой
doubleit arg1 &
doubleit arg2 &
wait
использует ли это разные процессорные ядра для ускорения?
если не удалось выполнить одно задание, как выйти из функции оболочки и уничтожить все задания bg, я знаю $ !, и дождусь массива, но не сработает.