한 줄로 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 &
'Programming' 카테고리의 다른 글
Android 8.1로 업그레이드 한 후 startForeground가 실패 함 (0) | 2020.06.13 |
---|---|
Visual Studio에서 줄 번호 표시를 사용하도록 설정 (0) | 2020.06.13 |
Django 템플릿에 현재 연도를 표시하는 방법은 무엇입니까? (0) | 2020.06.13 |
MySQL-WHERE 절에서 COUNT (*) 사용 (0) | 2020.06.13 |
모든 핵심 데이터 관계에 역수가 있어야합니까? (0) | 2020.06.13 |