Убить процесс из lsof после ssh

Я знаю, что процесс работает на порту 5000 на удаленном сервере. Как я могу назвать это в однострочном cmd?

Я могу SSH к этому серверу и сделать kill $(lsof -i:5000 -t), Оно работает.

Из моего местного терминала, если я делаю

ssh user@ip.ip.ip.ip "kill $(lsof -i:5000 -t)"

Выдает ошибку вроде

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

2 ответа

Это вызвано тем, что ваш $(lsof -i:5000 -t) Команда интерпретируется локально, а не удаленно. Просто используйте простые кавычки, чтобы предотвратить локальное расширение. Кроме того, вы также можете избежать частей, которые вы не хотите локально расширяться.

ssh user@ip.ip.ip.ip 'kill $(lsof -i:5000 -t)'
# or
ssh user@ip.ip.ip.ip "kill \$(lsof -i:5000 -t)"

В основном, с ssh:

  • Двойные кавычки и регулярные переменные (то есть: $VAR): локальная экспансия
  • Одинарные кавычки и экранированные переменные (то есть: \$VAR): удаленное расширение

ssh в систему и выполните команду

 lsof -a +L1 | awk '$7 > 1073741824 && NR >1 {print $2}' | sort -nu | xargs kill

это также очистит / освободит другую заблокированную память, а также

Другие вопросы по тегам