ネストされたループ処理はどのように扱うのでしょうか?
bashで下記のような処理をparalellで並列処理したいと考えてます。
for dir in `cat /tmp/rsync-list`;do
for src in `cat /tmp/rsync-$dir`;do
echo $src;
find $src -depth | cpio -o > /archive/$src.cpio;
done
done
またrsyncやsshを利用して複数のサーバーに分散処理する場合はどのようにすればいいでしょうか?
/fileserver/fileA〜Zまでのファイルをserver1 server2 server3の3台を使って、1台あたり4個分を並列処理でgzip圧縮する場合など
よろしくお願いします。
bashで下記のような処理をparalellで並列処理したいと考えてます。
for dir in `cat /tmp/rsync-list`;do
for src in `cat /tmp/rsync-$dir`;do
echo $src;
find $src -depth | cpio -o > /archive/$src.cpio;
done
done
二重のループと言っても、処理しているのは $src だけなので以下のようなシェルスクリプトに書き換えられます。
for dir in `cat /tmp/rsync-list`;do cat /tmp/rsync-$dir | \ parallel "find {} -depth | cpio -o > /archive/{}.cpio" done
/fileserver/fileA~Zまでのファイルをserver1 server2 server3の3台を使って、1台あたり4個分を並列処理でgzip圧縮する場合
状況がよく分かりませんがこのようなコマンドになるはずです。
ls /fileserver/file[A-Z] | \ parallel --sshlogin server1,server2,server3 \ --transfer --return {.}.gz --cleanup "gzip {}"
数は制御できません。
早く終わったサーバから次のジョブが実行されるので、たまたま小さいファイルだけを割り当てられた代わりにたくさんの処理をしたサーバができるというような動作をします。
オプションの意味は man parallel を見れば分かると思います。
http://www.gnu.org/software/parallel/man.html
まったくparallelを使ったことが無いのであれば、↓で雰囲気がつかめると思います。
http://siguniang.wordpress.com/2012/09/09/notes-on-gnu-parallel-the-command-line-power-tool/
bashで下記のような処理をparalellで並列処理したいと考えてます。
for dir in `cat /tmp/rsync-list`;do
for src in `cat /tmp/rsync-$dir`;do
echo $src;
find $src -depth | cpio -o > /archive/$src.cpio;
done
done
二重のループと言っても、処理しているのは $src だけなので以下のようなシェルスクリプトに書き換えられます。
for dir in `cat /tmp/rsync-list`;do cat /tmp/rsync-$dir | \ parallel "find {} -depth | cpio -o > /archive/{}.cpio" done
/fileserver/fileA~Zまでのファイルをserver1 server2 server3の3台を使って、1台あたり4個分を並列処理でgzip圧縮する場合
状況がよく分かりませんがこのようなコマンドになるはずです。
ls /fileserver/file[A-Z] | \ parallel --sshlogin server1,server2,server3 \ --transfer --return {.}.gz --cleanup "gzip {}"
数は制御できません。
早く終わったサーバから次のジョブが実行されるので、たまたま小さいファイルだけを割り当てられた代わりにたくさんの処理をしたサーバができるというような動作をします。
オプションの意味は man parallel を見れば分かると思います。
http://www.gnu.org/software/parallel/man.html
まったくparallelを使ったことが無いのであれば、↓で雰囲気がつかめると思います。
http://siguniang.wordpress.com/2012/09/09/notes-on-gnu-parallel-the-command-line-power-tool/
コメント(1件)
ここのサンプル見て個別に質問しなおすほうが賢いです。
http://w.koshigoe.jp/study/?%5Bsystem%5D+GNU+parallel+%BB%C8%CD%D1%CE%E3
本家のサンプル
http://www.gnu.org/software/parallel/man.html#example__rewriting_nested_for_loops
http://www.gnu.org/software/parallel/man.html#differences_between_clusterssh_and_gnu_parallel