Ssh

互動式 psql 執行命令時 ssh 連接中斷 - 命令會完成嗎?我可以重新連接嗎?

  • June 30, 2011

我正在使用互動式 psql 在我們的一個數據庫上執行重新索引。不幸的是,當重新索引仍在執行時,ssh 連接斷開了,我愚蠢地沒有將 psql 放在螢幕視窗中(我不知道花了多長時間!)

一旦我能夠再次登錄到機器,我就跑了

ps aux | grep REINDEX 

並且輸出似乎表明重新索引仍在執行:

postgres  6180 99.9  0.0 774960  4804 ?        Rs   Jun27 3022:02 postgres: postgres my_db_name [local] REINDEX 

在這種情況下 postgres 的預期行為是什麼?它會繼續執行重新索引以完成嗎?

另外,有什麼方法可以重新連接到 psql,以便我可以繼續看到重新索引的正在進行的輸出?

REINDEX 可能會在嘗試向不再存在的 psql 發送回饋時中止,並且這最終會作為“客戶端斷開連接”傳播。或者,如果 psql 仍然存在,當它的 tty 和 sshd 緩衝區溢出時,它最終會死掉……不過,這可能會使其花費更長的時間。

重新連接以查看該命令的輸出實際上是不可能的,不。

根據我的經驗,一旦您的 shell 因空閒活動而終止,此類事情就會消失。

這是您應該使用諸如 GNU Screen 之類的東西的情況之一。使用 GNU Screen,您登錄到您的伺服器,輸入screen,然後開始您的工作。您可以使用Ctrl+ac在該螢幕會話中生成其他終端,並使用Ctrl+anCtrl+ap在它們之間循環。要斷開與 GNU 螢幕的連接,您可以鍵入Ctrl+ad。要重新連接,您可以登錄並執行screen -r.

Kuro5hin 的 Howto 可在此處獲得: http ://www.kuro5hin.org/story/2004/3/9/16838/14935

引用自:https://serverfault.com/questions/285490