在 ssh 之后从 lsof 杀死一个进程
Kill a process from lsof after ssh
我知道远程服务器上的端口 5000 上有一个进程 运行。
我如何在单行命令中调用它?
我可以通过 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]
这是因为您的 $(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 ' > 1073741824 && NR >1 {print }' | sort -nu | xargs kill
它还会cleared/released其他阻塞的内存
我知道远程服务器上的端口 5000 上有一个进程 运行。 我如何在单行命令中调用它?
我可以通过 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]
这是因为您的 $(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 ' > 1073741824 && NR >1 {print }' | sort -nu | xargs kill
它还会cleared/released其他阻塞的内存