我使用交互式psql在我们的一个数据库上运行reindex。 不幸的是,ssh连接在reindex仍在运行的时候掉线了,而我却愚蠢地把psql放到一个屏幕窗口内(我不知道要花多长时间!)
一旦我能够再次login到机器,我跑了
ps aux | grep REINDEX
和输出似乎表明,reindex仍在运行:
postgres 6180 99.9 0.0 774960 4804 ? Rs Jun27 3022:02 postgres: postgres my_db_name [local] REINDEX
postgres在这种情况下的预期行为是什么? 它会继续运行reindex完成?
另外,有什么方法可以重新连接到psql,我可以继续看到从reindex的进行中的输出?
REINDEX可能会中止,因为它试图将反馈发送到一个不存在的psql,并最终作为“客户端断开连接”传播。 或者,如果psql仍然存在,那么当它的tty和sshd缓冲区溢出时,它最终会死掉。不过,这可能会花费更长的时间。
重新连接以查看该命令的输出结果是不可能的,不。
我的经验是,一旦你的shell被闲置活动终止,类似的东西就会死亡。
这是你应该使用像GNU屏幕的情况之一。 使用GNU Screen,你login你的服务器,inputscreen ,然后开始你的工作。 你可以使用Ctrl + ac在这个屏幕会话中产生更多的terminal,并且用Ctrl + an和Ctrl + ap在它们之间循环。 要从GNU屏幕断开连接,您可以键入Ctrl + ad 。 要重新连接,您可以login并运行screen -r 。
Kuro5hin的Howto可以在这里find: http ://www.kuro5hin.org/story/2004/3/9/16838/14935