通常ssh 運作以後,bash等都是他的子程式,一旦ssh關閉,控制程序收到SIGHUP信号退出,系統将所有相關程序殺掉!! 導緻一旦ssh關閉,執行中的任務就取消了
解決方法:
1.nohup指令
nohup command(指令) &
此後,如果你斷開了ssh,程式依舊運作。此種方式的缺點是,應用程式沒有互動界面了,程式的輸出将會輸出的一個xxx.out檔案中,而且以後無法在界面控制程式的結束。必須通過kill的方式。是以這種方式顯得很簡單粗魯,很少使用。
2.screen指令
如何安裝 screen 指令. 大部分 linux 系統都預設安裝了 screen 指令,先檢視下否則有這個工具。. 如果運作 screen 後提示 command not found,那麼說明這個工具還沒有安裝。. CentOS 系統執行以下指令安裝:. yum install screen. Debian/Ubuntu 系統執行以下指令安裝: apt-get install screen.
運作screen
[[email protected] odoo_14]$ screen
回車後進入Screen子界面,此時putty标題欄會訓示處于子界面狀态,然後運作你的程式,然後按下Ctrl+A後擡起,然後按下d鍵,此時切換回主界面,Putty的視窗标題欄也會訓示,此時就是斷開ssh,程式仍在運作。
檢視所有子界面:35470是字界面的pid
[[email protected] odoo_14]$ screen -ls
There is a screen on:
354740.pts-0.localhost (Detached)
切換screen子界面
[[email protected] odoo_14]$ screen -r 354740
結束子界面
screen -X -S 35470 quit
參考文章:[轉載][整理]解決SSH退出登陸後保持程序繼續在背景運作 - 簡書 (jianshu.com)