华为云技术微课堂~如何在关闭ssh连接的情况下,让操作命令继续运行?

举报
云计算那些事儿 发表于 2019/07/27 21:57:22 2019/07/27
【摘要】 这几天在用sysbench工具测试mysql数据的TPS/QPS性能指标,在测试性能之前需要批量导入数据,为了尽可能与阿里云的测试环境一致,创建测试表的数量设置为64个表,每个表要插入1000万条记录,64张表,总共要插入6.4亿条数据,算是大型数据库的规模了。我在导入数据时候,发现要完成64张表,需要耗时四五个小时,开启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

30fa24b95e090cbd99fb2275aed3be9e-64719

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

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

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

246c84f3ac5136b8c0f8ef5fcf3d0a34-464355

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

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

#screen -r cloudtest

fc7bf4afeda311bc7e28c7b9cc14e8d9-191490

此时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 名字 命令


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。