[環境配置]給遠端服務器安裝screen

使用遠端服務器的時候,一般都是跑需要運行數小時甚至數天的大程序,在這種情況下,如果我們將連接服務器的PC關閉,那麼遠端服務器的進程也會中斷。

這時候就希望當我們在PC啓動遠端服務器的進程後,即便關閉PC,遠端服務器的程序仍可正常運行,當我們第二天早上起來後打開PC,期望看到遠端服務器運行的結果。這方面,使用 screen 可以實現。

安裝screen

因爲本人無sudo權限,因此網上一部分使用管理權限的連接方法就直接pass了,這裏列出友人wx的一個方法。

  1. 打開遠端服務器的命令窗口
  2. pip install screen
  3. 完成

但是我個人在第二步之前,先activate了我主要使用的Anaconda環境,之後出現了下述問題:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 6: ordinal not in range(128)

詢問度娘後, 發現這個問題一般來講是出現在python2上面的,但是我實際用的是python3。網上的一般solution爲修改報錯的文件,加上下面語句:

if sys.getdefaultencoding() != 'utf-8':
    reload(sys)
    sys.setdefaultencoding('utf-8')

對我來說,報錯信息裏的兩個文件一個是/tmp/pip##,然而在根目錄下的tmp里根本就沒有這個。

直接說結論,‘ascii’的報錯信息我並沒有解決,而是在Anaconda的base環境中成功 pip 了 screen,之後即便進去其他Anaconda的環境,也能成功使用screen了。

screen使用方法

下面內容主要參考這篇博文,博主另有整理和補充

screen是一個可以在多個進程(通常是交互式shell)之間複用一個物理終端的全屏幕窗口管理器。即linux下使用多窗口

常用screen命令

# 列出當前所有的session
screen -ls(或者screen -list) 

# 新建一個叫session_name的session,並直接進入
screen -S session_name           

# pc與session_name斷開連接,但其仍正常運行)
# 需要在一個新的lls會話窗口執行
screen -d session_name

# pc與session_name建立連接 
screen -r session_name   

# 徹底關閉session_name
screen -X -S session_name quit

# 結束當前session並回到session_name這個session
screen -d -r session_name

退出當前screen窗口,結束當前screen窗口,不想再連接回來(即殺死會話)

exit


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章