SSH(및 공개 키 인증)를 통해 연결되는 원격 장치에 대한 gnu-parallel의 요구 사항은 무엇입니까?

SSH(및 공개 키 인증)를 통해 연결되는 원격 장치에 대한 gnu-parallel의 요구 사항은 무엇입니까?

나는 Gnu 병렬을 사용하고 있습니다.

내 환경에 뭔가 문제가 있는 것 같아요.

내가 달성하고 싶은 것:
여러 컴퓨터에서 명령을 실행해 보세요.
이를 위해 다음과 같은 항목이 포함된 sshloginfile(~/.parallel/sshloginfile이라는 이름이 적절함)을 만들었습니다.

#  define hostgroup debian
@debian/5-1.p
@debian/6-1.p
@debian/7-1.p
...
#  define hostgroup qnap with only 1 cpu
1/@qnap/4-1.a
#  define hostgroup macos
@macos/33-1.w
#  local computer
@macos/:

호스트 그룹(@debian, @qnap, ...) 뒤에 오는 이름(5-1.p, 6-1.p, ...)은 ~/.ssh/config의 항목입니다. 모든 SSH 연결은 공개 키 인증을 통해 인증됩니다.

간단한 명령으로 가동 시간을 보고 싶습니다.

parallel --jobs 0 --nonall --tag --slf .. uptime

아름다운 일

:   19:25  up 4 days, 23:02, 3 users, load averages: 2.14 1.86 1.79
5-1.p    19:25:27 up 23 days, 18:54,  0 users,  load average: 0.05, 0.13, 0.18
6-1.p    19:26:04 up 20:05,  0 users,  load average: 0.03, 0.08, 0.10
4-1.a   sh: line 0: exec: perl: not found

QNAP 스토리지 시스템인 하나의 호스트(4.1-a)를 제외하고.

놀랍게도 명령은아니요sshloginfile을 사용하되 이 서버에 직접 주소를 지정하세요.하다일하다:

parallel --jobs 0 --nonall --tag ssh 4-1.a uptime

산출:

19:28:37 up 16 days,  8:24, load average: 0.72, 0.61, 0.59

따라서 장치가 sshloginfile을 통해 주소가 지정되는 경우 종속성/전제 조건이 충족되어야 하지만 그렇지 않은 경우에는 충족되어야 하는 것 같습니다. 그리고 Perl인 것 같지만 실제로는 QNAP 스토리지 시스템에 설치되어 있지 않습니다.
왜 이런 일이 일어나는지 아는 사람이 있나요?

병렬 버전: GNU 병렬 20181222
호스트 OS 버전: Darwin 18.2.0 Darwin 커널 버전 18.2.0: 2018년 11월 12일 월요일 20:24:46 PST; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 [ macOS 10.14.2 ]
작동 장치의 OS 버전: Linux 4.14.90+ #1183 Fri Dec 21 13:50:04 GMT 2018 armv6l GNU/Linux OS
버전 "버기" 장치 4-1.a: Linux 3.4 6 #1 Wed Jan 2 07. :02:07 CST 2019 armv5tel 알 수 없음

부록: 매뉴얼 페이지에는 다음과 같이 명시되어 있습니다.
DEPENDENCIES
GNU는 Perl 모듈 Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX 및 File::Temp와 함께 Perl을 병렬로 사용합니다. 원격 사용을 위해 rsync 및 ssh도 사용합니다.

rsync가 "문제가 있는" 장치에 설치되었습니다.

답변1

perl20150122년부터 GNU Parallel은 원격 시스템에 설치하는 데 의존해 왔습니다 .

당신이 보고 있는 것은 qnap서버에 Perl이 설치되어 있지 않음을 나타냅니다.

실행하는 경우:

parallel -vvS server echo ::: foo
parallel -vvS server --wd ...  --trc {}.foo touch {}.foo ::: *

GNU Parallel이 실제로 무엇을 하는지 알게 될 것입니다. 보시다시피 이는 매우 복잡하며 Perl 스크립트로 구성됩니다. 이것이 원격 시스템에 Perl이 필요한 이유입니다.

이에 대한 자세한 내용은 다음을 참조하세요.https://www.gnu.org/software/parallel/parallel_design.html#The-remote-system-wrapper

내 추측은 다음과 같습니다

parallel -S 1/4-1.a echo ::: foo

또한 다음과 같은 결과가 발생합니다.

sh: line 0: exec: perl: not found

따라서 해결책은 에 있을 수 있습니다 qnap.

관련 정보