如何并行完成远程服务器中的所有进程?

如何并行完成远程服务器中的所有进程?

当通过 pssh 运行多个服务器时,这里使用

pssh -h hosts-file -A -I script.sh

在script.sh中,它包含几个java命令,

执行完该命令后,我想完成所有过程,这里使用:

pnuke -h hosts-file -A script.sh

但是再次运行该进程时,发现有些端口已经被占用(java命令占用了一些端口,说明各个服务器上的java进程还在运行)使用punk之后,返回信息如下:

[1] 10:43:39 [FAILURE] [email protected]:22 Exited with error code 1
[2] 10:43:39 [FAILURE] [email protected]:22 Exited with error code 1
[3] 10:43:39 [FAILURE] [email protected]:22 Exited with error code 1

那么如何在主服务器中完成所有并行的 Java 进程呢?这样就不需要登录到每个服务器来杀死它们。

答案1

看起来你的pnuke命令不正确,pnuke不接受以同样的方式在标准输入上发送的脚本pssh

来源:https://www.mankier.com/1/pnuke

答案2

这里使用这个:

pnuke -h hosts-file -A java

可以完成每个服务器中的所有java进程

答案3

你能试一下吗:

SSHPASS=`ssh-askpass` PARALLEL_SSH='sshpass ssh' parallel --slf hosts-file script.sh

当父级作业死亡时,GNU Parallel 应该终止远程正在运行的作业。

相关内容