Функция оболочки параллельного вызова GNU заставила ошибиться - PullRequest
0 голосов
/ 18 ноября 2018

В моем реальном проекте что-то вроде кода взорвалось, читайте модули 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, я знаю $ !, и дождусь массива, но не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...