Linux终端神器--Screen
当有时候需要在终端执行任务时候,又不能关闭当前终端,那么就可以利用Screen来帮助你在后台托管任务。Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。
通俗的讲,screen命令用于新建一个或多个“命令行窗口”,在新建的这“窗口”中,可以执行命令;每个“窗口”都是独立并行的。
Screen的功能
screen的功能大体有三个:
会话恢复:只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
多窗口:在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。
会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
安装Screen
并非所有Linux系统都默认安装了screen,一般比较纯净的Linux系统是不会安装Screen的,需要我们手动去安装。
# CentOS
yum install screen
# Debian/Ubuntu
apt-get install screen
使用方法
以下是一些我觉的比较常用的命令,screen的帮助文档过于详细,如果还想了解更多功能和命令,请点击查询自己需要的命令
查询screen提示
screen -help
创建新的screen窗口
screen -S [name]
screen -R [name]
区别在于:
使用-R创建,如果之前有创建唯一一个同名的screen,则直接进入之前创建的screen
使用-S创建和直接输入screen创建的虚拟终端,不会检录之前创建的screen(也就是会创建同名的screen)
查看所有screen列表
screen -ls
离开screen窗口(不退出)
Ctrl + A + D
恢复离线的screen窗口
screen -r [name]
加入screen会话
screen -x [name]
退出并释放窗口资源
exit
如果对screen运行程序,确定已经停止运行了,也可以在主终端内,使用命令释放:
# 使用-R/-r/-S均可
screen -R [pid/Name] -X quit
问题&解答
无法进入Attached状态虚拟终端
screen有两种状态,Attached状态,其实代表此虚拟终端,用户正在使用,这个时候,是无法进入的。但是,有时候,我们创建虚拟终端,并没有使用Ctril+a再按d退出并挂起虚拟终端,反而因为长时间没操作,或者本地网络掉包等问题,非正常退出虚拟终端,导致出现SSH连接服务器,并没有在虚拟终端内,却出现Attached状态:
使用screen -r tool无法进入:
而使用screen -R tool更会“奇迹般”创建新的虚拟终端。
这个时候,不用慌。
只需要:
screen -d tool
之后,即可使用screen -r tool或screen -R tool进入。
screen内中文输出乱码
中文输出乱码,主要还是编码问题。一般旧版本screen会有这个问题,两个解决方法:
方法一:修改配置文件
创建文件,并加入设置:
# 新建或修改文件
vim ~/.screenrc
加入以下设置:
# 设置编码
defutf8 on
defencoding utf8
encoding UTF-8 UTF-8
再次开启虚拟终端,就可以看到中文不乱码了。
方法二:单次设置编码
在创建和查看虚拟终端时,加上-U参数:
# 新建对话
screen -U -S new_screen
#切换会话(utf8编码查看)
screen -U -r new_screen
总结
以上就是Screen的使用教程,如果有其它好用的Linux神器,欢迎评论区留言!
- 感谢你赐予我前进的力量