如何从具有并发控制的文件中执行一堆命令?

时间:2014-12-04 18:02:20

标签: linux xargs

我有一个包含以下项目的文件:

echo 1 ; sleep 2
echo 2 ; sleep 2
echo 3 ; sleep 2
echo 4 ; sleep 2
echo 5 ; sleep 2
echo 6 ; sleep 2
echo 7 ; sleep 2

通过并发控制迭代执行每一行的最佳方法是什么(一次最多2项)。我正在考虑使用xargs但到目前为止没有运气。

1 个答案:

答案 0 :(得分:2)

$ cat file.txt
echo 1 ; sleep 1
echo 2 ; sleep 1
echo 3 ; sleep 1
echo 4 ; sleep 1
...
echo 13 ; sleep 1
echo 14 ; sleep 1

使用xargs并行化运行它:

xargs -a file.txt -I CMD --max-procs=2 sh -c CMD

这似乎产生了一些输出,但主要是顺序的,虽然偶尔会得到独立的输出:

1
3
2
4
...
13
14
  • -I选项用替换替换每个读取的命令,在本例中为CMD
  • sh -c CMD基本上说明每个命令的内容。
  • -c告诉sh命令将来自命令字符串

也许使用需要更多处理的命令运行它会显示一些并行化的提示