백그라운드에서 프로그램을 실행하고 &&를 사용하여 다른 명령을 실행하는 방법 [닫기]

백그라운드에서 프로그램을 실행하고 &&를 사용하여 다른 명령을 실행하는 방법 [닫기]

백그라운드에서 노드 앱을 실행하고 컬링하는 동안 &&를 사용하고 싶습니다. 따라해봤는데 안되네요

node app.js &;curl localhost

나는 다른 것을 시도했다

node app.js & && curl localhost

하지만 둘 다 작동하지 않습니다

답변1

당신은 원할 수도 있습니다

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

이것은 당신에게 출력을 제공합니다 (유사)

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

마지막 명령은 &전체 이전 명령을 파이프라인/작업에 넣습니다. 작업은 쉘 부울 표현식을 사용하여 함께 연결된 세 가지 명령으로 구성됩니다. 그 중 하나가 false를 반환하면 체인이 종료되어야 합니다. 하지만 모두 백그라운드에서 실행됩니다.

첫 번째 프로그램은 백그라운드에서 실행하고 두 번째 프로그램은 포그라운드에서 실행할 때의 문제점은 두 번째 명령이 첫 번째 명령이 성공적으로 완료되었는지 알 수 없다는 것입니다. 프로그램을 백그라운드에 놓으면 상태가 0이 됩니다.~하지 않는 한프로그램을 실행할 수 없습니다. 따라서 아래 코드는 실제로확실히합리적인:

( start_webservice & ) && curl localhost

이것도 말이 안 됩니다:

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

그냥 백그라운드 서비스를 시작하고 무조건 테스트해보세요. 테스트하기 전에 잠시 기다려야 할 가능성이 높습니다.

   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

답변2

올바른 키워드는 &.not 필수 입니다 ;.

예:first_script.sh & second_script.sh

귀하의 경우:

node app.js & curl localhost

답변3

괄호를 사용하여 명령을 그룹화한 후 다음을 사용하십시오 &.

통사론:

( command1 && command2 )&

예:

( find $HOME > ~/find.log && date >> find.log )&

관련 정보