Linux screen命令

Screen是一个 full-screen software program,它的功能有:

  • 可以从一个SSH窗口中使用多个shell会话;
  • 网断了的时候该shell会话仍是活跃的; 可以从任一终端重新连接或离开该shell会话;
  • 跑长时间任务时,不用保持当前物理窗口始终开着;

所以,用了screen命令,再也不用担心因自己的失误而断送程序了。

一、screen安装

首先检查,看机器上是否已经安装:

[root@office ~]# which screen
/usr/bin/screen

一般是装在了/usr/bin/screen这个目录哈。

如果没有,可以选择:
1、本地安装:可以去https://www.gnu.org/software/screen/下载到本地解压安装。
2、在线安装:比如CentOS系统:

[root@office ~]# yum install screen
...
Complete!

二、启动screen

启动时,命令非常简洁:

[root@office ~]# screen

敲完此命令,出现以下窗口,按个空格键或回车键就进入screen的会话(session)啦。

图1 启动界面
而如果想给screen的会话命名,增强该会话的辨识度,可以使用下列命令:
[root@office ~]# screen -S hello

这样,连接该会话(后面会讲)时,就可以直接打名字,而不用编号逐个看应该是哪个会话了:

[root@office ~]# screen -r hello #
[root@office ~]# screen -x hello #多窗口模式

三、控制命令

screen使用“ctrl-a”作为控制键,通过它能将命令传送到screen。比如,按完“ctrl-a”后再按个“?”,就出现了screen的帮助界面:

图2 “ctrl-a”+“?”进入帮助界面

四、创建窗口

在screen的窗口内,若想再创建一个新窗口,继续仰仗“ctrl-a”:“ctrl-a”+“c”,当然,之前的旧的screen窗口仍是活跃的。

如此一来,旧窗口里运行的程序可以继续撒丫子跑着,而我可以在新的窗口里琢磨点其他事儿。

五、窗口切换

如果我想从新的窗口回到旧窗口,或者已经打开了N个screen窗口,想切换到其中另一个,咋整?
screen提供了向前和向后两种命令:
1、向前一步(previous):切换到前一个窗口,用“ctrl-a”+“p”
2、向后一步(next):切换到后一个窗口,用“ctrl-a”+“n”
3、向前或向后m步:按数字来,你想切换到第6个窗口,就“ctrl-a” + “6”

六、断开&重连

“断”-“连”可谓是screen中最牛逼的功能了,可以随时“断开”screen窗口跑出去玩,而你可以回到家或者办公室(只要能连上服务器的地方),就又可以重新“连接”回之前的窗口,它乖乖地就在那儿跑着你之前发出的指令,一点不敢动。

强大的“断开”命令就是“ctrl-a”+“d”(detach的意思),而“重连”命令则是要敲入命令,r是reattach之意:

[root@office ~]# screen -r

当然,在重连时,如果你的screen里有多个窗口,你需要选择下你要重连的窗口:

图3 重连screen窗口

即再敲一条带窗口名字的命令,指定打开的窗口:
[root@office ~]# screen -r 5950.pts-16.bmcgpu1

如此,我就重新连接进入了第二个窗口。

七、记录screen的输出

如果想要得到该窗口做过那些事儿,有方法!得到这个记录:使用“ctrl-a”+“H”,它能创建该窗口的running log。

图4 “ctrl-a”+“H”后生成log

这样,如果你不小心误入歧途了,可以通过查询log看到都发生了什么changes,方便回到正确之处。该log就在当前创建log的目录下:

图5 创建的log

而且,该窗口之后的变化也都会写到这个log中。

八、使用闹钟

此处是个小惊喜!screen可以在长长的程序跑完时,屏幕上出现输出结果时,会用闹钟提醒你跑!完!了!

该惊喜命令为:“ctrl-a”+“M”,M是monitor的意思。

键入该命令后,会在底部出现提示,说已进入监视activity的状态:

图6 监视activity

再按一次“ctrl-a”+“M”就可以取消监视了。

其实screen是在监测窗口处于“activity”还是“inactivity”,如果发生从activity到inactivity的转换,或者反之,它都能监测到,因此可以给你响个闹铃~

如果想让它监视,但是不想被吵吵,就可以让screen监视时闭嘴:“ctrl-a”+“_”

九、窗口上锁

如果你暂时离开去干别的,而怕人家进入你的screen窗口修改东西,那就给窗口上个锁吧!

上锁命令:“ctrl-a”+“x”

然后……要重新进入的话,得要输入密码:

图7 上锁设密码

如果你不知道密码,还是慎用此功能……当然,如果不小心用了,可以在非screen的状态用下面三条命令解除上锁:

bmcgpu1:~$ script /dev/null
bmcgpu1:~$ screen -d 3066.pts-20.bmcgpu1
bmcgpu1:~$ screen -r 3066.pts-20.bmcgpu1

就可以了。

十、关闭screen

当你工作干完了,最好还是把screen窗口关闭哈,不要让它留在那儿了,善始善终嘛。

关闭一个screen窗口的话,你在该窗口内输入“exit”命令,或者使用“ctrl-a”+“k”就退出来了。

当处于screen外面,想根据会话的编号或名字直接关闭该会话,而不用进入会话再关,则使用:

bmcgpu1:~$ screen -X -S [session # you want to kill] quit

当所有的窗口都退出的时候,整个screen会话也就结束啦,它会给个全部结束的提示的:

[screen is terminating]

当然啦,screen的丰富性及强大程度远不及这些,最好是去查阅它的官方document咯:https://www.gnu.org/software/screen/manual/screen.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值