我如何远程终止一个进程?

我如何远程终止一个进程?

我使用此命令远程终止一个进程,但是它不起作用。

ssh -t root@g-9 -x "sshpass -p 'ubuntu' ssh -t [email protected] -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -x 'kill -9 `ps aux | grep cassandra | awk '{print $2}'`'"
Warning: Permanently added '10.147.243.178' (ECDSA) to the list of known hosts.
bash: line 0: kill: (12720) - No such process
Connection to 10.147.243.178 closed.

知道哪里可能出现错误吗?

答案1

尝试用以下方式替换命令字符串:

kill -9 `ps aux | grep cassandra | grep -v "grep " | awk '{print $2}'`

这将阻止 grep 出现在您尝试解析的结果中。

实际发生的情况是,您的解析正在获取您的 grep 进程,并尝试终止它,但它已经完成。当您 grep 一个在ps的输出中不存在的字符串时,您将得到一个响应,但它将是该进程的 PID grep,这对您毫无用处。

IE(我没有名为“thisIsNotAProcess”的进程):

Minty17 ~ $ ps -aux | grep "thisIsNotAProcess"
username    9364  0.0  0.0  11740   936 pts/2    S+   04:38   0:00 grep --colour=auto thisIsNotAProcess

如果你将它插入到命令字符串中:

Minty17 ~ $ kill -9 `ps aux | grep thisIsNotAProcess | awk '{print $2}'`
bash: kill: (9374) - No such process

点击此处了解更多避免此陷阱的技术:从进程列表中排除 grep

答案2

你可以试试:

pkill -f cassandra

相关内容