CN117908993B - 进程的limit修改方法 - Google Patents

进程的limit修改方法 Download PDF

Info

Publication number
CN117908993B
CN117908993B CN202410304356.8A CN202410304356A CN117908993B CN 117908993 B CN117908993 B CN 117908993B CN 202410304356 A CN202410304356 A CN 202410304356A CN 117908993 B CN117908993 B CN 117908993B
Authority
CN
China
Prior art keywords
limit
limit value
exec
function
execve
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.)
Active
Application number
CN202410304356.8A
Other languages
English (en)
Other versions
CN117908993A (zh
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.)
Kirin Software Co Ltd
Original Assignee
Kirin Software 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 Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202410304356.8A priority Critical patent/CN117908993B/zh
Publication of CN117908993A publication Critical patent/CN117908993A/zh
Application granted granted Critical
Publication of CN117908993B publication Critical patent/CN117908993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

进程的limit修改方法,包括如下步骤:创建一个目录;在目录下创建一个文件;写入与进程limit值相关字符串;对写入的字符串进行数据类型转换及初步合法性检查;通过所写入的字符串对进程的limit值进行修改;本发明提供的进程的limit修改方法,能够提供统一的修改接口,解决个程序limit配置繁琐的问题,且能够解决修改某些进程limit后需要重启服务的问题,解决了因手动修改导致从进程启动到修改完成有较大时间差的问题,同时也让操作更加简便。

Description

