我有一个通过 ssh 在远程服务器上执行的 shell 脚本。它需要执行Ctrl+Z并将 shell 会话置于后台才能暂时返回到我的本地终端。
我尝试了以下命令。 (当前 shell 的 pid,以 $$ 为单位)
suspend
kill -s STOP $$
killall -s STOP $$
kill -s TSTP $$
killall -s TSTP $$
然而,它们都没有按预期工作,如下所示:
命令 1、2、3:
成功暂停会话,但之后我什么也做不了,因为命令提示符没有再次出现。
命令4,5:
似乎没有暂停会话,但执行后出现命令提示符。
有什么办法可以解决吗?
答案1
命令 1-3 没有暂停您的 ssh 会话,而是暂停了您的远程 shell,从该 shell 中可能无法恢复。
远程服务器上的 shell 无法挂起您的 ssh 会话。这必须从本地端使用键盘输入enter ~ ctrl+来完成z。该按键序列由本地 ssh 直接读取,并命令其自行挂起。
我不知道为什么当您可以在本地系统上打开另一个窗口时,为什么要挂起 ssh 会话来获取 shell 提示符。