¶前言
假设你现在有一个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版本信息