xargs では -P オプションを使うことで並列処理させることが可能です。 # -P2 の 2 の数は何個並列で走らせるかを表す $ ... | xargs -P2 [目次] 最大実行数の確認 実験 並列処理されてること 論理 CPU を超えた場合 おわりに 最大実行数の確認 論理 CPU の数は、以下のいずれかの方法で取得可能です。 # 以下ディレクトリのファイルの中身を見てプロセッサの数を確認 (linux)。 $ cat /proc/cpuinfo | grep processor | wc -l 4 # 以下の変数でも確認が可能。 $ echo $(nproc) 4 xargs にそのままぶち込むことも可能です。 # 全ての .png ファイルを、convert を使って .jpg に変換する例。 $ ls *.png | sed 's/\.png//' | xargs -P$(
parallel NAME SYNOPSIS DESCRIPTION OPTIONS EXAMPLES SPREADING BLOCKS OF DATA TIME POSTFIXES UNIT PREFIX QUOTING LIST RUNNING JOBS COMPLETE RUNNING JOBS BUT DO NOT START NEW JOBS ENVIRONMENT VARIABLES DEFAULT PROFILE (CONFIG FILE) PROFILE FILES EXIT STATUS DIFFERENCES BETWEEN GNU Parallel AND ALTERNATIVES BUGS REPORTING BUGS AUTHOR LICENSE DEPENDENCIES SEE ALSO parallel_examples GNU PARALLEL EXAMPL
rsyncによる大容量ファイルの転送やDBのバックアップ・リストアなど、たびたび非常に時間がかかるタスクをCLIで実行するシーンがあります。 通常そういった場合は末尾に&を付加(セッションが切れても中断されないようにnohupとセットで使うことも多い)してバックグラウンドで動作させるのが一般的かと思います。 ただ、そのまま使うとログや実行時間、リターンコードなどの採取が面倒であり、いささか一覧性に欠けます。 そんな中、そのようなユースケースに適したPueueという管理ツールが登場しました。 Pueueとは Pueueとは、長時間のCLIタスクに特化したOSSの管理ツールです。 最近はstarshipやnushellといったRust製のツールが勢いを増していますが、例によってPueueもRustによって記述されています。 Pueueの特徴としては、次の通りです。 リッチなUI: バックグラウ
# !/bin/bash from="a/" to="b/" ex="*.png" find $from -name $ex | parallel -j+0 "cjpeg -outfile $to{/.}.jpg {}" gnu parallel -j+0: 最大論理コア数で実行 {}: パイプでもらった引数(ex. a/001.png) {/.}: パイプからもらった引数をファイル名だけにして(/)さらに拡張子も取る(.)(ex. 001) そのた Q. print0とかつけなくていいの? A. よい。ユニコードだろうがスペースだろうが突っ込めば思ったとおりに'\n'デリミタで動いてくれる。parallelもcjpegも良い子。
プログラムを並列処理する GNU Parallel というプログラムがある。このプログラムの作者 Ole Tange が usenix February 2011, Volume 36, Number 1 に “The Command-Line Power Tool” という記事を書いていたので読んでみた。6ページで GNU Parallel の主要機能がひと通り解説されているので、GNU Parallel の機能をピンポイントでしか知らない人(=自分)が読むと、いろいろと使いどころが湧いて来ると思う。 GNU Parallel: The Command-Line Power Tool February 2011, Volume 36, Number 1 Authors: Ole Tange https://www.usenix.org/publications/login/februar
コマンドの並列処理を行う際、個人的にはGNU Parallelコマンドを使用するか、xargsで-Pオプションを付与するかのどちらかを使うことが多いのだが、GNU Parallelのオプションや使い方についてちゃんと調べた事がなかったので、調べてまとめてみることにする。 なお、検証に利用するGNU parallelのバージョンは以下。 blacknon@BS-PUB-DEVELOP:~$ parallel --version GNU parallel 20141022 Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014 Ole Tange and Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licen
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く