たごもりすメモスマートフォン用の表示で見るたごもりすメモコードとかその他の話とか。この広告は、90日以上更新していないブログに表示しています。使ってカジュアルに並列処理シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。bzip2これで、まあそんなに問題なく効率的にbzip2圧縮ができる。最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。HTのマシンでは次のように実にもの悲しい処理状況になってしまう。悲しいか分からない人は、えー、残念でした。CPUは余ってるので大量のファイルを並列処理したい、という場合、手でやるならまあ複数の端末を開いてそれぞれで実行してもいい。それはそれでどのファイルをどの端末で処理するのとか考えるのも面倒だ。それにできれば、シェルスクリプト中でも可能な方法が欲しい。いうオプションがある(ことに今日気付いた)。していただきたいが、なんと複数プロセスを並列に実行してくれるらしい*1。動作をちゃんと理解していないと、いきなり以下のようにやってもマトモに動かない。bzip2期待としては2並列実行されて半分の時間で完了するってところだろうけど、これはその期待通りには動かない。最初の例と同じように1CPUだけ使って動作し、同じような時間で完了する。xargsの動作について少しxargsの動作に詳しくない人のためにいちおう復習。xargsは以下のように動作する。戻るで、この「コマンドに与えられる引数」だが、けっこう大きい。以下のようにすればあなたの手元のシステムでのサイズがわかる。(80000は振り切れちゃう場合には適当に大きくすること。