gpt4 book ai didi

Linux 命令中的命令

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:23 25 4
gpt4 key购买 nike

我的用例是在多个服务器上远程运行命令。我在主机之间建立了信任。

所以我有一个这样的命令:命令 1:

for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'Place Ur command Here' > foo.out 2> foo.err < /dev/null &"; done

另一个是:命令2:

rm -rf /floderPath

当我组合(命令 1 + 命令 2)这两个时,它工作正常,并且后续文件夹将从所有主机中删除。

for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'rm -rf /floderPath' > foo.out 2> foo.err < /dev/null &";done

现在我有另一个命令。如果我在所有主机上单独运行此命令,它可以正常工作并杀死所有 java 进程。命令 3:

for i in `ps -ef | grep -v grep | grep java | awk '{print $2}'`; do kill -9 $i; echo "Process id $i is killed"; done

但是现在当我组合命令 1 和命令 3 时,它根本不起作用。我在这里想做的是杀死所有主机上的所有 JAVA 进程。

for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'for j in `ps -ef | grep -v grep | grep java | awk '{print $2}'`; do kill -9 $j; echo "Process id $j is killed"; done' > foo.out 2> foo.err < /dev/null &";done

我可以猜测引号的使用可能不正确,但我尝试了各种组合,但它对我不起作用。我在脚本编写方面没有太多经验,因此请原谅明显的错误。

最佳答案

我认为以下引用应该有效...

for i in 11 12 13 14 15 16; do
echo host-name-dev-$i
ssh -q host-name-dev-$i "nohup bash -c \"for j in \\\`ps -ef | grep -v grep | grep java | awk '{print \\\$2}'\\\`; do kill -9 \\\$j; echo \\\"Process id \\\$j is killed\\\"; done\" > foo.out 2> foo.err < /dev/null &"
done

更新:请不要因为转义字符的数量而自杀。

关于Linux 命令中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com