CN112711463A - 一种定期清理gotty僵死进程的方法 - Google Patents

一种定期清理gotty僵死进程的方法 Download PDF

Info

Publication number
CN112711463A
CN112711463A CN202011643534.8A CN202011643534A CN112711463A CN 112711463 A CN112711463 A CN 112711463A CN 202011643534 A CN202011643534 A CN 202011643534A CN 112711463 A CN112711463 A CN 112711463A
Authority
CN
China
Prior art keywords
gotty
dead
script
cleaning
ssh
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011643534.8A
Other languages
English (en)
Inventor
闫梦飞
赵山
王阳
孙思清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202011643534.8A priority Critical patent/CN112711463A/zh
Publication of CN112711463A publication Critical patent/CN112711463A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种定期清理gotty僵死进程的方法,属于互联网技术领域,该方法将gotty和脚本集成进Docker容器中,并将gotty、登录、启动、清理僵死进程内容共同构建镜像部署,通过脚本将gotty运行,并启动定时任务调用脚本清理僵死进程;通过shell脚本接收实例信息,再通过ssh远程登录mysql虚机,在关闭gotty连接后,清理僵死的ssh进程。本发明提供了浏览器访问终端的功能,提高了用户使用产品的效率和产品使用的快捷和舒适性;同时,将定时清理僵死进程与gotty相关联,避免了僵死进程的增多导致的存储增大,提高了产品的易用性和完善性。

Description

