华为云&天翼云~关闭ssh连接,让程序继续运飞?

这几天在用Sysbench工具测试天翼云&华为云MySQL数据的TPS/QPS性能指标,在测试性能之前需要批量导入数据,为了尽可能与阿里云、华为云的测试环境一致,创建测试表的数量设置为64个表,每个表要插入1000万条记录,64张表,总共要插入6.4亿条数据,算是大型数据库的规模了。

我在导入数据时候,发现要完成64张表,需要耗时四五个小时,开启SSH窗口,很容易因各种原因退出,好不容易花了几个小时导入了部分数据,被迫停止,必须要重新来一遍,有时候要花好几次才能导入成功。

逼着我想办法解决这个问题。

一顿狂搜,发现:当我们通过SSH去连接linux服务器时,对于长时间执行的命令,如果SSH窗口退出,当前正在执行的命令也会被迫停止,因为linux服务器会在你退出SSH连接后,默认关闭进程,而不会hang up进程。

上提供了若干种方案,其中screen的方式有一定的交互性,采用了Screen软件解决了这个棘手的问题。

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

准备:在华为云/天翼云门户开通1台操作系统为centos7.4(64bit)的云主机。

1、安装screen

#yum install screen

2、创建screen会话,可自定义screen虚拟终端的名称<name>

#screen -S <name>

3、查看创建的screen会话

#screen -ls

输入screen -ls,列出了所有的screen会话,其中cloudtest是刚创建的会话名称,6673是会话的id 。

4、运行你需要一直在后台运行的程序

ping 192.168.1.187 # 这里用长ping作为后台运行的命令

5、退出SSH窗口,退出前ping命令执行到icmp的序 为6,如上图所示。

6、重新远程登陆,恢复运行ping命令的screen会话

#screen -r cloudtest

此时ping仍在后台运行,icmp的序 已经执行到687。

附:screen用法:

* 打开新的会话窗口:screen

* 结束当前会话:exit

* 在新会话中执行程序(程序关闭时会话自动结束):screen vi test.c

* 打开新会话并起个名字:screen -S myname

* 暂时离开会话(经常用):Ctrl+a 然后 d

* 查看会话列表: screen -ls

* 恢复之前离开的会话:screen -r 会话名或进程

* 清除dead状态的会话:screen -wipe

* 启动一个开始就是Detached状态的会话:screen -dmS 名字 命令

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月15日
下一篇 2019年6月15日

相关推荐