Я предполагаю, что причина, по которой вы хотите, чтобы данные были отправлены на несколько компьютеров, заключается в том, что вы не можете легко поместить их во временный файл и передать файл на удаленные машины. Возможно, выходные данные генерируются непрерывно, возможно, они слишком велики для размещения на диске.
GNU Parallel --tee
может вам помочь:
seq 1000 |
parallel --tee --pipe ssh {} wc ::: server1 server2
Замените seq 1000
и wc
своими командами.
В немодифицированной системе GNU/Linux это должно работать на 250 серверах. Если вам нужно больше, у вас закончатся дескрипторы файлов, и вам придется изменить ulimit -n
или nofile
в /etc/security/limits.conf
или /proc/sys/fs/file-max
.
За кулисами запускается следующее (Это немного сложнее, потому что GNU Parallel собирает stdout и stderr из команд, но принцип тот же):
... | tee >(ssh server1 wc) >(ssh server2 wc) >/dev/null
Таким образом, производительность сравнима с tee
. Но это также означает, что будет ssh
для всех серверов параллельно -, а не только для нескольких одновременно.
Решить:
alternative jar can't be slave of java: it is a master alternative
Необходимо добавить java вupdate-alternatives
:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.8.0_271-amd64/bin/java 100
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk1.8.0_271-amd64/bin/javac 100 \
--slave "/usr/bin/jar" "jar" "/usr/java/jdk1.8.0_271/bin/jar"
Чтобы устранить следующую ошибку:
dpkg: error processing package jdk1.8 (--configure):
installed jdk1.8 package post-installation script subprocess returned error exit status 2
Errors were encountered while processing:
jdk1.8
E: Sub-process /usr/bin/dpkg returned an error code (1)