一种定期清理gotty僵死进程的方法
技术领域
本发明涉及互联网技术领域,具体地说是一种定期清理gotty僵死进程的方法。
背景技术
目前随着互联网技术的飞速发展,网络在人们的日常生活中越来越重要。在当前云计算、大数据的背景下,现代企业和政府的数据正在朝着大容量方向发展,随着大数据平台的新兴技术的发展,人们获得信息的方式越来越丰富。当数据库操作复杂且页面操作不支持时,人们倾向于操作最直接的数据,即通过终端(TTY)登录数据库,通过命令行工具进行直接操作。当多次通过终端再通过ssh登录数据库进行操作,关闭连接时仅会关闭终端连接,但ssh进程并不会清理,这些未关闭进程就会变成僵死进程,僵死进程的清理成为一个亟待解决的问题。
发明内容
本发明的技术任务是针对以上不足之处,提供一种定期清理gotty僵死进程的方法,能够提高用户使用产品的效率和产品使用的快捷和舒适性,提高产品的易用性和完善性。
本发明解决其技术问题所采用的技术方案是:
一种定期清理gotty僵死进程的方法,将gotty和脚本集成进Docker容器中,并将gotty、登录、启动、清理僵死进程内容共同构建镜像部署,实现增加自定义功能,将终端显示在web浏览器页面,使得用户可以访问mysql虚机,并且不会造成僵死进程的增加;通过脚本将gotty运行,并启动定时任务调用脚本清理僵死进程;
通过shell脚本接收实例信息,再通过ssh远程登录mysql虚机,在关闭gotty连接后,清理僵死的ssh进程。
其中,登录脚本负责登录虚机;启动脚本启动gotty,并定时执行清理僵死进程脚本;清理僵死进程脚本负责清理僵死进程。
该方法通过将ssh访问虚机和gotty结合,提供了浏览器访问终端的功能,提高了用户使用产品的效率和产品使用的快捷和舒适性;同时,将定时清理僵死进程与gotty相关联,避免了僵死进程的增多导致的存储增大,提高了产品的易用性和完善性。
优选的,用户使用gotty通过ssh访问虚机后,关闭gotty连接,ssh进程未终止;每隔固定时间清理一次僵死进程,若清理僵死进程未果,则再挂起僵死进程的父进程。
整个过程无需用户参与,通讯迅速,复用性强,代码无需复杂更改;扩展性强,可以在任意组件调用此功能,各个组件间无依赖关系,提高了扩展的效率。
进一步的,将gotty和脚本集成进Docker容器中的具体流程如下:
1)、在dockerfile中安装golang、git、vim、wget;
2)、将登录脚本、启动脚本、杀僵死进程脚本拷贝至工作目录;
3)、配置go环境变量;
4)、设置http提交文件大小的上限;
5)、设置启动脚本命令。
优选的,所述go环境变量包括GOROOT、GOBIN、PATH和GOPATH。
具体的,登录脚本的具体流程如下:
1)、读取传入参数,实例id、公钥和管理IP;
2)、通过wget调用接口获取私钥;
3)、下载私钥成功时,通过ssh登录mysql虚机;
4)、下载私钥失败时,输出“下载密钥失败”。
具体的,启动gotty脚本的具体流程如下:
1)、执行启动gotty命令;
2)、设置循环任务,循环任务中执行清除僵死进程的脚本,执行完成后进入睡眠。
优选的,所述睡眠时间设定为24h。
具体的,清除僵死进程脚本的具体流程如下:
1)、获取僵死进程的id列表,打印id列表到日志;
2)、遍历列表,强制杀死僵死进程,过程中打印日志;
3)、重新获取僵死进程的父进程id列表;
4)、遍历父进程列表,挂起父进程。
本发明还要求保护一种定期清理gotty僵死进程的装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行上述的方法。
本发明还要求保护一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的方法。
本发明的一种定期清理gotty僵死进程的方法与现有技术相比,具有以下有益效果:
该方法在关闭gotty连接后,清除僵死进程。在web浏览器上展示终端,将终端的输出传输给客户端,并从客户端接收输入,将其转发给终端;
gotty在docker容器中安装部署启动,提高了部署安装的便捷性;
用户使用系统进行终端操作时,只需要关注实际操作内容即可,对不安全的接入,返回“获取密钥失败”信息;由于用户连接MySQL虚机生成的僵死进程,及时清理,使应用免于因僵死进程过多影响服务,确保用户使用的便捷性,满足用户使用系统的需求。
同时,本发明复用性很高,用户只需要docker镜像部署成功,直接使用该发明逻辑即可,不必进行额外操作,提高了复用性,并保证了执行的准确性。。
附图说明
图1是本发明一个实施例提供的Docker集成的具体流程图;
图2是本发明一个实施例提供的脚本登录的具体流程图;
图3是本发明一个实施例提供的启动gotty脚本的具体流程图;
图4是本发明一个实施例提供的清理僵死进程的具体流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
Docker是一个开源的应用容器引擎,基于Go语言并组从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。Docker是一个用于开发,交付和运行应用程序的开放平台。Docker能够将应用程序和基础架构分开,从而可以快速交付软件。
Docker的优点有:快速,一致的交付应用程序;响应式部署和扩展;在同一硬件上运行更多工作负载。
目前Gotty是一个简单的基于Go语言的命令行工具,它可以将终端(TTY)作为web程序共享。它会将命令行工具转换为web程序。它使用Chrome OS的终端仿真器(xterm)来在Web浏览器上执行基于JavaScript的终端。现有页面通过web浏览器连接gotty终端,再通过shell脚本连接mysql虚机,在mysql虚机中进行操作,包括启动MySQL,进入MySQL查询,修改等。当不需要操作时,直接关闭,仅仅关闭的是gotty终端的连接,ssh连接未关闭,导致docker容器中出现大量僵死进程,僵死进程的清理变为一个亟待解决的问题。
本发明实施例提供一种定期清理gotty僵死进程的方法,将gotty和脚本集成进Docker容器中,并将gotty、登录、启动、清理僵死进程内容共同构建镜像部署,实现增加自定义功能,将终端显示在web浏览器页面,使得用户可以访问mysql虚机,并且不会造成僵死进程的增加;通过脚本将gotty运行,并启动定时任务调用脚本清理僵死进程;
通过shell脚本接收实例信息,再通过ssh远程登录mysql虚机,在关闭gotty连接后,清理僵死的ssh进程。
该方法用以解决将终端(TTY)作为web程序共享,通过gotty命令行工具转换为web程序访问虚机后,ssh进程未关闭僵死,并未清理的问题。将gotty、登录、启动、清理僵死进程内容共同构建镜像部署应用中,其中,登录脚本负责登录虚机;启动脚本启动gotty,并定时执行清理僵死进程脚本;清理僵死进程脚本负责清理僵死进程。
该方法通过将ssh访问虚机和gotty结合,提供了浏览器访问终端的功能,提高了用户使用产品的效率和产品使用的快捷和舒适性;同时,将定时清理僵死进程与gotty相关联,避免了僵死进程的增多导致的存储增大,提高了产品的易用性和完善性。
该方法中,用户使用gotty通过ssh访问虚机后,关闭gotty连接,ssh进程未终止;每隔固定时间清理一次僵死进程,若清理僵死进程未果,则再挂起僵死进程的父进程。整个过程无需用户参与,通讯迅速,复用性强,代码无需复杂更改;扩展性强,可以在任意组件调用此功能,各个组件间无依赖关系,提高了扩展的效率。
该方法的具体实现过程如下:
一、将gotty和脚本集成进Docker容器中,如图1所示,具体流程如下:
1)、在dockerfile中安装golang、git、vim、wget;
2)、将登录脚本、启动脚本、杀僵死进程脚本拷贝至工作目录;
3)、配置go环境变量(GOROOT、GOBIN、PATH、GOPATH);
4)、设置http提交文件大小的上限;
5)、设置启动脚本命令。
二、登录脚本,如图2所示,具体流程如下:
1)、读取传入参数,实例id、公钥和管理IP;
2)、通过wget调用接口获取私钥;
3)、下载私钥成功时,通过ssh登录mysql虚机;
4)、下载私钥失败时,输出“下载密钥失败”。
三、启动gotty脚本,如图3所示,具体流程如下:
1)、执行启动gotty命令;
2)、设置循环任务,循环任务中执行清除僵死进程的脚本,执行完成后进入睡眠24h。
四、清除僵死进程脚本,如图4所示,具体流程如下:
1)、获取僵死进程的id列表,打印id列表到日志;
2)、遍历列表,强制杀死僵死进程,过程中打印日志;
3)、重新获取僵死进程的父进程id列表;
4)、遍历父进程列表,挂起父进程。
该方法在关闭gotty连接后,清除僵死进程。在web浏览器上展示终端,将终端的输出传输给客户端,并从客户端接收输入,将其转发给终端;gotty在docker容器中安装部署启动,提高了部署安装的便捷性;用户使用系统进行终端操作时,只需要关注实际操作内容即可,对不安全的接入,返回“获取密钥失败”信息;由于用户连接MySQL虚机生成的僵死进程,及时清理,使应用免于因僵死进程过多影响服务,确保用户使用的便捷性,满足用户使用系统的需求。
同时,本发明复用性很高,用户只需要docker镜像部署成功,直接使用该发明逻辑即可,不必进行额外操作,提高了复用性,并保证了执行的准确性。
本发明实施例还提供了一种定期清理gotty僵死进程的装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行本发明上述实施例所述的定期清理gotty僵死进程的方法。
本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的定期清理gotty僵死进程的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

