Maneira rápida e suja de executar um processo mais de uma vez

2

Estou procurando um script muito simples que me permita iniciar um processo algumas vezes. O que é essencial para mim é que, após o término dos processos, tudo seja limpo automaticamente.

Uso pretendido:

bash multiplerun.sh 5 executable.sh parameters_to_executable

Eu provavelmente poderia escrever por mim mesmo, mas levaria tanto tempo que decidi perguntar a especialistas; Eu sou muito pouco habilidoso em usar sistemas * ix.

EDIT: Ah, e eu esqueci de adicionar que eu quero executá-los em paralelo - executá-los um após o outro é bastante simples.

    
por Bartek Banachewicz 19.05.2012 / 17:50

2 respostas

4

Aqui está algo que lançará seus programas em paralelo:

#!/bin/bash

count=$1
command=$2
shift 2

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

A instrução de espera deve impedir que os zumbis apareçam. Se seus programas não precisam de um tty, você pode substituir o loop com:

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

Dessa forma, os processos serão desanexados do seu shell.

    
por 19.05.2012 / 18:34
1

Se você tem o link do GNU Paralelo instalado, você pode fazer isso:

seq 5 | parallel -N0 executable.sh parameters_to_executable

Você pode instalar o GNU Parallel simplesmente por:

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

Assista aos vídeos de introdução do GNU Parallel para saber mais: link

    
por 27.05.2012 / 19:04