如何在 shell 脚本中使用 Ctrl+Z 暂停 SSH 会话?

如何在 shell 脚本中使用 Ctrl+Z 暂停 SSH 会话?

我有一个通过 ssh 在远程服务器上执行的 shell 脚本。它需要执行Ctrl+Z并将 shell 会话置于后台才能暂时返回到我的本地终端。

我尝试了以下命令。 (当前 shell 的 pid,以 $$ 为单位)

  1. suspend
  2. kill -s STOP $$
  3. killall -s STOP $$
  4. kill -s TSTP $$
  5. killall -s TSTP $$

然而,它们都没有按预期工作,如下所示:

命令 1、2、3:
成功暂停会话,但之后我什么也做不了,因为命令提示符没有再次出现。

命令4,5:
似乎没有暂停会话,但执行后出现命令提示符。

有什么办法可以解决吗?

答案1

命令 1-3 没有暂停您的 ssh 会话,而是暂停了您的远程 shell,从该 shell 中可能无法恢复。

远程服务器上的 shell 无法挂起您的 ssh 会话。这必须从本地端使用键盘输入enter ~ ctrl+来完成z。该按键序列由本地 ssh 直接读取,并命令其自行挂起。

我不知道为什么当您可以在本地系统上打开另一个窗口时,为什么要挂起 ssh 会话来获取 shell 提示符。

相关内容