在Ubuntu上并行化进程

时间:2016-03-30 12:20:49

标签: linux ubuntu parallel-processing xargs

我想并行运行一些流程,我想做的是检查:

php scan.php 1.pdf > 1.txt & php scan.php 2.pdf > 2.txt & php scan.php 3.pdf > 3.txt

但问题是要自动调用它,目录中列出了1.pdf,2.pdf等文件。

如果我使用

find inprogress-gp/ -type f -name '*.pdf' -exec basename {} \; | xargs -n1 php scan.php

然后我可以打电话

php scan.php 1.pdf
php scan.php 2.pdf
php scan.php 3.pdf
....

任何线索如何解决任务?

1 个答案:

答案 0 :(得分:0)

如果您对GNU并行答案持开放态度:

parallel 'php scan.php {} > {.}.txt' ::: *.pdf

或者,如果您的PDF文件位于子目录中:

find . -name \*.pdf | parallel 'php {} > {.}.txt'

以下演示了作业立即启动并且有一个可用的作业位,因此,仅使用2个核心,它可以在10秒钟内完成10秒睡眠和5个进一步睡眠,每次2秒:

parallel --line-buffer -j 2 'echo Job {#} starting; sleep {}; echo Job {#} done' ::: 10 2 2 2 2 2
Job 1 starting
Job 2 starting
Job 2 done
Job 3 starting
Job 3 done
Job 4 starting
Job 4 done
Job 5 starting
Job 5 done
Job 6 starting
Job 1 done
Job 6 done