进程的limit修改方法
技术领域
本发明涉及进程的limit修改方法,具体涉及基于linux的进程的limit修改方法。
背景技术
limit是由POSIX规范定义的一种机制,用来让操作系统给进程施加诸如打开文件数量、栈空间大小等多个种类的资源限制。limit有软硬之分,区别在于,软限制表示进程当前使用资源的最大数量,硬限制表示在调整的时候软限制的最大值。
Linux是一个遵循POSIX规范的开源操作系统。在服务器,嵌入式等领域有着非常广泛的应用。近年来,基于Linux的国产操作系统软件生态蓬勃发展。越来越多的企业在将应用迁移到国产Linux操作系统中,这也对国产Linux操作系统的性能和稳定性提出了更高的要求。随着操作系统版本的不断迭代,在保证系统稳定运行的前提下,找到更多的性能优化方法成为了系统运维工程师的工作重点。
在Linux性能优化工作中,进程各项资源的limit对性能的影响是一个很值得研究的方面。然而在现有技术中,系统不同组件或程序的limit是根据它们各自的配置文件去设定的,不仅逐个修改操作繁琐,而且这些配置文件的格式和语法往往差异较大,无疑会增加维护负担。
发明内容
为解决已有技术存在的不足,本发明提供了一种进程的limit修改方法,包括如下步骤:
步骤S1:创建一个op_kmodule目录;
步骤S2:在op_kmodule目录下创建一个文件;
步骤S3:向步骤S2所创建的文件写入与进程limit值相关字符串;
步骤S4:定义步骤S2所创建的文件的写操作函数,通过写操作函数对步骤S3中所写入的字符串进行数据类型转换及初步合法性检查;
步骤S5:定义修改函数,修改函数通过所写入的字符串对进程的limit值进行修改;
其中,针对需要修改单个进程的limit的情况,步骤S3中所写入的字符串由4个字段组成,分别是要修改limit的进程id、该进程所对应的资源id、软limit值及硬limit值;
针对需要修改所有进程limit的情况,步骤S3中所写入的字符串由3个字段组成,分别是资源id、软limit值及硬limit值;
其中,软limit值表示进程当前使用资源的最大数量,硬limit值表示软limit值能够设定的最大值;
针对在进程exec时修改limit的情况,步骤S3中所写入的字符串由3个字段组成,分别是exec资源id、exec软limit值及exec硬limit值。
其中,exec资源id表示当下次有进程执行execve运行目标二进制文件时,应当修改这个进程的哪项资源;exec软limit值表示当下次有进程执行execve运行目标二进制文件时,op_kmodule模块应当把所修改的资源的软limit改成多少;exec硬limit值表示当下次有进程执行execve运行目标二进制文件时,应当把所修改的资源的硬limit改成多少。
其中,所述步骤S1中,通过添加一个kobject结构体,以在/sys目录下创建一个名为op_kmodule的目录;
所述步骤S2中,通过定义一个kobj_attribute结构体,以在op_kmodule目录下创建一个文件。
其中,所述步骤S5中,通过步骤S4中数据类型转换的结果作为参数调用修改函数,使修改函数通过所写入的字符串对进程的limit值进行修改。
其中,针对在进程exec时修改limit的情况,在执行步骤S1至步骤S5之前,还执行如下操作:在op_kmodule模块的初始化函数中使用hook系统调用的方式将execve系统调用的地址替换为op_kmodule模块中的hook_execve函数,原始地址保存在变量os_execve中,以使系统中有进程执行execve系统调用,其实际执行的就是hook_execve函数;
同时,在执行完步骤S1至步骤S5之后,在op_kmodule模块的退出函数中将execve系统调用的地址还原为原始的系统调用。
其中,hook_execve函数的执行逻辑包括:
步骤Sl:判断相应进程要运行的是否是目标二进制文件;
步骤Sm:判断相应进程是否已经设定了exec资源id、exec软limit值及exec硬limit值。
本发明提供的进程的limit修改方法,能够提供统一的修改接口,解决个程序limit配置繁琐的问题,且能够解决修改某些进程limit后需要重启服务的问题,解决了因手动修改导致从进程启动到修改完成有较大时间差的问题,同时也让操作更加简便。
附图说明
图1:linux内核代码中为各个资源种类所定义的宏的值。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
为解决已有技术存在的不足,本发明提供一种进程limit的修改方法,旨在解决如下问题:
1、提供统一接口,支持Linux系统下对任意进程的limit修改,并且每次修改会自动保存limit旧值。解决修改各程序limit配置繁琐的问题。
2、支持Linux系统下对所有进程的limit修改,能够在任意时刻完成对系统中所有进程limit的修改,解决修改某些进程limit需要重启服务的问题。
3、支持在进程执行exec时对limit进行修改。在不同的使用场景中,想要修改的不一定是现有的某个进程的limit,而是接下来某一时刻要启动的进程的limit,使用该模块能够在有进程exec执行一个可执行文件时自动对它的limit进行修改,并支持根据文件名进行目标识别。解决了因手动修改导致从进程启动到修改完成有较大时间差的问题,同时也让操作更加简便。
本发明的具体实现方式如下:
一、修改单个进程的limit
此功能可以让系统管理员修改单个进程的任何一种资源的limit。实现方式为:创建并添加一个类型为kobject结构体的变量,其作用为在/sys目录下创建一个名为op_kmodule的目录。
接着定义一个类型为kobj_attribute结构体的变量用来在op_kmodule目录下创建一个名为limit的文件。这个limit文件是提供给系统管理员的接口,系统管理员通过向文件中写入字符串来修改进程的limit。每次写入的字符串由4个字段组成,分别是要修改limit的进程id,资源id,软limit值和硬limit值,字段之间以空格分隔。其中的资源id指的是,linux内核代码中为各个资源种类所定义的宏的值(见图1),软limit值和硬limit值可以写成unlimited,表示无限制。同时limit文件可以读取,每次读出的字符串有4个字段,表示最近一次成功修改的过程中,进程被修改的资源原来的limit值。读出的这4个字段含义和写入相同,只不过它们之间以换行符分隔。如果尚未成功修改过limit,那么读出的就是空字符串。
另外,kobject结构体及kobj_attribute结构体均为linux内核代码中定义好的,因为/sys目录是一个只读目录,用一般的方法创建是不会成功的,即使创建成功,创建出来的文件也和op_kmodule模块(一个名称为op_kmodule的linux内核模块,op_kmodule目录作为其运行过程中创建的目录)没有关系,写入文件的内容也不会传到op_kmodule模块中去,故本发明通过创建类型为kobject结构体及kobj_attribute结构体的变量,通过该变量在/sys目录下创建一个名为op_kmodule的目录,并通过向op_kmodule的目录写入字符串的方式,使得写入的字符串能够和op_kmodule模块关联起来,进而能够基于写入的字符串修改limit值。
随后在limit文件的写操作函数中对写入的字符串进行数据类型转换,初步合法性检查等操作。
初步合法性检查通过后,以数据类型转换的结果为参数调用set_limit函数修改目标进程的limit。在limit文件的读操作函数中检查是否有最近一次成功操作保存的数据,如果有则将它转换成字符串并输出给用户空间程序。
定义set_limit函数,在函数中首先对limit新值进行进一步的合法性检查,检查通过后根据进程id找到对应的task_struct结构体。task_struct是linux内核为了表示和管理进程而定义的一种结构体,在task_struct结构体中定义有signal成员,它是一个signal_struct结构体指针。在signal_struct结构体中定义有rlimit结构体数组rlim,每一个rlimit结构体用来存储一种资源的limit值,每种资源的limit保存在数组中第几个结构体上由图1中的宏定义决定。找到task_struct结构体后先保存limit的旧值,再设为给定的新值。
由于op_kmodule模块是直接修改对应的rlimit结构体中成员变量的值,因此在整个修改过程中被修改limit的进程运行不会受到影响,更不会终止和重启,因此使用op_kmodule模块修改limit不需要重启对应的服务。
二、修改所有进程的limit
此功能可以让系统管理员修改当前系统中所有进程的任何一种资源的limit。实现方式为:在/sys目录下创建op_kmodule目录,在op_kmodule目录下创建一个名为all_limit的文件。此步骤与第一部分共用同一段代码,后者和功能一中的代码除了文件名不同外其他一模一样。这个all_limit文件是提供给系统管理员的接口,和limit文件类似,系统管理员通过向文件中写入字符串来修改进程的limit。每次写入的字符串由3个字段组成,分别是资源id,软limit值和硬limit值,字段之间以空格分隔。all_limit文件可以读取,每次读出的是最近一次通过合法性检查的3个字段,只不过字段之间以换行符分隔。如果尚未输入过合法的字符串,那么读出的就是空字符串。
随后在all_limit文件的写操作函数中对写入的字符串进行数据类型转换,初步合法性检查等操作,检查通过后,以数据类型转换的结果为参数调用set_all_limit函数修改所有进程的limit,如果set_all_limit函数成功返回,则保存本次写入的3个字段。在all_limit文件的读操作函数中检查是否保存有最近一次通过合法性检查的数据,如果有则将它转换成字符串并输出给用户空间程序。
定义set_all_limit函数,在函数中首先对limit新值进行进一步的合法性检查,检查通过后遍历task_struct结构体链表,将所有可修改的进程的limit设为给定的新值。
和第一部分类似,这里同样是直接修改对应的rlimit结构体中成员变量的值,因此修改所有进程的limit不需要重启服务。
其中,task_struct结构体链表指的是task_struct结构体组成的链表。链表是多个结构体组成的一种数据结构,假如有一种结构体A,它的其中一个成员变量是结构体A类型的指针ptr,现有若干个类型为A结构体的变量a, b, c...,并且a的ptr指针指向b,b的ptr指针指向c... 以此类推,那么这些结构体形成的“链式”结构就称为链表。
三、在进程exec时修改limit
此功能可以让系统管理员针对任何一种资源设定一个limit新值,当系统中有进程执行execve系统调用,并且要运行的是目标二进制文件时修改它的limit。实现方式为:在op_kmodule模块的初始化函数中使用hook系统调用的方式将execve系统调用的地址替换为op_kmodule模块中的hook_execve函数,原始地址保存在变量os_execve中,这样一来,每当系统中有进程执行execve系统调用,它执行的就会是hook_execve函数。
hook_execve函数的逻辑比较简单,它只做2项操作:1.判断是否应该修改当前进程的limit,是则调用set_limit函数进行修改。此功能中的set_limit函数和上边功能1中的set_limit函数是可见范围互不重叠的两个函数。2.执行原始的execve系统调用。
hook_execve函数第1项操作判断的条件有2个:1.要运行的是不是目标二进制文件。2.系统管理员是否设定了“exec资源id”和“exec limit值”。对于条件1,当is_target_proc函数返回真时条件成立。系统管理员应根据自己的需求、目标二进制文件的特点以及系统的软件环境编写is_target_proc的函数体。本发明的一个实施例中,is_target_proc根据文件名判断的方法:首先从di寄存器保存的地址中获取要运行的二进制的文件名,随后将它和目标二进制文件名数组target_filename_list中的每个字符串进行比较,若有相同的,则要运行的二进制文件是目标二进制文件。
在/sys目录下创建op_kmodule目录,在op_kmodule目录下创建一个名为new_limit的文件。创建op_kmodule目录及创建new_limit的文件所使用代码与第一部分中所使用代码除了文件名不同外其他一模一样。这个new_limit文件是提供给系统管理员的接口,系统管理员通过向文件中写入字符串来设定exec资源id、exec软limit值和exec硬limit值,这3个字段的意思是:当下次有进程执行execve运行目标二进制文件时,要把它的哪项资源的limit值改成多少。new_limit文件可以读取,每次读出的是最近一次通过合法性检查的3个字段,以换行符分隔。如果尚未输入过合法的字符串,那么读出的就是空字符串。
exec资源id表示当下次有进程执行execve运行目标二进制文件时,op_kmodule模块应当修改这个进程的哪项资源;
exec软limit值表示当下次有进程执行execve运行目标二进制文件时,op_kmodule模块应当把它这项资源的软limit改成多少;
exec硬limit值表示当下次有进程执行execve运行目标二进制文件时,op_kmodule模块应当把它这项资源的硬limit改成多少。
随后在new_limit文件的写操作函数中对写入的字符串进行数据类型转换,合法性检查等操作,检查通过后将exec资源id和exec limit值保存下来,既供hook_execve函数在判断时读取,也供set_limit函数随时使用。在new_limit文件的读操作函数中检查是否保存有exec资源id和exec limit值,如果有则将它转换成字符串并输出给用户空间程序。
定义set_limit函数,以数据类型转换的结果为参数调用set_limit函数,在函数中首先对exec资源id和exec limit值进行合法性检查,检查通过后,在函数中根据exec资源id和exec limit值修改limit。
最后在op_kmodule模块的退出函数中将execve还原为原始的系统调用。
本发明的有益效果如下:
1、修改limit不需要重启服务,使得操作更加简便。
2、提供了统一的limit修改接口,修改limit不需要修改各种配置文件,减轻了维护负担。
在传统的方法中,要修改ssh登录shell的limit需要修改 /etc/security/limits.conf文件,它的每一行是“<domain> <type> <item> <value>”这种格式;要修改nginx的limit需要修改 /etc/nginx/nginx.conf文件,它是nginx特有的一种格式;要修改docker的limit需要修改 /etc/docker/daemon.json文件,它是json格式...;别的服务又会是另一个不同的文件和格式。但是本发明使用op_kmodule模块修改各种服务的limit,只需要向模块所创建的文件中写入相关信息即可。将传统方式中涉及到的这些文件以及它们的格式看作是提供给系统管理员的接口,相比之下本发明通过op_kmodule模块这种方式就显得更加统一一些。
3、提供了在进程执行exec时修改limit的功能,使得修改更加灵活。
4、对limit修改的作用域进行了限定。
在传统方式中如果修改了当前shell的limit,那么修改之后在这个shell中启动的所有进程都会继承这种修改。这不一定是我们想要的,举例而言:假设启动一台qemu虚拟机,并把这个qemu进程的栈空间上限设大一点,那么执行的操作就是先执行ulimit -s XXX命令修改RLIMIT_STACK的软limit,再执行qemu命令启动虚拟机;但是启动后再运行别的程序栈空间上限仍然会是ulimit命令所修改的值,而不是当前shell原本的值。然而本发明通过使用op_kmodule模块,就可以使用功能一或者功能三修改qemu进程的RLIMIT_STACK,这种修改是不会影响到shell和接下来将要启动的进程的。两种方式相比之下,后者对limit修改的影响范围可以控制的更加精细,因此“对limit修改的作用域进行了限定”。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

