Я использую эту команду, чтобы удаленно убить процесс, но он не работает.

ssh -t root@g-9 -x "sshpass -p 'ubuntu' ssh -t root@10.147.243.178 -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.

Есть идеи, где может быть ошибка?

2 ответа2

0

Ты можешь попробовать:

pkill -f cassandra
0

попробуйте заменить вашу командную строку на:

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 из списка процессов

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .