首页 » InfoTech »

screen:大批量shell操作神器

2019年2月12日 / 8次阅读
Linux

打开支付宝,搜索“529018372”,领取专属红包!每日支付每日领。

我们已经知道了如何让进程免受 HUP 信号的影响,也学习了setsid实现daemon进程,但是如果有大量这种命令需要在稳定的后台里运行,如何避免对每条命令都做这样的操作呢?

此时最方便的方法就是 screen了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。screen 的参数很多,具有很强大的功能,我们在此仅介绍其常用功能以及简要分析一下为什么使用 screen 能够避免 HUP 信号的影响。

CentOS默认不带screen程序,需要安装:yum -y install screen

 

创建一个新的screen,在里面一直ping,然后退出这个screen窗口:

[xinlin@localhost ~]$ screen -dmS ping  # 创建一个screen,名称为ping,但是不进入;用这种方法可以同时创建多个screen session
[xinlin@localhost ~]$ screen -ls  # 列出所有screen窗口
There is a screen on:
5282.ping (Detached)  # Detached表示当前不在这个screen里面
1 Socket in /var/run/screen/S-xinlin.

[xinlin@localhost ~]$ screen -r ping  # 连接进入名称为ping的screen窗口
这里就进入了一个新窗口,我在里面测试ping
退出操作是Ctrl+ad
[detached from 5282.ping]
[xinlin@localhost ~]$

通过screen -r ping进入某一个screen session之后:

[xinlin@localhost ~]$ screen -ls
There is a screen on:
5282.ping (Attached)  # Attached 表示里正在这个screen里面
1 Socket in /var/run/screen/S-xinlin.

在某个screen中,执行exit,就可以关闭这个screen的session,并可以看到:

[screen is terminating]
[xinlin@localhost ~]$ screen -ls
No Sockets found in /var/run/screen/S-xinlin.

 

为什么通过screen执行脚本之后,logout不会影响进程的执行?

这是未使用screen时的进程树:

[root@pvcent107 ~]# ping www.google.com &
[1] 9499
[root@pvcent107 ~]# pstree -H 9499
init─┬─Xvnc
├─acpid
├─atd
├─2*[sendmail]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash───ping

我们可以看出,未使用 screen 时我们所处的 bash 是 sshd 的子进程,当 ssh 断开连接时,HUP 信号自然会影响到它下面的所有子进程(包括我们新建立的 ping 进程)。

这是使用screen时的进程树:

[root@pvcent107 ~]# screen -r Urumchi
[root@pvcent107 ~]# ping www.ibm.com &
[1] 9488
[root@pvcent107 ~]# pstree -H 9488
init─┬─Xvnc
├─acpid
├─atd
├─screen───bash───ping
├─2*[sendmail]

而使用了 screen 后就不同了,此时 bash 是 screen 的子进程,而 screen 是 init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 信号自然不会影响到 screen 下面的子进程了。

 

远程操作云服务器,进行大批量脚本运行的时候,screen几乎是必须的工具。

本文链接:http://www.maixj.net/ict/screen-20091
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top