我的办公室工作经常看到我通过VNC连接到一个Linux机器。
有时我会在控制台上启动一个远程工作,稍后才会意识到它的运行时间比预期的要长。 (首先应该在Screen下启动一个…)
我不想让我的工作站在一夜之间运行,只是为了保持VNC会话打开; 我想将已经在运行的远程作业移动到屏幕会话(在远程盒子上),这样我就可以closures工作站(并在第二天早上重新连接)。
这怎么可能呢?
看看reptyr ,这确实如此。 github页面有所有的信息。
reptyr – “重新制作”程序的工具。
reptyr是一个实用程序,可以将现有的正在运行的程序附加到新的terminal上。 通过ssh启动了一个长时间运行的进程,但是不得不离开而不想中断它? 只要开始一个屏幕,使用reptyr抓住它,然后杀死SSH会话,并回家。
用法
reptyr PID
“reptyr PID”将会以PID的forms获取进程并将其附加到当前的terminal。
附加之后,该过程将从新的terminalinput和写入输出,包括^ C和^ Z。 (不幸的是,如果你将其设置为背景,那么你仍然需要在旧的terminal中运行“bg”或者“fg”。
你不能轻易做到这一点。 我build议把它作为一个开始屏幕的习惯,作为你打开控制台后的第一件事情。
但是,对于您的实际问题,您还可以尝试另一个方法:在从terminal启动您的作业之后,通过键入ctrl-z然后bg
。 之后,将作业从它的父shell中分离出来; 在bash中,你会做disown -h %<jobid>
。 之后,您可以安全地closuresterminal,作业将继续运行。
在使用Linux时,在新启动的屏幕过程中使用retty如何?
$ screen -S my_process $ retty $(pgrep my_process) /redraw
HTH
干杯,