xargsの-Pオプション
xargsで-Pオプションを使うと、プロセスが複数立ち上がると言うことで試してみる。コマンド実行前後をdateコマンドで挟んで、1〜10までの数を引数で渡してsleepする。
/Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 20 sleep && date 2013年 7月 5日 金曜日 01時18分15秒 JST 2013年 7月 5日 金曜日 01時18分25秒 JST /Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 10 sleep && date 2013年 7月 5日 金曜日 01時18分39秒 JST 2013年 7月 5日 金曜日 01時18分49秒 JST /Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 5 sleep && date 2013年 7月 5日 金曜日 01時18分55秒 JST 2013年 7月 5日 金曜日 01時19分10秒 JST /Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 2 sleep && date 2013年 7月 5日 金曜日 01時19分16秒 JST 2013年 7月 5日 金曜日 01時19分46秒 JST /Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 1 sleep && date 2013年 7月 5日 金曜日 01時19分51秒 JST 2013年 7月 5日 金曜日 01時20分46秒 JST
一番sleep時間が長くなるのがsleep 10を実行したときなので、キッチリ10秒掛かっている。同時実行するプロセスを減らすと、それに伴って処理時間が長くなる。
-P 0を指定すると可能な限りプロセスを立ち上げるらしいが、Macで試したら「xargs: max. processes must be >0」というエラーメッセージが表示された。Linuxだと平気だった。