自然今天get到了一个非常实用的命令,有点感觉发了这篇文章,及备忘一下。你是不是还在为Linux么有teamviewer和Anydesk这种远程协助功能而发愁?是不是远程安装重要软件市,本地网络波动掉线了,而造成这个重要的任务中断而发愁?今天自然就来分享一下解决办法——使用screen命令。
基本语法
screen命令中文翻译为屏幕,功能也接近这个意思。先说一下基本语法及常用功能解释:
创建新screen会话
screen -S [SESSION]
加入screen会话
screen -x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl + a,d
显示所有已经打开的screen会话
screen -ls
恢复某个screen会话
screen -r [SESSION]
安装方式
yum install -y screen
如果你想详细了解screen这个命令,可以在终端上执行以下命令:
man screen
应用场景一:防止任务中断
管理服务器我们经常是以ssh或telent的方式远程接入linux操作系统,经常运行一些需要很长时间才能完成的任务,比如网站数据备份、ftp 传输、远程同步资料等,通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。
screen命令可以完美的解决这个问题,只要screen进程没有终止,即使我们网络突然中断造成会话丢失了,只需要重新连接执行screen -r就可以恢复对这个会话任务的管制权。
这一命令非实用,例如我们编译网站所需要的Nginx+Mysql/MariaDB+PHP环境时,往往需要消耗大量的时间,尤其是Mysql/MariaDB需要的时间最多,如果在这个过程中我们网络突然中断,那么一切就前功尽弃了。
我们只要在编译环境前执行以下screen,再去执行环境编译安装,就不用担心网络突然中断造成任务前功尽弃了。
应用场景二:远程协助(会话共享)
经常我们遇到问题,找了文档,实在无解的情况回去寻找老司机的帮助。ip和密码一发就完事了,然而我们并没有学习到什么新技能?如果我们可以看见老司机的整个解决问题的过程,是不是就会get到新技能。sceen让你的这个想法成真。
这里自然做一下简单地演示,一般情况下是这样的,及时用同一个账户登录同一台服务器,每个窗口的内容也是不一样的,各是各的。
我们先运行screen -S help创建一个名叫help的会话。然后在另一个登录终端使用screen -x help加入这个名叫help的会话中。所得到的的效果就是下面这样,两个窗口的动作变得一模一样了。
总结
screen这条命令非常实用,可以用来防止网络中断以及一些突发情况造成的任务中断,又可以用来进行桌面共享,这就成了一个文本终端的teamviewer了。screen还有一个功能就不讲解,那就是像windows一样,我在看网页,我点一下右上角的隐藏窗口,去玩我的游戏,一会又隐藏游戏,回来看网页。如果你对这个功能感兴趣,不放执行man screen来详细了解screen的功能。