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 ';'
bash
shell-script
Rahul Patil
fonte
fonte
Respostas:
Do ponto de vista da sintaxe do shell,
&
separa comandos como;
/|
/&&
... (embora, é claro, com semântica diferente). Então é só:fonte
;
inicia o próximo comando assim que o primeiro termina.&
realmente coloca o comando em segundo plano. apenas tente o seguinte:echo foo & echo bar & echo test &
sudo
assim, você poderá digitar a senha apenas uma vez, agruparbash -c
ou semelhante.A seção da página de manual do bash intitulada Comandos compostos tem duas opções que funcionariam, listar e agrupar comandos.
Um comando de grupo é uma série de comandos entre chaves
{}
. Uma lista é a mesma, entre parênteses()
. Ambos podem ser usados para colocar em segundo plano vários comandos dentro e, finalmente, para colocar em segundo plano toda a coleção como um conjunto. A construção de lista executa comandos em um subshell, para que as atribuições de variáveis não sejam preservadas.Para executar um grupo de comandos:
Você também pode executar seus comandos em uma lista (subshell):
fonte
()
sintaxe da lista executa os comandos incluídos em um subshell, para que as variáveis não sejam preservadas.outra maneira:
fonte
&&
na sua pergunta, isso significa que a primeira execução de um comando, em seguida, se for executado com sucesso, execute próxima command.if você não considerá-lo, você pode executarcommand1 & ; command2 & ;
;
nenhum problema com isso