小話題:
ssh
若是在咱們編譯軟件的時候,終端實然斷了怎麼辦,按理論來講,在此終端下的程序都會結束。編譯了老半天,白忙活了。那麼能夠用screen程序。ide
screen 模擬多個虛擬窗口,而且screen模擬的終端斷了之後,screen的終端不會退出,程序繼續。
screen 打開新的screen虛擬界面
也能夠隱藏打開的screen終端,返回原來的終端,固然是原終端沒有斷線的狀況下。spa
Ctrl+a,再按一下ctrl+d。或者直接ctrl+a,d。 按一下a,再按一下d。3d
想要返回screen終端,先查看一下各screen終端的ID:screen -ls
打開screen終端:screen -r Screen_ID
只有一個screen終端的狀況,直接用screen -r就能夠打開。blog
Ctrl+a,d之後或screen終端斷了之後,screen進程的父進程就會變成init。與本終端脫離父子關係。因此在終端結束之後screen中的程序不會中斷。進程
而在用一個新的終端鏈接screen -r ID 打開之後,screen會與父進程是init的screen通訊(本身瞎猜的)。get
一個小故障: 在模擬終端斷線的時候,再從新連上之後能夠查看到SCREEN還在運行,但以前的ssh終端尚未斷開,因此screen仍是以前sshd的子進程。這樣的狀況不能從新鏈接上screen。it
能夠手動的把以前的sshd進程關閉,再從新鏈接screen便可。上圖:io
查看scrren信息,並鏈接,被提示screen已附加進程。編譯
咱們查看一下如今的進程樹。
終端斷開了,可是終端的sshd進程卻沒有斷開,而之上的screen也沒有轉移父進程。
查看一下所在sshd的進程ID,半閉掉。
pstree -p 查看進程樹並顯示ID。
關閉之。
能夠看到已經正常了。