파일에서 명령을 읽는 방법은 무엇입니까?

파일에서 명령을 읽는 방법은 무엇입니까?

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 --그러나 보다 유연한 유사한 파일 형식을 만들기로 결정한 경우 매번 입력할 필요가 없도록 도우미 셸 스크립트(또는 함수)를 만드는 것이 도움이 될 수 있습니다 .

관련 정보