筛选正在运行的进程


24

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

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

Answers:


12

发现从serverfault这个答案伯爵

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

这是来自Rob Wells的相同问题:

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


有什么办法可以使工作再次崭露头角?“屏幕”然后“ fg 1”对我不起作用
Putnik

@Putnik-您是否按照说明进行了其他步骤?
沃伦

7

ServerFault中找到了重复项。

在该帖子中找不到的另一种解决方案是在启动屏幕会话后使用retty


5
我删除了答案;您可以(并且应该)在2天后接受自己的答案。请随意在此处引用相关部分,因为跨站点的“重复项”实际上并不是重复的,因为受众不同。
杰夫·阿特伍德

4
但是根据Jeff的建议,您没有引用相关部分。=)
大卫说恢复“莫妮卡”(Monica)

5

看一看reptyr,它就是这样做的。github页面包含所有信息。

reptyr-一种“重新间谍”工具

程式。

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

用法

复数PID

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

附加后,该过程将从新终端接收输入并将输出写入新终端,包括^ C和^ Z。(不幸的是,如果您将其作为背景,您仍然必须在旧终端中运行“ bg”或“ fg”。如果不修补外壳,可能无法以合理的方式进行修复。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.