Linux - 与进程通信?重新加入进程?

时间:2009-05-25 17:46:55

标签: linux ubuntu console

我觉得这有点愚蠢,但我对linux相对较新(在经验方面比时间更多),而且我一直想知道的一件事是我能否“重新加入”(我自己的用语)进程正在运行。

例如,如果我将游戏服务器或eggdrop IRC bot设置为在后台运行,是否有一个命令可用于查看该过程的运行情况并查看它提供给控制台的所有输出?

我不是在谈论使用'top'命令查看进程,而是实际链接到它,就好像我只是从命令行运行它。

感谢。

4 个答案:

答案 0 :(得分:5)

调试器可以“附加”到正在运行的进程,但您最好在screen中运行程序(这样可以以相当自然的方式分离并重新连接到终端)。 / p>


可能有一些好东西:

答案 1 :(得分:2)

你能更具体一点吗?您是在谈论在当前会话中对进程进行后台处理,然后将其放回到前台。

E.g:

doLongTask &

# Later

fg %3
此示例中的<3>是此doLongTask实例的作业编号。您可以通过以下方式查看所有正在运行的作业:

jobs

但请注意,这仍然只会让您看到输出到控制台的内容。 I.E. stdout和stderr,减去任何重定向。

答案 2 :(得分:2)

简单的答案是:

>> ./runmyserver
<press ctrl-z>
>> bg
>> ...do something else ...
>> fg

你也可以在后台开始:

>> ./runmyserver &

对于更复杂的事情,比如将服务器与控制台会话断开连接(因此当你注销时它仍在运行)你真的想要屏幕。也许乞求它们,它不是真正的安全风险,它是一个有用的程序。

另请注意,ctrl-z实际上会暂停您的服务器直到bg所以如果人们正在播放它可能会跳过一个节拍,最好快速完成。

最后,许多游戏服务器都有这种东西的远程登录,可以解决许多这些问题。在寻找替代方案之前,请确保您的游戏和主持人不支持此功能。

编辑:重新阅读您的问题。听起来你至少可以使用重定向到文件来获取输出。这不会让你添加更多输入:

./runmyserver > log.txt

答案 3 :(得分:0)

如果您提前知道要执行此操作,请使用屏幕(1)并在屏幕会话中在前台运行服务器。您将能够从屏幕会话中分离并使该过程继续运行。然后,您可以稍后重新附加屏幕会话并查看自此以来所做的任何输出,最大为回滚缓冲区的大小。