Como executar um programa em background e também usando && para executar outro comando [closed]

3

Eu quero executar meu aplicativo de nó em segundo plano e enrolar simultaneamente usando & & .Eu tentei seguir mas não trabalho

node app.js &;curl localhost

e eu tentei outro

node app.js & && curl localhost

mas ambos não funcionam

    
por SuperKrish 08.06.2016 / 16:19

3 respostas

2

Você pode querer

echo first && echo second && echo third & wait

que lhe dá a saída (semelhante a)

[1] 4242
first
second
third 
[1]+ Done

O último & coloca todo o comando anterior em um pipeline / job. Esse trabalho consiste em três comandos encadeados usando a expressão booleana do shell. Se um desses retornos for falso, isso deve terminar a cadeia. Mas todos eles serão executados em segundo plano.

O problema com a execução do primeiro programa em segundo plano, mas o segundo em primeiro plano, é que o segundo comando não sabe se o primeiro foi concluído com êxito. Quando você coloca um programa em segundo plano, seu status será 0 a menos que o programa não possa ser executado para começar. Então, o seguinte realmente não faz sentido:

( start_webservice & ) && curl localhost

Isso também não faz sentido:

start_webservice & test "$?" = 0 && curl localhost

Basta iniciar o serviço em segundo plano e testá-lo incondicionalmente. Mais do que provavelmente, você vai querer esperar um pouco antes de fazer o teste:

   start_webservice &
   success=0
   tries=5
   pause=1
   while [ $success = 0 -a $tries -gt 0 ]; do
     sleep $pause
     let tries=tries-1
     curl localhost && success=1
   done
   if [ $success = 0 ]; then
     echo "Launch failed"
   fi
    
por 08.06.2016 / 16:44
1

A palavra-chave certa é & . Não há necessidade de ; .

Exemplo: first_script.sh & second_script.sh

No seu caso:

node app.js & curl localhost
    
por 08.06.2016 / 16:39
1

Use parênteses para agrupar os comandos e, em seguida, um & :

Sintaxe:

( command1 && command2 )&

Exemplo:

( find $HOME > ~/find.log && date >> find.log )&
    
por 08.06.2016 / 16:55