%3F.png)
Estoy usando gnu-parallel.
Supongo que hay un problema con mi entorno. Lo que quiero lograr:Intentando ejecutar un comando en varias máquinas.
Para eso, he creado un archivo sshlogin (acertadamente llamado ~/.parallel/sshloginfile) con algunas entradas como:
# 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/:
Los nombres (5-1.p, 6-1.p, ...) detrás de los grupos de host (@debian, @qnap, ...) son entradas en ~/.ssh/config. Todas las conexiones ssh se autentican mediante autenticación de clave pública.
Como comando simple me gustaría ver el tiempo de actividad:parallel --jobs 0 --nonall --tag --slf .. uptime
funciona maravillosamente
: 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
excepto un host (4.1-a), que es un sistema de almacenamiento de QNAP.
Para mi sorpresa, el comandonousando el archivo sshlogin, pero en su lugar dirigiéndose directamente a este servidorhacetrabajar:parallel --jobs 0 --nonall --tag ssh 4-1.a uptime
salidas:
19:28:37 up 16 days, 8:24, load average: 0.72, 0.61, 0.59
Por lo tanto, parece haber una dependencia/requisito previo que debe cumplirse si se accede a un dispositivo a través de sshloginfile, que de lo contrario no es necesario. Y parece ser Perl, que de hecho no está instalado en el sistema de almacenamiento de QNAP.¿Alguien tiene idea de por qué sería esto?
Versión de paralelo: GNU paralelo 20181222
versión del sistema operativo del host: Darwin 18.2.0 Darwin Kernel Versión 18.2.0: lunes 12 de noviembre a las 20:24:46 PST de 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 [macOS 10.14.2]
versión del sistema operativo de los dispositivos en funcionamiento: Linux 4.14.90+ #1183 viernes 21 de diciembre 13:50:04 GMT 2018 armv6l GNU/Linux
versión del sistema operativo de "problemático " dispositivo 4-1.a: Linux 3.4.6 #1 miércoles 2 de enero 07:02:07 CST 2019 armv5tel desconocido
Anexo: La página de manual dice:
DEPENDENCIAS
GNU paralelo usa Perl y los módulos Perl Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX y File::Temp. Para uso remoto también usa rsync con ssh.
Respuesta1
GNU Parallel depende desde 20150122 de perl
estar instalado en el sistema remoto.
Lo que estás viendo me sugiere que el qnap
servidor no tiene Perl instalado.
Si tu corres:
parallel -vvS server echo ::: foo
parallel -vvS server --wd ... --trc {}.foo touch {}.foo ::: *
Verá qué se está ejecutando realmente GNU Parallel. Como puede ver, es bastante complejo e incluye un script Perl. Ésta es la razón por la que se necesita Perl en el sistema remoto.
Para más detalles sobre esto lea:https://www.gnu.org/software/parallel/parallel_design.html#The-remote-system-wrapper
Mi conjetura es que:
parallel -S 1/4-1.a echo ::: foo
también resultará en:
sh: line 0: exec: perl: not found
Entonces, la solución probablemente sea instalar Perl en qnap
.