백그라운드에 여러 작업을 배치하는 것은 단일 시스템의 여러 코어를 사용하는 좋은 방법입니다. parallel
그러나 네트워크의 여러 서버에 작업을 분산시킬 수 있습니다. 보낸 사람 man parallel
:
GNU parallel은 하나 이상의 컴퓨터를 사용하여 병렬로 작업을 실행하기위한 쉘 도구입니다 . 일반적인 입력은 파일 목록, 호스트 목록, 사용자 목록, URL 목록 또는 테이블 목록입니다.
단일 컴퓨터에서 실행하는 경우에도 parallel
작업이 병렬화되는 방식을 훨씬 효과적으로 제어 할 수 있습니다. man
페이지 에서이 예제를 보자 .
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
그래, 너도 똑같이 할 수있어
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
그러나 더 길고 번거롭고 더 중요한 것은 .wav
파일 이있는만큼 많은 작업을 시작한다는 것 입니다. 수천 개의 파일에서이 파일을 실행하면 일반 랩톱이 무릎에 닿을 수 있습니다. parallel
반면에 CPU 코어 당 하나의 작업을 시작하고 모든 것을 깔끔하고 깔끔하게 유지합니다.
기본적으로 parallel
작업 실행 방식과 사용 가능한 리소스 양을 미세 조정할 수있는 기능을 제공합니다. 이 도구의 강력한 기능을 실제로 보려면 설명서 나 최소한 제공되는 예제를 살펴보십시오.
단순한 배경 작업은 실제로 병렬 수준과 비교할 정교함 수준에 가깝습니다. 어떻게 parallel
다른지 에 관해서 는 xargs
, GNU 군중은 여기에 좋은 고장을 줍니다. 보다 두드러진 몇 가지 사항은 다음과 같습니다.
- xargs는 특수 문자 (예 : 공백, '및 ")를 잘못 처리합니다.
- xargs는 지정된 수의 작업을 병렬로 실행할 수 있지만 CPU 코어 수 작업을 병렬로 실행할 수는 없습니다.
- xargs는 출력 그룹화를 지원하지 않으므로 출력이 함께 실행될 수 있습니다. 예를 들어 라인의 첫 번째 절반은 한 프로세스에서 왔고 마지막 절반은 다른 프로세스에서 온 것입니다.
- xargs는 출력 순서를 유지하도록 지원하지 않으므로 xargs를 사용하여 작업을 병렬로 실행하는 경우 첫 번째 작업이 완료 될 때까지 두 번째 작업의 출력을 연기 할 수 없습니다.
- xargs는 원격 컴퓨터에서 작업을 실행할 수 없습니다.
- xargs는 컨텍스트 대체를 지원하지 않으므로 인수를 작성해야합니다.
parallel
문법, 증오의 또 다른 새로운 브랜드의 페이스 페이스 롤을 싫어한다 . 그러나 코어 / 작업 간의 자동 밸런싱이 가치가 있다고 생각합니다 ...?