[解決済み] xargsを使ったプログラムの並列実行
2022-03-04 10:23:42
質問
現在のスクリプトを使用しています。
#!/bin/bash
# script.sh
for i in {0..99}; do
script-to-run.sh input/ output/ $i
done
xargsを使って並列で実行したいのですが。試してみたところ
script.sh | xargs -P8
しかし、上記をやっても一度に一回しか実行されない。n8でもダメでした。 スクリプトのforループで実行する行の最後に&を追加すると、一度に99回スクリプトを実行しようとする。どうすれば、一度に8回ずつ、合計100回まで実行できるでしょうか。
解決方法は?
からの
xargs
のマニュアルページをご覧ください。
このマニュアルページは GNU 版 xargs について説明しています。 標準入力から、空白(これは保護することができます)で区切られた 二重引用符、一重引用符、バックスラッシュ)または改行で囲み、実行します。 コマンド(デフォルトは/bin/echo)を1回以上、任意の初期 引数の後に,標準入力から読み込んだ項目が続く。 標準入力の空白行 標準入力は無視されます。
ということは、あなたの例では
xargs
は、スクリプトからの出力をすべて待機して収集し、次に
echo <that output>
. これは、必ずしも便利なものではありませんし、あなたが望んでいたものでもありません。
は、その
-n
引数は、実行される各コマンドで使用する入力項目の数です (これだけでは、並列性については何もわかりません)。
でやりたいことをやるには
xargs
のようにする必要があります(未検証)。
printf %s\\n {0..99} | xargs -n 1 -P 8 script-to-run.sh input/ output/
というと、このように分解されます。
-
printf %s\\n {0..99}
- から1行に1つの数値を表示します。0
から99
. -
実行
xargs
- 服用 たかだか 1つの実行コマンドラインにつき1つの引数
- と実行します。 まで 一度に8プロセス
関連
-
[解決済み】シェルスクリプトで整数式が期待されるエラーが発生する
-
[解決済み】firebase-tools "-bash: firebase: command not found".
-
[解決済み] cmake execute_process COMMAND [重複]。
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] condaのアップデート後、ターミナルのプロンプトから(base)を削除する方法
-
[解決済み] Bash - "fi ;;" の使い方は?
-
[解決済み] bashスクリプトから複数のプログラムを並列に実行するにはどうすればよいですか?
-
[解決済み] ターミナルからmysqlを使用して、bashスクリプトで書かれたパスワードを警告メッセージとして表示しないようにする。
-
[解決済み】xargsで入力1行ごとにコマンドを実行するようにする
-
[解決済み】xargsで複数のコマンドを実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 -bash: 予期しないトークン「改行」付近での構文エラー
-
[解決済み】SEDをワイルドカードで使用する場合
-
[解決済み] バッシュ Vim.NET」が表示されたらVimを終了させる Warning: 出力先が端末でない"
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] あいまいなリダイレクト」エラーが発生する
-
[解決済み] 絶対パスと論理パスの違い
-
[解決済み] bash スクリプトを実行している docker エントリポイントに "permission denied" が表示される。
-
[解決済み] bashの"-ne "はどういう意味ですか?
-
[解決済み] Bashのforeachループ
-
[解決済み】限られた数のコマンドを並列に処理するBashスクリプト