当通过 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
。
答案2
这里使用这个:
pnuke -h hosts-file -A java
可以完成每个服务器中的所有java进程
答案3
你能试一下吗:
SSHPASS=`ssh-askpass` PARALLEL_SSH='sshpass ssh' parallel --slf hosts-file script.sh
当父级作业死亡时,GNU Parallel 应该终止远程正在运行的作业。