プロセスを複数回実行するための迅速で汚い方法

プロセスを複数回実行するための迅速で汚い方法

私はプロセスを何度も起動できる非常に単純なbashスクリプトを探しています。私にとって最も重要なのは、プロセスが終了した後にすべてが自動的にクリーンアップされることです。

予想使用量:

bash multiplerun.sh 5 executable.sh parameters_to_executable

私は自分で書くことができますが、時間がかかるので、私は* ixシステムをうまく使用できないので、専門家に尋ねることにしました。

編集:ああ、並行して実行したいことを追加するのを忘れました。一つずつ実行するのはとても簡単です。

答え1

プログラムを並列に開始する方法は次のとおりです。

#!/bin/bash

count=$1
command=$2
shift 2

for ((i=0;i<count;i++)); do
  $command "$@" &
done
wait
echo done

指示を待つとゾンビが表示されなくなります。プログラムにttyが必要ない場合は、ループを次のように置き換えることができます。

for ((i=0;i<count;i++)); do
  nohup $command "$@" </dev/null >/dev/null 2>&1 &
done

このようにして、プロセスはシェルから分離されます。

答え2

GNU並列がある場合http://www.gnu.org/software/parallel/インストール後、次のことができます。

seq 5 | parallel -N0 executable.sh parameters_to_executable

次のように簡単にGNU Parallelをインストールできます。

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

詳しくは、GNU Parallelの紹介ビデオをご覧ください。 https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

関連情報