複数のファイルを読み込んで実行するLinuxシェルスクリプト

複数のファイルを読み込んで実行するLinuxシェルスクリプト

私はシミュレーションのためにLAMMPSソフトウェアを実行するcentosクラスタを使用しています。これで、フォルダ内で複数のファイルを実行する必要があります。各ファイルには同様のタイプのサブファイルがあります。つまり、3つのファイルが含まれています。 1. 入力データファイル (file.restart.3500000) 2. スクリプト (in.open) 3. PBS ファイル (マスターノードではなく子ノードでコードを実行するには)

私の必要性は、シリアルではなく、並列すぎる単一のコマンドを使用してフォルダ内のすべてのファイルを実行することです。つまり、最初のファイルが完了した後に2番目のファイルを起動するのではなく、システムはすべてのファイルを同時に実行したいと思います。

ここに画像の説明を入力してください。ここに画像の説明を入力してください。

現在、個々のフォルダに移動して複数のファイルを実行する必要があるため、時間がかかるスクリプトを実行する必要があります。

ファイルを実行するには、フォルダから "qsub runme.pbs"コマンドを一度実行します。すべてのファイルの内容が同じなので、これに対処できますか?

PS: - 私はこのLinux分野の初心者だけなので、どんな助けでもとても役に立ちます。

ベストアンサー1

次のように単純なforループを使用して実行できます。

cd /path/to/wherever
for d in D_[0-9]*/; do
  cd "$d"
  qsub runme.pbs
  cd ..
done

qsub各ジョブをジョブキューに送信すると、クラスタはスケジューラが許可するようにそのジョブを実行します。

またはpushd "$d"andのpopd代わりにcd "$d"andを使用してくださいcd -

qsubバックグラウンドですべてのプログラムを実行するにはいくつかの利点がありますが、qsub runme.pbs &そうでない可能性があります。一度に多くのタスクを実行することで、スケジューラに過負荷がかかり、速度が遅くなる可能性が高くなります。

おすすめ記事