xargsでマルチプロセス

単純にマルチプロセスで実行したいバッチがあった場合
シェルスクリプトから一件づつバックグラウンドで実行したりしてたのですが
バックグラウンド実行だとGearmandでうまく動かないので、何か方法ないかと調べたら
下記のようなシンプルな方法で出来たのでメモ。

cat namelist.txt | xargs -n1 -P4 -I % /bin/perl batch.pl --name=%

これで、namelist.txtの1行ごと、4プロセスづつ実行されます。
-I % でnamelist.txtの1行の文字列が取得出来ます。

About irako

広告系Webエンジニア 最近はluaがお気に入り。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です