Ssh
互動式 psql 執行命令時 ssh 連接中斷 - 命令會完成嗎?我可以重新連接嗎?
我正在使用互動式 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+an和Ctrl+ap在它們之間循環。要斷開與 GNU 螢幕的連接,您可以鍵入Ctrl+ad。要重新連接,您可以登錄並執行screen -r
.Kuro5hin 的 Howto 可在此處獲得: http ://www.kuro5hin.org/story/2004/3/9/16838/14935