シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて
コマンドを並列実行したい時があります。 たとえば、たくさんの画像を変換したり、動画を変化したりなどジョブを大量に起動することをしたいとき コマンド実行中もマルチコアのCPUが余っててもったいなーって思います。i7などは4コア2スレッドの8CPU有りますからね。 またruby などはGIL ( global interpreter lock )で上限ストップがかかってたり。 普段は xargs 並列実行は xargs を使ってます。 find | xargs -P0 GNU parallel というものを見つけた GNU Parallel を使うと並列実行が可能になるということを知りました。 早速インストール brew install parallelsudo apt install parallel prallel の特徴 並列実行したいコマンドと並列実行したいファイルを引数を指定する。
LinuxやUNIXで、コマンドちょっと組み合わせて利用する際、非常に役に立つxargsコマンド。 今回は、このxargsコマンドで覚えておきたい使い方・組み合わせについて紹介する。 1.基本的な使い方 まず、そもそもこのコマンドはどういう使い方をするのか。 基本的には、以下のようにパイプでつなぐことで前のコマンド(コマンド1)で取得した値(標準出力)を利用してxargsで指定した別のコマンド(コマンド2)に引数として渡して実行させる事ができるコマンドだ。 コマンド1 | xargs コマンド2 [root@test-centos7 ~]# find /work -type f /work/test2.txt /work/test.txt /work/aaaaa.txt /work/bbbbb.txt /work/ccccc.txt /work/ddddd.txt /work/sample
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く