Claims (10)

1.一种定期清理gotty僵死进程的方法,其特征在于,将gotty和脚本集成进Docker容器中,并将gotty、登录、启动、清理僵死进程内容共同构建镜像部署,通过脚本将gotty运行,并启动定时任务调用脚本清理僵死进程;
通过shell脚本接收实例信息,再通过ssh远程登录mysql虚机,在关闭gotty连接后,清理僵死的ssh进程。
2.根据权利要求1所述的一种定期清理gotty僵死进程的方法,其特征在于,用户使用gotty通过ssh访问虚机后,关闭gotty连接;每隔固定时间清理一次僵死进程,若清理僵死进程未果,则挂起僵死进程的父进程。
3.根据权利要求1或2所述的一种定期清理gotty僵死进程的方法,其特征在于,将gotty和脚本集成进Docker容器中的具体流程如下:
1)、在dockerfile中安装golang、git、vim、wget;
2)、将登录脚本、启动脚本、杀僵死进程脚本拷贝至工作目录;
3)、配置go环境变量;
4)、设置http提交文件大小的上限;
5)、设置启动脚本命令。
4.根据权利要求3所述的一种定期清理gotty僵死进程的方法,其特征在于,所述go环境变量包括GOROOT、GOBIN、PATH和GOPATH。
5.根据权利要求3所述的一种定期清理gotty僵死进程的方法,其特征在于,登录脚本的具体流程如下:
1)、读取传入参数,实例id、公钥和管理IP;
2)、通过wget调用接口获取私钥;
3)、下载私钥成功时,通过ssh登录mysql虚机;
4)、下载私钥失败时,输出“下载密钥失败”。
6.根据权利要求3所述的一种定期清理gotty僵死进程的方法,其特征在于,启动gotty脚本的具体流程如下:
1)、执行启动gotty命令;
2)、设置循环任务,循环任务中执行清除僵死进程的脚本,执行完成后进入睡眠。
7.根据权利要求6所述的一种定期清理gotty僵死进程的方法,其特征在于,所述睡眠时间设定为24h。
8.根据权利要求3所述的一种定期清理gotty僵死进程的方法,其特征在于,清除僵死进程脚本的具体流程如下:
1)、获取僵死进程的id列表,打印id列表到日志;
2)、遍历列表,强制杀死僵死进程,过程中打印日志;
3)、重新获取僵死进程的父进程id列表;
4)、遍历父进程列表,挂起父进程。
9.一种定期清理gotty僵死进程的装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至8任一所述的方法。
10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至8任一所述的方法。
CN202011643534.8A 2020-12-31 2020-12-31 一种定期清理gotty僵死进程的方法 Pending CN112711463A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011643534.8A CN112711463A (zh) 2020-12-31 2020-12-31 一种定期清理gotty僵死进程的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011643534.8A CN112711463A (zh) 2020-12-31 2020-12-31 一种定期清理gotty僵死进程的方法

