应用场景
本人有时候用服务器跑代码,想要同时进行多种操作,把一些正在运行的代码放到后台自己跑,再另外做其他的事情;或者就是用笔记本远程实验室服务器,但是代码没跑完又不敢直接盖上屏幕带笔记本回宿舍,就想要把代码放到后台去跑,这样就不会中断。
于是乎//
screen是一个可以在多个进程(通常是交互式shell)之间复用一个物理终端的全屏幕窗口管理器。即linux下使用多窗口。
1. 安装
Debian/Ubuntu系统执行:
apt-get install screen
2. 创建会话
screen -S sessionName #创建一个叫sessionName的session
创建完以后,会自动进入这个会话界面中,就相当于重新开了一个窗口。
3. 会话挂起
创建一个会话以后,你可以在这个Screen上开始训练你的神经网络,跑你的代码等等……通常来说训练网络或者跑一个时常很长的代码,我们会选择离开电脑。
为了防止各种意外原因导致代码运行中断,通常会选择把这个会话挂起(放到后台)
Ctrl+a+d(先同时按住Ctrl和a,在按d)
然后就会看到,你从刚刚那个窗口里跳出来了。回到了主窗口。
窗口会提示:
[detached from xxxxx.sessionName] #xxxxx是会话的进程号
这时候你刚刚的会话就已经被挂起,这时候你就可以做其他事情了,也不用担心会被中断。
4. 查看会话进程号
如果你忘了你创建过哪些会话,可以用命令查询。
screen -ls
5. 进入会话
重新连接进入你创建过的会话窗口。
screen -r xxxxx #xxxxx是会话的进程号
6. 删除会话
screen -X -S xxxxx quit #xxxxx是会话的进程号
7. 遇到突然断开连接导致的“There is no screen to be resumed matching xxxx”问题
screen -d -r xxxx #xxxx是连接不上的那个进程号
8. 其他常用快捷键
Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换
参考链接汇总
[1] Linux screen 命令
[2] Linux下screen命令的基本用法
[3] linux screen命令的使用
[4] 解决 screen 连接不上,提示“There is no screen to be resumed matching 18352.” 的问题