screen教程
前言
假设你现在有一个VPS可以使用,而且系统是Linux,一般都是通过SSH远程登陆进行管理。如果我们需要在VPS上长期运行一个程序,直接在SSH连接中运行程序并不能达成目的,因为程序会在SSH断开时停止运行。而使用screen命令就可以避免SSH中断导致的程序中断问题。
首先当然是用Putty或者Xshell登陆VPS,这里就不细说了。
使用方法
使用screen或者screen -S <your name>命令打开子界面。使用screen时,只能用系统分配的编号来恢复子界面,如果使用screen -S ,并附上自定义的名字,就能用名字来恢复子界面,后面会谈如何恢复子界面。
1 | [root@localhost ~]# screen -S my_screen |
回车后得到一个新的界面:
1 | [root@localhost ~]# |
现在就可以在这里运行任何需要长期运行的程序,比如这个简单的Python程序:
1 | [root@localhost ~]# vim test.py |
1 | import datetime |
程序的效果是每五秒打印一次系统时间:
1 | [root@localhost ~]# python test.py |
运行程序后,需要挂起子界面,按下Ctrl+A后抬起,然后按下d键,此时就会切换回原来的界面,并提示“detached”:
1 | [root@localhost ~]# screen -S my_screen |
现在即便是退出SSH,也不会影响到screen里面运行的程序,目标已达成。screen不仅仅能保持程序的运行,还能一直保留程序的输出信息,以备查看。
如果你以后需要查看程序的输出,就要恢复Screen子界面:screen -ls可以输出目前正在运行的子界面列表:
1 | [root@localhost ~]# screen -ls |
这时自定义名称就能用起来:输入screen -r my_screen,或者screen -r 1676同样可以恢复子界面,但当子界面比较多时可能就比较混乱,推荐用自定义的名字。
1 | [root@localhost ~]# python test.py |
如果信息太多,就按下Ctrl+A后抬起,然后按下[键,就能通过键盘上下键滚动查看历史。
键绑定
什么?快捷键太多记不住?那就按下Ctrl+A后抬起,然后按下?键,查看所有的键绑定。
一般常用键绑定
C-a ?显示所有键绑定信息C-a w显示所有窗口列表C-a C-a切换到之前显示的窗口C-a c创建一个新的运行shell的窗口并切换到该窗口C-a n切换到下一个窗口C-a p切换到前一个窗口(与C-a n相对)C-a 0..9切换到窗口0..9C-a a发送 C-a到当前窗口C-a d暂时断开screen会话C-a k杀掉当前窗口C-a [进入拷贝/回滚模式
其他常用命令选项
-c file使用配置文件file,而不使用默认的$HOME/.screenrc-h num指定历史回滚缓冲区大小为num行-list|-ls列出现有screen会话,格式为pid.tty.host-d -m启动一个开始就处于断开模式的会话-r sessionowner重新连接一个断开的会话。-S sessionname创建screen会话时为会话指定一个名字-v显示screen版本信息