Почему это не убивает удаленный процесс?
Следующая команда работает в локальном терминале:
ps aux | grep "script.py" | awk {'print $2'} | xargs kill -2
Но эта команда не работает удаленно:
ssh -o ConnectTimeout=6 john@remote-pc ps aux | grep "script.py" | awk {'print $2'} | xargs kill -2
... хотя script.py на удаленном принадлежит Джону, пользователь, которого мы ssh как. Я могу успешно пинговать и другие команды успешно.
1 ответ
Решение
Вы должны избежать труб, чтобы заставить их быть переданы ssh
команда, а не выполняется вашей локальной оболочкой, иначе все после ps aux
выполняется на вашей локальной машине.
ssh -o ConnectTimeout=6 john@remote-pc ps aux \| grep "script.py" \| awk {\'print $2\'} \| xargs kill -2