ssh - 使用命令字符串运行 ssh 如何在幕后工作?
问题描述
当我使用命令字符串运行它时,我很难理解ssh
幕后的工作原理。
通常,我输入ssh rick@1.2.3.4
然后我登录到远程机器并运行一些命令。如果我不使用nohup
or disown
,一旦我关闭会话,所有正在运行的进程ssh
都将停止。那是普通的情况。
但是如果我ssh
使用命令字符串运行,事情就会变得不同。如果我关闭会话,则开始的过程 ssh
不会停止。
例如:
- 从本地命令行运行:
ssh rick@1.2.3.4 "while true; do echo \"123test\" >> sshtest.txt"; done
- 运行远程脚本
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
. 当我在那个问题下看到这么多“神奇”的答案时,我感到非常困惑。
解决方案
推荐阅读
- nsepy - 如何从 get_history 函数中获取相关数据,只说“基础价格”,没有日期
- python - 比较python中的文件和文件夹名称
- shell - 如何在linux shell脚本中获取hbase的所有表并对每张表进行操作?
- html - 在导航栏 bootstrap-4 Beta 下方放置一个背景图片
- php - Redmine + PHP Wamp:如何在现有 Wamp 服务器中安装 Redmine
- ios - 无法仅重新加载选定的单元格
- java - 异步 Web 服务方法 (JAVA CXF)
- sql - SQL - 以两种不同方式查询相关表
- hadoop - 嵌套选择在蜂巢中不起作用
- r - 读取多个 xlsx 文件,每个文件都有多个工作表 - purrr