Programming

한 줄로 bash에서 여러 백그라운드 명령을 어떻게 실행합니까?

procodes 2020. 6. 13. 20:05
반응형

한 줄로 bash에서 여러 백그라운드 명령을 어떻게 실행합니까?


나는 보통 다음과 같은 여러 명령을 실행합니다.

sleep 2 && sleep 3

또는

sleep 2 ; sleep 3

그러나 하나의 명령 줄 명령으로 백그라운드에서 둘 다 실행하려면 어떻게해야합니까?

sleep 2 & && sleep 3 &

작동하지 않습니다. 그리고 어느 쪽도 대체하지 않습니다 &&와 함께;

그것을 할 수있는 방법이 있습니까?


정확히 어떻게 달리기를 원하십니까? 백그라운드에서 시작하고 순차적으로 실행 하려면 다음과 같이하십시오.

(sleep 2; sleep 3) &

반면에 백그라운드 에서 병렬 로 실행 하려면 대신 다음을 수행하십시오.

sleep 2 & sleep 3 &

그리고 다음과 같은 두 가지 기술을 결합 할 수 있습니다.

(sleep 2; echo first finished) & (sleep 3; echo second finished) &

bash는 bash이기 때문에 때로는 동일한 작업을 수행하는 데는 여러 가지 다른 기술이 있지만 때로는 약간의 차이가 있습니다.


마지막 버전에 일부 파렌을 추가해야합니다.

(sleep 2 &) && (sleep 3 &)

또는 이것도 작동합니다.

(sleep 2 &) ; (sleep 3 &)

여러 백그라운드 명령을 실행하려면 &각 명령의 끝 을 추가해야합니다 . 전의:(command1 &) && (command2 &) && (command3 &)


위의 답변은 괄호를 사용합니다. Bash는 비슷한 목적으로 중괄호를 사용할 수도 있습니다.

{ sleep 2 && sleep 3; } &

중괄호는 구문에 대해 까다 롭습니다. 공백 뒤에 {, 공백 앞에 }및 마지막 세미콜론이 필요합니다. 경우에 따라 버팀대는 새 서브 쉘을 포크하지 않기 때문에보다 효율적입니다. 이 경우 차이가 있는지 모르겠습니다.


이것은 작동합니다 :

$(sleep 2 &) && sleep 3 &

또한 당신은 할 수 있습니다 :

$(sleep 2 && sleep 3) &

나도 같은 임무를 가지고 있습니다. 나는 시도했다 (sleep2 ; fg )& sleep3 ; fg가 일하고있다. 그리고 ctrl + c를 두 배로 만들면 두 프로세스가 중단 될 수 있습니다.


여러 명령을 순차적으로 실행하려면 실제로 어디에서나 작동하는 간단한 방법이 있습니다. 파일 만들기! 이 방법의 장점은 깨끗하고 단순하다는 것입니다.

먼저 이름을 가진 파일을 만드십시오 (예 :) commands.sh. 그런 다음 명령을 거기에 넣으십시오. 샘플은 다음과 같습니다.

commands.sh:

#!/system/bin/sh

sleep 3;
sleep 2;

이제 우리는 마지막 단계에 있습니다. 백그라운드에서 (순차적으로) 명령을 실행하려면 다음을 실행하십시오.

$ sh commands.sh &

참고 URL : https://stackoverflow.com/questions/14612371/how-do-i-run-multiple-background-commands-in-bash-in-a-single-line

반응형