シェルスクリプトを並列実行する 質問する

シェルスクリプトを並列実行する 質問する

私はシェルスクリプトを持っています

  1. 大きなテキストファイル(600万行、6列)をシャッフルします。
  2. 最初の列に基づいてファイルをソートします
  3. 1000個のファイルを出力する

擬似コードは次のようになります

file1.sh 

#!/bin/bash
for i in $(seq 1 1000)
do

  Generating random numbers here , sorting  and outputting to file$i.txt  

done

parallelこのシェル スクリプトを実行してマルチコア CPU を最大限に活用する方法はありますか?

現時点では、/file1.sh1 から 1000 まで順番に実行されており、非常に遅いです。

ご協力いただきありがとうございます。

ベストアンサー1

もう一つの非常に便利な方法は、GNU パラレルまだインストールしていない場合はインストールする価値があります。タスクに必ずしも同じ時間がかかるわけではない場合、これは非常に貴重です。

seq 1000 | parallel -j 8 --workdir $PWD ./myrun {}

./myrun 1、などを起動し./myrun 2、一度に8つのジョブが実行されるようにします。また、PBSジョブなどで複数のノードで同時に実行したい場合は、ノードのリストを取得することもできます。システムでこれを行う方法については、ユーザー向けの説明をご覧ください。ここ

追加情報: 更新しました:moreutilsパッケージに含まれる同じ名前のより限定されたユーティリティではなく、gnu-parallelを使用していることを確認してください(2つの異なる歴史については、ここ

おすすめ記事