Problemas con la conexión ssh al servidor remoto centos al ejecutar instrucciones
Generalmente usaremos el formato ssh IP "Ejecutar comando" para ejecutar comandos remotos o comandos de shell, pero si es una operación simple, como cd, rm, ls, mv y otros comandos, habrá No habrá problema. ¿Ya?
Pero si tu tarea de script es eliminar procesos de hadoop o elasticsearch en varias máquinas, ¿qué harías? ?
¿Película ética? /
Usar directamente:?
ssh h 1 " kill-9 ` jps | grep Elastic *? | gawk "{ print $1 }"?`" Elimina el proceso es, ¿encontrarás que no tiene efecto? ¿Aparentemente se ejecuta localmente?
kill -9 `jps | grep Elástico*? | ¿mirar boquiabierto "{ imprimir $1 }"? `?
Este comando puede tener efecto, ¿por qué falla cuando se coloca en un comando de ejecución remota? ?
De hecho, la razón es muy simple, porque no hay escape, incluidas las referencias de nombres de variables awk, todas deben escaparse; de lo contrario, encontrará que, aunque se puede ejecutar, el resultado aún es inexacto . ¿Preocupado por Linux?
¿Comillas simples (todos los comandos se tratan como caracteres normales)?
¿Comillas dobles (se pueden citar los nombres de las variables)?
¿Cuál es la diferencia entre comillas invertidas (se pueden ejecutar comandos de script de Linux)?
Mira la ortografía final correcta:?
Código Java
¿Song Seung-heon? $anfitrión? "?es_pid=\`jps?|?grep?Elasticsearch?|?dumb?{print?\$1}'\`?& amp& amp?kill?\$es_pid "