2012-03-14 29 views
2

我用一個名爲process的命令處理一個目錄中的100個文件,並且我想盡可能地平行這個過程。所以,我發出了在C shell下面的命令,它的偉大工程:如何限制C shell啓動的後臺進程?

foreach F (dir/file*.data) 

process $F > $F.processed & 

echo $F 

end 

所有100過程在後臺啓動一次,我的最大化所有內核的使用。

現在我只想使用一半的核心(4箇中的2個)。有沒有一個優雅的方式來做到這一點?

+0

在此搜索有關xargs的信息。祝你好運。 – shellter 2012-03-14 22:46:53

回答

1

如果你有GNU並行http://www.gnu.org/software/parallel/安裝,你可以這樣做:

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

你可以安裝GNU並行只需:

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

手錶GNU並行的介紹視頻,瞭解更多: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

+0

這個效果很好。並行是一個Perl腳本,並在我的Mac筆記本電腦和我的Linux機器上運行良好..問題很好地解決了。謝謝! – Nomadiq 2012-03-28 02:47:45