Gerar vários processos com um único comando

2

Existe uma maneira de criar 10 instâncias de um processo (por exemplo, sim) com um único comando?

$instantiate 10 yes
    
por ihatetoregister 05.05.2015 / 00:59

2 respostas

5

Algo como o seguinte seria OK? Isto assume o bash (para expansão de chaves) e o GNU paralelo.

parallel -N0 -j0 -u yes ::: {1..10}

A configuração -j0 está lá para garantir que muitos processos como os parâmetros sejam iniciados, e -u (ungroup) está lá para que a saída de cada processo seja impressa assim que estiver disponível (isso é importante no caso de yes , pois sua saída é infinita). -N0 impede que os argumentos sejam inseridos na linha de comando.

    
por 05.05.2015 / 01:02
2

@dhag certamente tem uma resposta de uma linha, mas a sintaxe faz meus olhos doerem. :)

Como você solicitou um único comando, e como o shell considera um único comando (composto), sinto-me justificado com essa versão muito mais legível:

for i in {1..10}; do yes &; done

Observe que alguns shells automaticamente nice(2) jobs em segundo plano, portanto, se isso for um problema, essa não é a melhor solução.

    
por 05.05.2015 / 01:36