[环境配置]给远端服务器安装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


 

 

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