bash - 在 ssh 之后从 lsof 杀死一个进程

标签 bash ubuntu ssh quoting

我知道一个进程正在远程服务器的 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]

最佳答案

这是因为您的 $(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):远程扩展
  • 关于bash - 在 ssh 之后从 lsof 杀死一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078249/

    相关文章:

    php - ffmpeg:在php中使用返回的数据

    linux - 在文件中运行时,BLKID 在 Linux 中不提供输出

    Linux bashrc 困惑

    ubuntu - ubuntu 上 unixodbc 的 ODBCDM_Home 的正确值是多少

    python - 让 dogtail 示例脚本在 Ubuntu 10.04 上运行

    PYTHONPATH 错误 Linux 终端 v 控制台

    linux - 将 Windows SSH 连接到 CentOS 7 for git

    mysql - 通过ssh访问Mysql(不允许隧道)

    bash - 如何在单行中输出用引号括起来的文件名?

    python - 如何通过 Paramiko 获取广播消息