Claims (5)

1.进程的limit修改方法,其特征在于,包括如下步骤:
步骤S1:创建一个op_kmodule目录;
步骤S2:在op_kmodule目录下创建一个文件;
步骤S3:向步骤S2所创建的文件写入与进程limit值相关字符串;
步骤S4:定义步骤S2所创建的文件的写操作函数,通过写操作函数对步骤S3中所写入的字符串进行数据类型转换及初步合法性检查;
步骤S5:定义修改函数,修改函数通过所写入的字符串对进程的limit值进行修改;
其中,针对需要修改单个进程的limit的情况,步骤S3中所写入的字符串由4个字段组成,分别是要修改limit的进程id、该进程所对应的资源id、软limit值及硬limit值;
针对需要修改所有进程limit的情况,步骤S3中所写入的字符串由3个字段组成,分别是资源id、软limit值及硬limit值;
其中,软limit值表示进程当前使用资源的最大数量,硬limit值表示软limit值能够设定的最大值;
针对在进程exec时修改limit的情况,步骤S3中所写入的字符串由3个字段组成,分别是exec资源id、exec软limit值及exec硬limit值;
其中,exec资源id表示当下次有进程执行execve运行目标二进制文件时,应当修改这个进程的哪项资源;exec软limit值表示当下次有进程执行execve运行目标二进制文件时,op_kmodule模块应当把所修改的资源的软limit改成多少;exec硬limit值表示当下次有进程执行execve运行目标二进制文件时,应当把所修改的资源的硬limit改成多少。
2.如权利要求1所述的进程的limit修改方法,其特征在于:
所述步骤S1中,通过添加一个kobject结构体,以在/sys目录下创建一个名为op_kmodule的目录;
所述步骤S2中,通过定义一个kobj_attribute结构体,以在op_kmodule目录下创建一个文件。
3.如权利要求1所述的进程的limit修改方法,其特征在于:
所述步骤S5中,通过步骤S4中数据类型转换的结果作为参数调用修改函数,使修改函数通过所写入的字符串对进程的limit值进行修改。
4.如权利要求1所述的进程的limit修改方法,其特征在于:
针对在进程exec时修改limit的情况,在执行步骤S1至步骤S5之前,还执行如下操作:在op_kmodule模块的初始化函数中使用hook系统调用的方式将execve系统调用的地址替换为op_kmodule模块中的hook_execve函数,原始地址保存在变量os_execve中,以使系统中有进程执行execve系统调用,其实际执行的就是hook_execve函数;
同时,在执行完步骤S1至步骤S5之后,在op_kmodule模块的退出函数中将execve系统调用的地址还原为原始的系统调用。
5.如权利要求4所述的进程的limit修改方法,其特征在于:hook_execve函数的执行逻辑包括:
步骤Sl:判断相应进程要运行的是否是目标二进制文件;
步骤Sm:判断相应进程是否已经设定了exec资源id、exec软limit值及exec硬limit值。
CN202410304356.8A 2024-03-18 2024-03-18 进程的limit修改方法 Active CN117908993B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410304356.8A CN117908993B (zh) 2024-03-18 2024-03-18 进程的limit修改方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410304356.8A CN117908993B (zh) 2024-03-18 2024-03-18 进程的limit修改方法

