| 開発者 | GNU プロジェクト |
|---|---|
| 安定リリース | 20241022 [1]
/ 2024年10月21日 |
| リポジトリ |
|
| 書かれた | パール |
| オペレーティング·システム | GNU |
| タイプ | ユーティリティ |
| ライセンス | GPLv3 |
| Webサイト | www.gnu.org/software/Parallel/ |
GNU parallelは、Linuxやその他のUnix系オペレーティングシステム用のコマンドラインユーティリティであり、ユーザーはシェルスクリプトやコマンドを並列に実行できます。GNU parallelは、Ole TangeがPerlで書いたフリーソフトウェアです。GPLv3の条件で利用できます。[2]
使用法
最も一般的な使用法は、シェルループを置き換えることです。たとえば、
x を読みながら、 do_something " $x "を実行するdone <リスト
の形式に
猫 リスト|並列do_something
ファイルにlistは の引数が含まれておりdo_something、 はprocess_output空の場合があります。
多くの場合、 parallel を使用するスクリプトは、 pexec を使用するスクリプトよりも読みやすくなります。
プログラムの並列機能も
- 並列実行ジョブの出力が一緒に実行されないように、標準出力と標準エラーをグループ化します。
- 出力の順序を入力と同じ順序に保つ。
- スペース、一重引用符、二重引用符、アンパサンド、UTF-8 でエンコードされた文字などの特殊文字を含むファイル名を適切に処理します。
デフォルトでは、並列はCPU コアと同じ数のジョブを並列に実行します。
例
find . -name "*.foo" |並列grepバー
上記は次と同等です:
find . -name "*.foo" -exec grepバー{} +
これは、現在のディレクトリとそのサブディレクトリにある、名前が で終わるすべてのファイルで文字列.fooの出現を検索します。ファイル名に改行が含まれていない限り、 parallel コマンドは期待どおりに動作します。この制限を回避するには、次を使用します。
bar
find . -name "*.foo" -print0 | parallel -0 grepバー
上記のコマンドは、ヌル文字を使用してファイル名を区切ります。
find . -name "*.foo" | parallel -X mv {} /tmp/trash
上記のコマンドは、{}コマンド ラインの長さが許す限り多くの引数で展開され、必要に応じて並列ジョブ間で均等に分散されます。これにより、起動よりも完了に時間がかからない短命コマンドのプロセス オーバーヘッドを削減できます。
見つけてください 。 -maxdepth 1 -type f -name "*.ogg" | parallel -X -r cp -v -p {} /home/media
上記のコマンドは以下と同じことを行います:
cp -v -p *.ogg /home/media
findただし、 / parallel/ を使用する前者のコマンドはcpリソース効率が高く、*.ogg の展開がシェルに対して大きすぎる場合でもエラーで停止しません。
参照
参考文献
- ^ Tange, Ole (2024年10月21日). 「GNU Parallel 20241022 ('Sinwar Nasrallah') がリリースされました [安定版]」. parallel (メーリングリスト).
- ^ 「GNU Parallel」. GNU.org .
外部リンク
- 公式サイト
- GNU parallelのプロジェクトページとマニュアルページ
