병렬 및 순차 명령 결합

병렬 및 순차 명령 결합

1. 요약

Linux에서 병렬 명령과 순차 명령을 결합하는 방법을 이해하지 못합니다.


2. 예상되는 동작

의사코드:

pip install pipenv 순서대로 pipenv install --dev

평행선

npm install -g grunt-cli 순서대로 npm install

Windows 일괄 작업에 해당:

start cmd /C "pip install pipenv & pipenv install --dev"
start cmd /C "npm install -g grunt-cli & npm install"

3. 도움이 되지 않음

  1. 나는 그렇게 생각하지 않는다&그리고wait이 문제는 해결될 수 있습니다.댓글을 보았다.
  2. 나는 그것을 읽었다GNU Parallel — 작업을 병렬화하는 더 나은 방법, 하지만 어떤 구문을 사용해야 하는지 찾을 수 없습니다.GNU 병렬, 이 작업을 해결하려면.
  3. 나는 노력한다병렬 쉘:

    parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
    

    전체 .sh파일:

    git clone --depth 1 https://github.com/Kristinita/KristinitaPelican
    wait
    cd KristinitaPelican
    wait
    parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
    

    하지만 먼저 pipenv install --dev명령이 실행된 다음 npm install. 병렬이 아닌 순차적입니다.

답변1

간단히 GNU를 사용하세요parallel:

parallel ::: 'pip install pipenv && pipenv install --dev' \
             'npm install -g grunt-cli && npm install'

답변2

Windows 명령에 해당하는 Unix 스타일은 다음과 같습니다.

(pip install pipenv && pipenv install --dev) >& pip.log &
(npm install -g grunt-cli && npm install) >& npm.log &

그러면 백그라운드에서 두 개의 하위 셸이 시작됩니다. 하나는 pip다음을 실행하고 pipenv( pip오류 없이 완료되는 경우) 다른 하나는 두 npm명령을 실행합니다. 두 명령 세트의 출력은 이해하기 쉽도록 로그 파일로 리디렉션됩니다.

계속하기 전에 이러한 모든 명령이 완료될 때까지 기다려야 하는 경우 다음을 사용하십시오.

wait

당신이 이미 발견했듯이.

POSIX 스타일 셸을 사용하여 작업 순서를 지정하고 병렬화할 때 다음 두 가지 도구를 사용할 수 있습니다.

  • 작업 제어 - 백그라운드에 작업을 배치할 수 있고( &명령 끝에 사용) 작업이 완료될 때까지 기다릴 수 있습니다( wait사용
  • 순차적으로 처리해야 하는 작업을 직렬화하는 등 원하는 방식으로 처리 장치를 분할할 수 있는 subshell입니다.

이는 현재 작업과 같은 간단한 요구 사항에 충분하며 상당한 수준의 작업을 수행할 수 있습니다. 더 복잡한 사용 사례에는 더 고급 도구가 있습니다. GNU Parallel이 그 중 하나이며, 더 세부적인 리소스 제어가 필요한 경우 배치 도구를 살펴보는 것도 좋습니다.

관련 정보