Como se pode executar vários programas em segundo plano com um único comando?

35

Como se pode executar vários programas em segundo plano com um único comando?

Eu tentei os comandos abaixo, mas eles não funcionam.

nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'

nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
    
por Rahul Patil 06.03.2013 / 06:08

3 respostas

30

De um ponto de vista de sintaxe do shell, & separa comandos como ; / | / && ... (embora, é claro, com semântica diferente). Então é só:

cmd1 & cmd2 & cmd3 &
    
por 06.03.2013 / 07:15
11

A seção bash manpage intitulada Comandos compostos tem dois opções que funcionam, listam e agrupam comandos.

Um comando de grupo é uma série de comandos colocados entre chaves {} . Uma lista é a mesma, entre parênteses () . Ambos podem ser usados para executar vários comandos em segundo plano e, finalmente, para o plano de fundo de toda a coleção como um conjunto. A construção de lista executa comandos em um subshell, portanto, as atribuições de variáveis não são preservadas.

Para executar um grupo de comandos:

{ command1 & command2 & } &

Você também pode executar seus comandos em uma lista (subshell):

( command1 & command2 ) &
    
por 06.03.2013 / 06:26
2

de outra forma:

$(command1 &) && command2 & 
    
por 06.03.2013 / 06:19