首页 > 解决方案 > 使用命令字符串运行 ssh 如何在幕后工作?

问题描述

当我使用命令字符串运行它时,我很难理解ssh幕后的工作原理。

通常,我输入ssh rick@1.2.3.4然后我登录到远程机器并运行一些命令。如果我不使用nohupor disown,一旦我关闭会话,所有正在运行的进程ssh都将停止。那是普通的情况。

但是如果我ssh使用命令字符串运行,事情就会变得不同。如果我关闭会话,则开始的过程 ssh 不会停止

例如:

  1. 从本地命令行运行:ssh rick@1.2.3.4 "while true; do echo \"123test\" >> sshtest.txt"; done
  2. 运行远程脚本ssh rick@1.2.3.4 './remoteScript_whichDoTheSameAsAbove.sh'

Ctrl + C通过本地计算机或在本地计算机上关闭会话后kill pid,在远程计算机上,我看到该进程仍在运行ps -ef

ssh所以我的问题是,当我使用上面的命令字符串运行它时,有人可以简要介绍一下它是如何工作的吗?


另外,当我在搜索过程中看到这两个相关问题时,我会感到非常困惑:

Q1:让 ssh 在目标机器的后台执行命令。这个问题要问什么?不是ssh rick@1.2.3.4 'some command' 已经作为单独的 shell/pts 运行了吗?我不明白“在后台”是什么意思。

Q2:SSH 会话断开后保持进程运行简单地运行一个远程脚本不是满足他的要求吗?ssh rick@1.2.3.4 "./remoteScript.sh. 当我在那个问题下看到这么多“神奇”的答案时,我感到非常困惑。

标签: ssh

解决方案


推荐阅读