Убить процесс из 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
это также очистит / освободит другую заблокированную память, а также