screen的使用(强烈推荐,生产必用)
使用screen时会开启一个子bash窗口,关闭父bash并不影响子bash。
#1.安装 [root@qls ~]# yum install screen -y
#2.开启一个screen窗口,指定名称 [root@qls ~]# screen -S wget_mysql
#3.在screen窗口中执行任务即可。
#4.平滑的退出screen,但不会终止screen中的任务。注意: 如果使用exit才算真的关闭screen窗口 ctrl+a+d
#5.查看当前正在运行的screen有哪些 [root@qls ~]# screen -list There is a screen on: 22058.wget_mysql (Detached) 1 Socket in /var/run/screen/S-root.
#6.进入正在运行的screen [root@qls ~]# screen -r wget_mysql [root@qls ~]# screen -r 22058
Screen常用参数选项
常用的命令选项有:
-c file 使用配置文件file,而不使用默认的$HOME/.screenrc -d|-D [pid.tty.host] 不开启新的screen会话,而是断开其他正在运行的screen会话 -h num 指定历史回滚缓冲区大小为num行 -list|-ls 列出现有screen会话,格式为pid.tty.host -d -m 启动一个开始就处于断开模式的会话 -r [pid.tty.host] 重新连接一个断开的会话。 -S sessionname 创建screen会话时为会话指定一个名字 -v 显示screen版本信息 -wipe [match] 同-list,但删掉那些无法连接的会话 -x 会话共享演示
五、管理你的远程会话
先来看看如何使用screen解决SIGHUP问题,比如现在我们要备份数据库。如果按老的办法,SSH登录到系统,直接命令进行备份。之后,如果数据量比较小的话,恭喜你,不用等太长时间了;如果数据量比较大,老老实实等着吧,只能备份完毕再断开SSH连接了。让我们使用screen来试试。
SSH登录到系统,在命令行键入screen。
[root@db01 ~]# screen
在screen shell窗口中输入备份数据库命令,开始备份。不愿意等了?OK,在窗口中键入C-a d ,然后,退出SSH登录?随你怎样,只要别杀掉screen会话。
是不是很方便?更进一步,其实我们可以利用screen这种功能来管理你的远程会话,保存你所有的工作内容。你是不是每次登录到系统都要开很多窗口,然后每天都要重复打开关闭这些窗口?让screen来帮你"保存"吧,你只需要打开一个ssh窗口,创建需要的screen窗口,退出的时候C-a d"保存"你的工作,下次登录后直接screen -r
最好能给每个窗口起一个名字,这样好记些。创建这个会话的时候,就给这个会话起个名字。screen -S name (你所定义的名称) ,下次登录后直接screen -r name(你所定义的名称)就可以了。
六、远程演示
首先演示者先在服务器上执行 screen -S test 创建一个screen会话,观众可以链接到远程服务器上执行screen -x test 观众屏幕上就会出现和演示者同步。
在一个窗口打开一个叫test的会话 [root@db01 ~]# screen -S test
在另外一个窗口进入这个会话 [root@db01 ~]# screen -x test
在第一个会话窗口执行操作,第二个会话窗口会记录第一个会话窗口的操作

七、更多Screen功能
Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。
以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。
八、参考资料
GNU Screen的官方网站:
http://www.gnu.org/software/screen/
Screen的man page提供了最详细的信息:http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html