%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%97%B0%EA%B2%B0%EB%90%98%EB%8A%94%20%EC%9B%90%EA%B2%A9%20%EC%9E%A5%EC%B9%98%EC%97%90%20%EB%8C%80%ED%95%9C%20gnu%20%EB%B3%91%EB%A0%AC%20%EC%9A%94%EA%B5%AC%20%EC%82%AC%ED%95%AD%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 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을 통해 주소가 지정되는 경우 충족해야 하는 종속성/전제 조건이 있는 것 같습니다. 그렇지 않으면 필요하지 않습니다. 그리고 그것은 실제로 QNAP 스토리지 시스템에 설치되지 않은 Perl인 것 같습니다.왜 이것이 될지 아는 사람이 있습니까?
병렬 버전: GNU 병렬 20181222
호스트 OS 버전: Darwin 18.2.0 Darwin 커널 버전 18.2.0: Mon Nov 12 20:24:46 PST 2018; 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을 사용하고 Perl 모듈 Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX 및 File::Temp가 사용된다고 명시되어 있습니다. 원격 사용을 위해 ssh와 함께 rsync도 사용합니다.
답변1
perl
GNU Parallel은 20150122년부터 원격 시스템에 설치되는 것에 의존해 왔습니다 .
당신이 보고 있는 것은 서버에 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
따라서 해결책은 아마도 Perl을 qnap
.