Como executar vários comandos no Bash, alguns em segundo plano

2

Eu gostaria de executar vários comandos no bash, mas alguns deles foram executados em segundo plano. A melhor maneira de explicar isso é usando o seguinte comando que não funciona ...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Acho que isso pode ser considerado como duas perguntas:

  1. Como encerrar o & em um comando?
  2. Qual seria a melhor maneira de fazer isso?

Outros detalhes, se forem importantes:

  • Opensuse 13.2
  • gnome-shell
por pcnate 26.09.2015 / 17:13

2 respostas

3

Você deve tentar

(sleep 5; ls) &  echo "Now"

Isso funciona como você deseja.

    
por 26.09.2015 / 17:29
4

Tudo o que você precisa fazer é remover o ; . & age como um separador de comandos sozinho, portanto, adicionar ; depois disso é inválido.

(sleep 30; command1; command2 param ) & anotherCommand

(Os espaços após o ponto-e-vírgula não são necessários, apenas acho mais fácil ler dessa maneira. Esse é um dos poucos pontos em que os espaços são opcionais na sintaxe do shell - na maioria dos lugares, eles são obrigatórios ou proibidos. )

Quanto a melhores maneiras de fazer isso ... isso realmente depende exatamente do que você está tentando fazer. Precisamos de mais informações para fazer sugestões melhores.

    
por 26.09.2015 / 20:43