私はプロセスを何度も起動できる非常に単純な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