Publications (2)

Publication Number Publication Date
CN117908993A CN117908993A (zh) 2024-04-19
CN117908993B true CN117908993B (zh) 2024-05-17

Family

ID=90694068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410304356.8A Active CN117908993B (zh) 2024-03-18 2024-03-18 进程的limit修改方法

Country Status (1)

Country Link
CN (1) CN117908993B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117224A (zh) * 2011-03-15 2011-07-06 北京航空航天大学 一种面向多核处理器的操作系统噪声控制方法
CN107193590A (zh) * 2017-05-10 2017-09-22 北京海杭通讯科技有限公司 一种基于android的防root方法
CN108229155A (zh) * 2017-12-27 2018-06-29 山东华软金盾软件股份有限公司 一种Linux系统用户操作行为审计方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117224A (zh) * 2011-03-15 2011-07-06 北京航空航天大学 一种面向多核处理器的操作系统噪声控制方法
CN107193590A (zh) * 2017-05-10 2017-09-22 北京海杭通讯科技有限公司 一种基于android的防root方法
CN108229155A (zh) * 2017-12-27 2018-06-29 山东华软金盾软件股份有限公司 一种Linux系统用户操作行为审计方法

Also Published As

Publication number Publication date
CN117908993A (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
US8464242B2 (en) Virtualization of configuration settings
US7310801B2 (en) Servicing a component-based software product throughout the software product lifecycle
CN108089888B (zh) 一种基于文件系统的应用运行方法及系统
CN101329636B (zh) 虚拟化窗口信息的方法和设备
CN109614165B (zh) 一种com组件的多版本并行运行方法和装置
US10684846B2 (en) Using semantic annotations to control compatibility behaviors
JP2021002317A (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US7337435B2 (en) Efficient configuration data migration technique
CN108089890B (zh) 一种基于磁盘的应用运行方法及系统
CN111679852B (zh) 一种冲突依赖库的检测方法及装置
US8024707B2 (en) Facilitating self-remediation for software applications
JP4627636B2 (ja) 非同期コンポーネントをアプリケーションフレームワークアグノスティックにするメカニズム
WO2024174904A1 (zh) 容器实例的管理迁移方法、装置和电子设备及存储介质
US11762760B1 (en) Scalable test workflow service
CN117908993B (zh) 进程的limit修改方法
CN111913753A (zh) 一种windows系统云迁移中启动方式的变更方法及系统
CN116049000A (zh) 环境参数配置方法、装置、设备、存储介质及产品
TWI777636B (zh) 組成模組化韌體的方法、裝置及電腦程式產品
CN110599112A (zh) 一种网络页面开发、维护方法和装置
CN114356424A (zh) 前端项目多环境共用镜像的方法及计算机可读存储介质
CN109960522B (zh) 一种软件升级方法及装置
CN109857380B (zh) 一种工作流文件编译方法及装置
US12045594B2 (en) Application deployment platform
WO2007144891A1 (en) A method for the distribution of software processes to a plurality of computers

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
GR01 Patent grant
GR01 Patent grant