linux – 使用脚本运行有限数量的并行程序
发布时间:2020-12-13 23:50:24 所属栏目:Linux 来源:网络整理
导读:基于 This solution我正在尝试开发一个脚本,将运行的进程数限制为4.但是作为替代方案,我希望将作业存储在我通过索引引用的数组中.我写了以下内容: todo_array[1]="echo start1;sleep 3;echo done1"todo_array[2]="echo start2;sleep 3;echo done2"todo_arra
基于
This solution我正在尝试开发一个脚本,将运行的进程数限制为4.但是作为替代方案,我希望将作业存储在我通过索引引用的数组中.我写了以下内容:
todo_array[1]="echo start1;sleep 3;echo done1" todo_array[2]="echo start2;sleep 3;echo done2" todo_array[3]="echo start3;sleep 3;echo done3" todo_array[4]="echo start4;sleep 3;echo done4" todo_array[5]="echo start5;sleep 3;echo done5" todo_array[6]="echo start6;sleep 3;echo done6" todo_array[7]="echo start7;sleep 3;echo done7" todo_array[8]="echo start8;sleep 3;echo done8" todo_array[9]="echo start9;sleep 3;echo done9" max_jobs=4 seq ${#todo_array[@]} | xargs -i --max-procs=$max_jobs bash -c $todo_array[{}] 但是当我执行时,我得到一个空的9 newlinex输出. 编辑:我修改了它 seq ${#todo_array[@]} | xargs -i --max-procs=$max_jobs bash -c "$todo_array[{}]" 我得到以下奇怪的输出: start1 start1 start1 start1 done1[2] done1[3] done1[1] done1[4] start1 start1 start1 start1 done1[5] done1[6] done1[7] done1[8] start1 done1[9] 解决方法
试试这个:
#!/bin/bash todo_array[1]="echo start1;sleep 3;echo done1" todo_array[2]="echo start2;sleep 3;echo done2" todo_array[3]="echo start3;sleep 3;echo done3" todo_array[4]="echo start4;sleep 3;echo done4" todo_array[5]="echo start5;sleep 3;echo done5" todo_array[6]="echo start6;sleep 3;echo done6" todo_array[7]="echo start7;sleep 3;echo done7" todo_array[8]="echo start8;sleep 3;echo done8" todo_array[9]="echo start9;sleep 3;echo done9" max_jobs=4 for i in "${todo_array[@]}" do echo $i done | xargs -IX --max-procs=$max_jobs bash -c "X" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |