常常看到别人用linux时在一个terminal下面开很多个窗口,将窗口分割,然后每个窗口可以单独执行自己的任务。这在同时处理多任务时非常有用,或者用ssh登陆另一台机器进行操作时,避免发生如果长时间不在那台机器上活动或者网络连接出现问题,就会退出,这样如果之前在ssh那台机器上的任务比较重要的话就会中断或者丢失。但用screen登陆不会存在因time out而自动退出的问题,可以让活动运行很久不会中断,即使网络中断,一旦恢复网络,以前的活动也还是保留。
screen - screen manager with VT100/ANSI terminal emulation.
安装:
ubuntu 10.04是默认安装screen的,我的是ubuntu14.04 如果没有安装,则使用下面命令安装:
yum install screen #on RedHat based systems
或者
sudo apt-get install screen #on Debian based systems
安装好后,运行screen命令,可查看screen tool的版本和一些简介信息。
brandon@ubuntu:~$ screen
Screen version 4.01.00devel (GNU) 2-May-06
Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury
Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, see
http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301
USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen-devel@gnu.org
Capabilities:
+copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256 +utf8 +rxvt +builtin-telnet
Screen key bindings, page 1 of 1.
Command key: ^A Literal ^A: a
break ^B b hardcopy h monitor M remove X version v
clear C help ? next ^@ ^N sp n removebuf = width W
colon : history { } number N reset Z windows ^W w
copy ^[ [ info i only Q screen ^C c wrap ^R r
detach ^D d kill K k other ^A select ' writebuf >
digraph ^V lastmsg ^M m pow_break B silence _ xoff ^S s
displays * license , pow_detach D split S xon ^Q q
dumptermcap . lockscreen ^X x prev ^H ^P p ^? suspend ^Z z
fit F log H quit \ time ^T t
flow ^F f login L readbuf < title A
focus ^I meta a redisplay ^L l vbell ^G
^] paste .
" windowlist -b
- select -
0 select 0
1 select 1
2 select 2
3 select 3
4 select 4
5 select 5
6 select 6
7 select 7
8 select 8
9 select 9
I login on
O login off
] paste .
| split -v
:kB: focus prev
screen 操作演示:
在screen中所有操作都是以Ctrl+a开始的(C-a)
1.运行screen:输入screen
在当前窗口运行一个进程:top
然后我们通过screen再打开一个窗口:命令:C-a +c
会产生一个新的窗口,原来的窗口则在后台运行。
输入命令:ps auf 我们看到刚刚执行的top命令依然在运行。
要想返回原来的窗口,输入命令:C-a+p p即是previous的意思,相应的就有切换到下一个窗口的命令:C-a+n n即时next的意思。
想看所有的运行的screen窗口,输入:screen -list(或者-ls)命令。
从screen中分离(detach)刚才创建的窗口可以用命令 C-a + d, 如果当前连接当掉或者想再re-attach之前detach的窗口,可以通过screen -r 命令来reattach:
screen [-d] -r [pid.]tty.host
可以通过命令 screen -r listname来恢复Detached screen window, 例如:sreen -r 10305。
创建log:C-a+H(注意其中H是大写的),创建log可以让我们在跑程序,编译时遇到问题时查询起来方便很多。
自动监视:C-a+M(注意M是大写)。如果一个程序运行时间很长或者下载某个很大的文件时,又要处理别的任务,则可以通过该命令来让screen自动监视该程序的运行,当程序运行结束或者遇到问题有输出时就会在频幕的地步出现闪烁告警,也可以通过C-a+_命令来使其静音。
锁住screen session: C-a+x,这样下次访问时,则需要密码。
停止Screen: C-a+k,会提示用户是否要kill掉这个window.
全部关闭:C-a+\ , 如果创建的window比较多,当做完所有要做的工作时,也可以一起关闭这些窗口。也会受到系统提示,以免误操作。
我们也可以在将一个大的窗口分割(垂直或者水平),可以实时看到每个窗口中执行的操作
水平分割:C-a+S(S是大写:shift+s) 垂直分割:C-a+|(backspace键下面的那个键)
我们注意到只是在第一个窗口运行了bash,想要切换到其他几个窗口:C-a+Tab,只切换过去是不会运行bash的,输入命令:C-a+c就可。
切换窗口:C-a+Tab,在新窗口中运行bash:C-a+c
还有一个有趣的命令:C-a+n(这里n是bash的编号,从0开始,下图可以看到)这样就可以在当前窗口中操作第n个窗口,同步起来,一模一样。例如在下图左上角输入C-a+2后然后输入一些命令,则上图右上角也会同时显示这些命令也会有和左上角窗口一模一样的输出结果输出,这样方便在任何一个窗口中你都可以操作其他窗口,不用切换到那个窗口。想再回到当前窗口,则输入:C-a+0(0就是你操作窗口之前的bash编号)
可以根据自己的需要创建新的window,然后开始工作:
可以通过C-a+k来kill掉你当前的窗口。然后screen重新对这个window中的bash编号。如果想退出这个window则C-a+X(X是大写),全部退出则C-a+\.