Na verdade, a substituição de comandos, que não é apenas uma sub-rede, funciona bem. Seu problema é que você quer que ele seja executado no sistema remoto pelo shell remoto, porque os processos que você quer matar são processos no sistema remoto. Então você tem que citar, o que fica um pouco desajeitado, embora você possa descartar o grep
quando tiver awk
. Duas opções são:
ssh user@remote "kill -9 \$(ps -ef | awk '/service_name/{print $2}')"
ssh user@remote 'kill -9 $(ps -ef | awk "/service_name/{print \}")'
No entanto, uma solução melhor para esse problema na maioria dos Linuxes e alguns (?) outros Unixes é pkill
, que faz todo o trabalho de procurar por processos executando um comando em particular e matá-los:
ssh user@remote pkill -9 service_name
Dependendo de como o processo é iniciado, talvez seja necessário procurar na linha de comando completa:
ssh user@remote pkill -f -9 service_name