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ストレージシステムである1つのホスト(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
arデバイス 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

おすすめ記事