Linux / シェル / 並列実行 / GNU Parallel

Linux / シェル / 並列実行 / GNU Parallel

コマンドを並列実行してくれる、勝手にスケジュールしてくれるやつ。

xargs の並行処理版みたいな感覚? xargs にも並列処理オプションがあるっぽい。

Install

$ sudo apt install parallel

memo

実用的に使いそうなサンプルが公式に載っていたので

このように書くらしい。

$ true > hoge; tail -n+0 -f hoge | parallel

true は単に正常終了するだけのコマンドで特に意味は無い。ファイルを新規に生成しているだけ。 ファイル生成といえば touch コマンドがあるが、この記述だと、何度やってもまっさらなファイルを新規作成できるので説明上都合がよいのだろう。

tail はファイルの末尾を画面に出力するコマンドで f オプションで監視状態で待機してくれる。 n オプションのプラス指定はファイル先頭を何行無視するかで 0 指定なので無視しないということなのだろう。

あまり意味がよくわからないが、初期状態を厳密化したいということを意識したドキュメントなのだろう。

実際動きを試したい場合はこういう風に書く

$ touch hoge
$ tail -f hoge | parallel -u --no-notice

このようにして hoge ファイルにこのようにじゃんじゃんコマンドを書き込む

$ echo 'echo aaa' >> hoge
$ echo 'echo bbb' >> hoge

この parallel コマンドは実行すると最初に盛大に注意書きみたいなのが出るのでそれを –no-notice オプションで抑制できる。

parallel は出力結果はバッファリングされて最後に出力されるようなのだが、この場合は tail -f でコマンドの最後が無い状態なので都度出力しないと画面に出てくれない。 なので -u をつけておく。これは結果が出たら都度出力するオプションで、起動タイミング順で都度出力は -k になる。

linux/shell/parallel_run/gnu_parallel/start.txt · 最終更新: 2021-03-02 12:59 by ore