A의 표준 출력을 B로 병렬화해도 안전한가요?

A의 표준 출력을 B로 병렬화해도 안전한가요?

나는 뛰고있어 A file | B --params > file.txt. 처리 속도를 높이고 싶었기 때문에 parallel -j+0< a.txt동시에 실행되는 20개의 작업을 사용했습니다. a.txt에는 모든 명령이 포함되어 있습니다.

A file1 | B --params > file1.txt 

A file2 | B --params > file2.txt

A fileN | B --params > fileN.txt

이 길은 안전한가요? 병렬로 실행될 때 다른 프로그램의 표준 출력이 엉망이 되나요?

답변1

병렬로 실행될 때 다른 프로그램의 표준 출력이 엉망이 되나요?

이는 모두 별도의 파일에 쓰는 별도의 프로세스인 경우에는 해당되지 않습니다. 각 인스턴스는 B다르며 자체 위치로 출력됩니다.

답변2

B의 각 인스턴스가 다른 파일에 쓰는 한 괜찮습니다. 그러나 이 접근 방식의 보안은 궁극적으로 B에 달려 있습니다.

예를 들어, 과거에 귀하의 솔루션과 유사한 작업을 수행하려고 할 때 잘못 코딩된 프로그램에 갇힌 적이 있습니다. 제 경우에는 프로그램이 - 기반 임시 파일을 사용 srand(time(NULL))하고 씁니다 . rand()10개의 프로그램 인스턴스가 동시에 시작되면 큰 혼란이 발생할 수 있습니다. 왜냐하면 모두 동일한 임시 파일에 쓰기 때문입니다.

프로그램에 이와 같은 오류가 포함되어 있지 않고 일부 고정 경로에 쓰지 않는 한 괜찮을 것입니다.

답변3

이것이 유일한 경우이다아니요안전한 것은 A 또는 B 기록기(예: /etc/passwd)에 하드 코딩된 리소스입니다.

하지만 대부분의 프로그램에서는아니요사례. 따라서 병렬로 실행하는 것이 안전합니다.

관련 정보