php
예를 들어 순차적으로 실행되는 일부 스크립트가 있습니다 .
php index.php import file1 --offline &&
php index.php import file2 --deleteUnused &&
php index.php import file3
이제 나는 이 parallel
명령을 새로 발견하고 다음과 같은 것을 시도했습니다.
parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
그리고 그것은 훌륭하게 작동합니다.
위의 모든 명령이 포함된 파일을 갖고 parallel
옵션을 사용하여 파일에서 명령 읽기를 시작할 수 있습니까?
이 같은:
parallel -XX myFileWithCommands.txt
답변1
만들다 myFileWithCommands.txt
:
php index.php import file1 --offline
php index.php import file2 --deleteUnused
php index.php import file3
그런 다음 실행평행선이와 같이:
parallel -j 3 -- < myFileWithCommands.txt
답변2
글쎄, 나는 이것을 달성하는 두 가지 간단한 방법을 상상할 수 있습니다. 파일 내용을 로 파이프 parallel
하거나 쉘 스크립트를 작성할 수 있습니다. 달성하려는 것이 이 특정 작업 세트뿐이라면 쉘 스크립트가 더 적합할 수 있습니다. 이것은 매우 짧고 간단하며 요점만 설명합니다.
#!/bin/sh
parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
이제 좀 더 일반적인 것을 원한다면(예: 여러 명령 세트를 하나로 로드할 수 있음) 간단한 파일 형식을 만든 다음 파일의 내용을 파이핑하여 시작하는 것이 더 쉬울 수 있습니다 parallel
.
가장 쉬운 방법은 실행하려는 명령을 그대로 텍스트에 포함시키는 것입니다.
예를 들어, 이것이 텍스트 파일( test.txt
)인 경우:
"php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
그런 다음 다음 명령을 실행하면 작동할 수 있습니다.
$ cat test.txt | parallel -j 3 --
약간 더 복잡한 파일 형식을 사용해 볼 수도 있습니다(예: 각 명령은 따옴표로 묶지 않고 새 줄에 표시됩니다). 이 방법을 사용하려면 파일을 로 전송하기 전에 파일을 약간 분석해야 합니다 parallel
.awk
awk '<whatever patterns you match> { do something }' | parallel -j3 --
그러나 보다 유연한 유사한 파일 형식을 만들기로 결정한 경우 매번 입력할 필요가 없도록 도우미 셸 스크립트(또는 함수)를 만드는 것이 도움이 될 수 있습니다 .