如何限制C shell启动的后台进程?

时间:2012-03-14 19:57:44

标签: process background parallel-processing csh

我使用名为process的命令处理目录中的100个文件,并且我希望尽可能地并行此过程。所以,我在C shell中发出以下命令,效果很好:

foreach F (dir/file*.data)

process $F > $F.processed &

echo $F

end

所有100个进程在后台一次启动,最大限度地利用了我的所有内核。

现在我想一次只使用我的一半核心(4个中的2个)。是否有一种优雅的方式来做到这一点?

1 个答案:

答案 0 :(得分:1)

如果你安装了GNU Parallel http://www.gnu.org/software/parallel/,你可以这样做:

parallel -j 50% 'process {} > {}.processed; echo {}' ::: dir/file*.data

您可以通过以下方式安装GNU Parallel:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看GNU Parallel的介绍视频了解详情: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1