在linux的环境中,我们想要在后台持续运行一些脚本,但是又因为关闭这个tty的话,脚本就会中断,这个时候我们就需要screen这个工具的帮助啦!
基础
-
首先先查看下否则有这个工具。如果运行screen后提示command not found,那么说明我们还没有安装这个工具。
-
如果redhat系的linux distribution,那么可以用yum install -y screen 来安装screen。
-
安装完毕后在运行screen,会跳出这么一个介绍页面,再按回车键,那么就进入到screen里面啦!
-
我们可以在里面运行我们需要的脚本,那么运行完后怎么回到原来的命令行呢?答案是:先按CTRL+a,然后再按d。
-
在原来的界面运行screen -ls可以看到现有的screen的会话。
-
怎么回到这个screen的会话中呢?运行screen -r <session>,那我们这边就是运行screen -r 2684.pts-0.NetDimCC。
-
这就是基本的screen的用法啦~
END
进阶
-
那后面讲一些比较有用的screen的命令。
Screen分屏,有的时候我们需要边观察一个命令的输出边执行一些操作,开两个CLI是一种解决方式,用screen分屏的功能也能做到。
首先在screen的session中按CTRL+a,X,这个时候就会出现第二个屏。
-
然后按CTRL+a,tab可以在两个屏幕之间自由切换。
-
切换到下个屏幕后,没有命令输入的提示符啊,怎么建立呢?
按CTRL+a,c
-
还有一个命令要强烈推荐下,可以在detach的模式下跑screen的命令,我经常用这个命令去在后台持续抓包。
就是在主tty中,运行 screen -dm <你要跑的命令>
看下图,我运行screen -dm tcpdump,然后再去查看screen的 session时,发现多了一个,但是我并没有进入screen的会话中,也就是并没有attach进去。
转自
screen 常用命令_百度经验
https://jingyan.baidu.com/article/25648fc184e9ab9190fd005c.html自己总结
screen 可以理解为一个虚拟屏幕;
在同一个终端下拥有多块“屏幕”——即“会话”。
screen -S yourname -> 新建一个叫yourname的session
screen -ls(或者screen -list) -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session#创建一个离线会话screen -dmS test
#查看会话列表screen -ls There is a screen on: 19393.test (Detached) 1 Socket in /var/run/screen/S-root.
#进入会话screen -r test # 或者screen -r 19393
# 执行下载命令aria2c -s 5 -x 10 -c http://xxxxx
#退出会话Ctrl+a,按d
#或者会话screen -d test
#下次进入会话重复上面的步骤即可
#退出会话后,里面运行的程序不会停止
#退出会话,可以使用-ls然后kill掉,但建议使用以下方法
screen -r test
exit[root@test1 ~]# screen -r test
[screen is terminating]