临时控制外壳

mak*_*ghi 2 ssh

在我的办公室计算机(运行 Scientific Linux 6.3)上,我有几个窗口在单独的终端模拟器 ( /dev/pts/) 中运行一些进程。我经常从我的 iPad 用 iSSH 连接到我的办公室电脑,但我只能看到已写入文件的程序的结果,而无法看到每个终端正在显示或控制终端。

我希望能够暂时将终端的控制权切换到我的 iPad iSSH 终端,查看结果,运行新命令(在我的办公室终端上从我的 iPad 上)然后让程序在我的办公室计算机上运行并返回到我的 iSSH终端,所以我可以检查其他终端或干脆退出。由于我大部分时间使用 3G 来连接我的 iPad,我不想使用任何图形相关的方法,这会非常慢。

据我所知,reptyr似乎将进程的控制权从一个终端永久转移到另一个终端,我还没有看到任何人谈论(或询问)将控制权交还给原始终端。我想在完成后将其返回到原来的终端。

我真的很感激任何建议或帮助。提前致谢

Oli*_*lac 8

我相信您只需要在screen会话中运行原始命令即可。

然后你可以断开它(屏幕继续运行并保持你的“虚拟终端”正确显示),并从另一个会话(即,从你的 iPad,或从另一台计算机,或从同一台计算机重新连接到它,当你回到它)。

还有很多事情screen可以做;例如,允许同事在您使用它时或在您离开它时“潜入”您的运行屏幕会话,从而允许多个人在同一个“终端”上偷看。

简而言之:

在您的主终端上,在主机 A 上,作为用户 ORIGINALUSER:

screen
command (ex: vi /tmp/file)
CTRL+a d # which is 'CTRL' and 'a' at the same time, and then 'd'. This will 'd'etach from the screen session, while screen itself still runs! (and inside it the commands, shell and any still running invoked command, still run)
Run Code Online (Sandbox Code Playgroud)

在另一个终端(或同一个)上:

#log in the original machine (host A) as the same user ORIGINALUSER, and then:
screen -r   #will reattach to the latest running screen from that user. 
Run Code Online (Sandbox Code Playgroud)

如果要重新附加多个屏幕,请参阅屏幕手册页或在网上。如果您无法重新连接也很有用:有一些方法可以“强制”它重新连接。

一旦真正完成:您只需退出在屏幕内运行的 shell。这也将终止屏幕命令。

在屏幕中时: ctrl+A 是特殊的,它允许您向屏幕发送命令。尝试:ctrl+A ?