可能大家会遇到这样的问题:使用 SSH 或者telent 远程登录到Linux 服务器,运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,如果因为,网络异常或其它因素导致突然断开连接,远程命令也会停止,只能重新连接后再运行,一切半途而废了。这里我就教大家如何使用screen命令,避免出现以上问题。
Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。用户可以在一个screen会话中创建多个screen子会话,在每一个screen会话(或子会话)中就像操作一个真实的telnet/SSH连接窗口。
安装screen
1、使用putty或类似的SSH工具登录CentOS 7服务器;直接输入screen看提示“bash : screen: 未找到命令...”;检车系统有没有安装screen;
2、如果你的CentOS系统没有自带screen,安装方法如下:
yum install screen
安装成功后,输入screen会切换到另一个窗口,可以通过ctrl+a+d切换回原来的命令行界面;
创建screen会话
情景 :需要在CentOS 7中下载并安装LNMP一键安装包;
1、先执行以下命令screen -S shapolang以上命令的意思是:新建screen会话,名字为shapolang。
2、开始安装lnmp,
a、执行 wget --no-check-certificate https:///v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz下载安装包。
b、执行:tar -xvf lnmp1.2-full.tar.gz 解压。
c、执行:cd lnmp1.2-full /进入lnmp1.2目录。
d、执行:./install.sh 进行安装。
如果网络掉线,可以重新连接,再执行 screen -r shapolang就会看到你的shapolang安装进程。
暂时离开screen会话
(但保留screen里运行的LNMP一键安装包命令)
在SSH窗口中按快捷键:Ctrl+a d(按住Ctrl,依次按a,再按d)即可退出名叫shapolang的screen的会话。
暂时离开screen会话时,screen的会话并不会因为离开而停止,正在运行中(如编译LNMP一键安装包)的进程依然会继续运行,screen的好处就是可以在同一个ssh窗口中执行多个任务,如再新开一个screen会话安装gitlab。也可以临时关闭ssh窗口,做些其它事情。
重新读取screen会话
在SSH中执行以上命令即可读取,若忘记之前创建的screen会话的名字或者之前创建时候存在多个相同名称的会话,可以通过下面命令查询正在运行中的screen会话列表信息。
screen -ls
1、通过screen名字(如之前新建的shapolang)读取。
screen -r shapolang
如果存在多个同名名的会在会话名之前有会话ID+会话名称,如4054.shapolang;
可以通过screen -r 4054.shapolang或者screen -r 4054获取指定会话(建议使用后一种,第一种比较复杂)
关闭screen会话
若不再需要当前的screen会话,可以在当前的screen会话中执行 exit,提示[screen is terminating]表示已经成功关闭screen会话(不会保留在内存中),如果需要,请重建。
screen的快捷键
如之前讲到的Ctrl + a d 可以暂时离开当前的screen会话,同时screen还提供其它的快捷键。
Ctrl + a c :在当前screen会话中创建一个子会话
Ctrl + a p :上一个子会话
Ctrl + a n :下一个子会话
注意事项:
操作非常简单,不过最好不要创建太多同名会话的自己都分不清楚,毕竟回话ID不直观。