我最近发现了这个xargs --max-procs
功能。
如何通过proc拆分命令的输出?我应该只创建一个 mycommand --logfile $LOGFILE
,还是可以从 xargs 本身来做?
一个例子(对于 womble):
假设我有脚本 myprocessor.sh 和文件列表。他们可以按任何顺序进行,但我想保留每个单独的日志记录,然后:
find $MY_FILE_TREE --print0 | xargs --null --max-procs 3 --max-args 1 --no-run-if-empty myprocess.sh
可能是我要运行的并行作业。如果myprocessor.sh
是嘴巴,那么我希望能够将每个调用打印到不同的日志。否则,每个的标准输出都是相同的,并且日志会变得混乱。
您可以通过 shell 运行您的 xargs 命令来执行此操作 - 这将允许您重定向输出 - 如下所示:
...您可能需要稍微调整一下 - xargs 将 {} 替换为它正在处理的项目/文件
GNU Parallel http://www.gnu.org/software/parallel/似乎是为您制作的,因为它会自动正确地组合来自进程的标准输出。
或更短:
观看介绍视频:http ://www.youtube.com/watch?v=OpaiGYxkSuQ
您可以更改脚本,以便在启动时选择一个随机数字/文本,然后在每一行加上这个数字的前缀?然后您可以稍后使用 grep 拆分它。