我使用此命令远程终止一个进程,但是它不起作用。
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