ssh连接centos远程服务器运行指令的问题

发布网友

我来回答

1个回答

热心网友

总结下使用ssh远程执行命令需要注意点: 

一般我们会使用ssh ip "执行命令"这种格式来执行远程是shell命令,但是如果是简单的一些操作还好,比如cd,rm,ls,mv等命令一般不会出问题 
,但是如果你的脚本任务是,杀死多台机器上的hadoop或者elasticsearch进程,你会怎么做? 

* http://www.dotdy.com/


直接使用: 

ssh h1 "kill -9 `jps | grep Elastic*  | gawk '{print $1}'  ` " 杀死es进程,你会发现,它竟然没有生效? 明明在本地执行 

kill -9 `jps | grep Elastic*  | gawk '{print $1}'  ` 

这个命令是可以生效的,为啥,放到远程执行命令中就失效了呢? 

其实原因很简单,就是因为没有转义造成的,包括awk变量名引用都需要转义,否则,你会发现,虽然能执行,但结果依旧是不准确的,注意linux中 
单引号(所有命令均被当成普通字符处理) 
双引号(可引用变量名) 
反引号(可以执行linux脚本命令)的区别 
看最终的正确的写法: 

Java代码  

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com