gnu-parallel 對透過 ssh(和公鑰身份驗證)聯繫的遠端設備有哪些要求

gnu-parallel 對透過 ssh(和公鑰身份驗證)聯繫的遠端設備有哪些要求

我正在使用 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

除了一台主機(4.1-a)之外,它是 QNAP 儲存系統。

令我驚訝的是,命令不是使用 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,其實威聯通儲存系統上並沒有安裝。
有人知道為什麼會這樣嗎?

平行版本:GNU並行20181222
主機作業系統版本:Darwin 18.2.0 Darwin Kernel Version 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]
工作設備的作業系統版本:Linux 4.14.90+ #1183 Fri Dec 21 13:50:04 GMT 2018 作業系統
版本有問題「設備 4-1.a:Linux 3.4.6 #1 Wed Jan 2 07:02:07 CST 2019 armv5tel 未知

附錄:手冊頁指出:
依賴項
GNU 並行使用 Perl,以及 Perl 模組 Getopt::Long、IPC::Open3、Symbol、IO::File、POSIX 和 File::Temp。對於遠端使用,它還使用 rsync 和 ssh。

rsync 安裝在「有問題」的裝置上。

答案1

自 20150122 年起,GNU Parallel 就依賴perl安裝在遠端系統上。

您所看到的情況表明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.

相關內容