屏蔽正在运行的进程

屏蔽正在运行的进程

有时我会忘记在屏幕会话下运行一个程序并且无法在中途停止它,而且我知道这会花费很长时间。

有没有办法在不重新启动的情况下筛选已经运行的进程?

答案1

在 serverfault 上找到了这个答案伯爵

但是,对于您的实际问题,您可以尝试另一件事:从终端启动作业后,通过键入ctrl-z然后将其置于后台bg
之后,将作业与其父 shell 分离 - 在bash:中disown -h %<jobid>。之后,您可以安全地关闭终端,作业将继续运行。

这个问题来自罗布·韦尔斯

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

答案2

发现重复项服务器故障

该帖子中未找到的另一个解决方案是使用雷蒂开始屏幕会话后。

答案3

看一下雷普特,它的作用正是如此。github 页面上有所有信息。

reptyr - 用于“重新注册”的工具

程式。

reptyr 是一个实用程序,用于获取现有的正在运行的程序并将其附加到新终端。通过 ssh 启动了一个长时间运行的进程,但必须离开并且不想中断它?只需启动一个屏幕,使用 reptyr 抓取它,然后终止 ssh 会话并返回主页。

用法

复制程序 PID

“reptyr PID”将抓取 id 为 PID 的进程并将其附加到您当前的终端。

连接后,该进程将从新终端获取输入并将输出写入新终端,包括 ^C 和 ^Z。(不幸的是,如果您将其置于后台,您仍然必须在旧终端中运行“bg”或“fg”。如果不修补您的 shell,这很可能无法以合理的方式修复。)

相关内容