【发布时间】:2018-10-30 20:25:22
【问题描述】:
我有一个处理某个目录中每个文件的 bash 脚本:
for (( index=0; index<$COUNT; index++ ))
do
srcFile=${INCOMING_FILES[$index]}
${SCRIPT_PATH}/control.pl ${srcFile} >> ${SCRIPT_PATH}/${LOG_FILE} &
wait ${!}
removeIncomingFile ${srcFile}
done
对于少数文件,它可以正常工作,但是当文件数量很大时,速度太慢了。我想使用这个脚本并行处理分组文件。
示例文件:
server_1_1 |服务器_2_1 |服务器_3_1
服务器_1_2 |服务器_2_2 | server_3_2
服务器_1_3 |服务器_2_3 | server_3_3
脚本应该同时处理与每个服务器相关的文件。
第一个实例 - server_1*
第二个实例 - server_2*
第三个实例 - server_3*
是否可以使用 GNU Parallel 以及如何实现? 非常感谢每个解决方案!
【问题讨论】:
-
为什么只在后台运行一个命令然后等待?如果一次做几个更有意义......
-
this response 可能会对您有所帮助。在后台生成命令并等待它们是合乎逻辑的。甚至还有 POC 版本的假脱机脚本。该页面还有很多关于
parallel的有用信息。 -
代码中的任何内容都与您提到的服务器编号无关!管道符号 (
|) 试图告诉我什么?
标签: linux bash parallel-processing gnu