Publications (1)

Publication Number Publication Date
CN112711463A true CN112711463A (zh) 2021-04-27

Family

ID=75548109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011643534.8A Pending CN112711463A (zh) 2020-12-31 2020-12-31 一种定期清理gotty僵死进程的方法

Country Status (1)

Country Link
CN (1) CN112711463A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106769A1 (en) * 2007-10-22 2009-04-23 Tomohiro Nakamura Method and apparatus for recording web application process
CN101610524A (zh) * 2008-06-17 2009-12-23 中兴通讯股份有限公司 信令关联的测试装置和方法
CN111221665A (zh) * 2019-12-25 2020-06-02 中科曙光国际信息产业有限公司 基于浏览器的容器远程登陆方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106769A1 (en) * 2007-10-22 2009-04-23 Tomohiro Nakamura Method and apparatus for recording web application process
CN101610524A (zh) * 2008-06-17 2009-12-23 中兴通讯股份有限公司 信令关联的测试装置和方法
CN111221665A (zh) * 2019-12-25 2020-06-02 中科曙光国际信息产业有限公司 基于浏览器的容器远程登陆方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
清,纯: "ssh连接断开后shell进程退出", 《HTTPS://BLOG.CSDN.NET/WEIXIN_30819085/ARTICLE/DETAILS/95540743》 *
编辑: "从Web端ssh连接到机器或者机器内的容器", 《HTTPS://WWW.CODERCTO.COM/A/46289.HTML》 *

Similar Documents

Publication Publication Date Title
Flinn Cyber foraging: Bridging mobile and cloud computing
US11693680B2 (en) Virtual computing systems and methods
CN112035172B (zh) 操作系统启动方法、装置、服务器及存储介质
CN109525624B (zh) 一种容器登录方法、装置及存储介质
CN106951233B (zh) 混合模式智能手机应用开发框架系统
CN108632375B (zh) 一种针对分布式部署服务软件程序的在线升级方法
CN111552496B (zh) 一种基于添加临时容器实现无缝升级边车的系统与方法
CN112329945A (zh) 一种模型部署及推理的方法和装置
KR102073678B1 (ko) 펌웨어 가상화를 위한 방법 및 장치
JPH07146844A (ja) 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法
US10574724B2 (en) Automatic discovery of management nodes and generation of CLI using HA module
US8285787B2 (en) Systems and methods for managing a collaboration space having application hosting capabilities
CN109740765A (zh) 一种基于亚马逊网络服务器的机器学习系统搭建方法
CN110753088A (zh) 一种系统部署方法及装置
CN115291946A (zh) 鸿蒙系统移植方法、装置、电子设备及可读介质
JP2007527562A (ja) 埋め込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法
CN112882793B (zh) 一种容器资源共享的方法和系统
CN112711463A (zh) 一种定期清理gotty僵死进程的方法
CN112559344A (zh) 远程mock测试方法及系统
CN111679842A (zh) 应用程序热更新处理方法、装置及系统
CN114662102A (zh) 一种文件处理方法、装置及存储介质
CN111061642B (zh) 一种基于用户数据的全自动竞赛数据处理系统以及方法
CN114257614A (zh) 一种多业务模式的医院大数据平台系统及资源调度方法
CN113885875A (zh) 一种分布式编译方法、系统、主服务器及存储介质
CN114327498A (zh) 自动化部署方法、系统、电子设备及计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210427

RJ01 Rejection of invention patent application after publication