处理进程的方法及其装置与流程

文档序号:13886878阅读:149来源:国知局

本发明涉及信息处理领域,并且更具体地,涉及一种处理容器中进程的方法及其装置。



背景技术:

容器(英文:container)是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,其中,docker是当前最热门的容器技术。

看门狗(英文:watchdog)驱动用于保证系统的正常运行,系统会定期向该watchdog驱动进行喂狗,当系统在出现故障时可能会长时间不喂狗,此时watchdog驱动能够重启系统。

当前操作系统只有一个watchdog驱动,该watchdog驱动只能够针对整个系统的全部进程进行删除处理,因此只能够保证整个系统级别的可靠性。然而,随着电信业务的发展,容器技术越来越普遍,当运行程序的在容器内运行时,期望watchdog驱动能够实现针对一个容器内的全部进程的删除处理。



技术实现要素:

本发明实施例提供一种容器中处理进程的方法,能够对容器内的全部进程进行删除处理。

第一方面,提供一种处理容器中进程的方法,所述方法用于物理机,所述物理机上部署有多个容器,所述物理机包括看门狗watchdog驱动,包括:所述watchdog驱动通过设备文件dev接收第一容器的第一操作指令,所述第一操作指令包括第一进程标识符pid,所述第一pid表示所述第一操作指令是所述第一容器中的第一进程下发的;根据所述第一pid,确定所述第一容器对应的第一命名空间namespace;根据所述第一namespace,删除所述第一容器内的全部进程。

应理解,第一容器的操作包括下列中的至少一种:读操作、写操作、打开操作、关闭操作以及ioctl操作。

因此,看门狗驱动通过确定特定容器的命名空间,能够根据该命名空间对该特定容器内的全部进程进行删除,从而能够实现对容器粒度的进程处理。

结合第一方面,在第一方面的第一种可能的实现方式中,在所述根据所述第一命名空间,删除所述第一容器内的全部进程之前,所述方法还包括:根据所述第一namespace,创建所述第一容器关联的第一看门狗watchdog实例,其中,所述第一watchdog实例用于删除所述第一容器内的全部进程,所述第一watchdog实例包括第一定时器。

应理解,watchdog驱动中可能包括多个watchdog实例,每个watchdog实例用于处理各自对应的容器进程。

结合第一方面及其上述实现方式,在第一方面的第二种可能的实现方式中,所述watchdog驱动包括第一watchdog实例,所述第一watchdog实例包括第一定时器,所述根据所述第一命名空间,删除所述第一容器内的全部进程,包括:当在所述第一定时器的预设时长内,未接收到所述第一容器发送的第二操作指令,删除所述第一容器内的全部进程。

应理解,当在该第一定时器的预设时长内,没有接收到第一容器发出的第二操作指令,则删除第一容器内的全部进行,第二操作指令可以指代第一容器内发出的任意操作指令,也就是说,在第一watchdog实例在第一定时器的预设时长内,如果没有收到任何第一容器发出的操作指令,那么将指示处理器删除第一容器内的全部进程。

结合第一方面及其上述实现方式,在第一方面的第三种可能的实现方式中,在所述根据所述第一命名空间,删除所述第一容器内的全部进程之前,所述方法还包括:当在所述第一定时器的预设时长内,接收到所述第一容器的第三操作指令时,将所述第一定时器清零后重新计时。

应理解,第三操作指令为第一容器下发的任意操作指令,也就是说,第一定时器重新计时的触发条件为:第一watchdog实例接收到第一容器的操作指令。

结合第一方面及其上述实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:在所述第一定时器超时的情况下,或在接收所述第一容器发出的退出指令的情况下,删除所述第一watchdog实例。

结合第一方面及其上述实现方式,在第一方面的第五种可能的实现方式中,在所述删除所述第一容器内的全部进程后,所述方法还包括:通过所述dev设备接收第一容器重启后发出的第四操作指令,所述第四操作指令包括第二进程标识符pid,所述第二pid表示所述第四操作指令是所述第一容器中的第二进程下发的;根据所述第二pid,确定所述重启后的第一容器对应的第二namespace;根据所述第二namespace,创建与所述重启后的第一容器关联的第二watchdog实例,所述第二watchdog实例包括第二定时器,所述第二watchdog实例用于在确定所述第二定时器超时时,删除所述重启后的第一容器内的全部进程。

应理解,第四操作指令为重启后的第一容器发出的任意操作指令。

结合第一方面及其上述实现方式,在第一方面的第六种可能的实现方式中,所述watchdog驱动还包括第三watchdog实例,所述第三watchdog实例包括第三定时器,所述第三定时器与所述多个容器中的第三容器关联,所述第三watchdog实例用于根据所述第三容器下发的第三进程标识符pid,确定所述第三pid对应的第三namespace,并根据所述第三namespace删除所述第三容器中的全部进程。

因此,watchdog驱动的watchdog实例通过对相应的容器的处理,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

此外,由于至少一个容器中每个容器都通过同一个dev设备向watchdog驱动发送操作指令,避免需要多个dev设备和多个watchdog驱动实现容器级别的进程处理。

第二方面,提供一种处理进程的装置,包括:接收单元、处理单元,所述装置用于执行上述第一方面或第一方面的任一可能的实现方式中的方法。第三方面,提供了一种装置,包括:处理器、和存储器,所述处理器、所述存储器和所述接收器通过总线系统相连,所述存储器用于存储指令,所述处理器用于执行该存储器存储的指令,使得所述装置执行上述第一方面或第一方面的任一可能的实现方式中的方法。

第三方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的应用场景的示意图。

图2是本发明一个实施例的处理进程的方法的示意性流程图。

图3是本发明一个实施例的处理进程的方法的示意性结构框图。

图4是本发明另一个实施例的处理进程的方法的示意性结构框图。

图5是本发明一个实施例的处理进程的方法的示意性结构框图。

图6是本发明一个实施例的处理进程的装置的示意性结构框图。

图7是本发明一个实施例的处理进程的装置的示意性结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

图1是本发明实施例的应用场景的示意图。

如图1所示,linux系统中具有一个watchdog驱动,该watchdog驱动用于监视系统的运行,它位于内核空间,用户空间中的用户程序通过设备文件dev与该watchdog驱动进行通信。具体地,用户程序一旦打开/dev/watchdog设备,将会启动watchdog驱动在内核空间中启动一个定时器(默认为1分钟),此后,用户程序需要保证在1分钟之内向dev设备写入数据,用户设备向dev设备定期写入数据的过程也就是对watchdog进行定期喂狗的过程,用户程序每次喂狗都会导致watchdog驱动的定时器清零并重新计数。

应理解,上述1分钟的数值仅仅是示例性的,本发明不作限定。

当用户程序在1分钟之内并没有向watchdog进行喂狗时,定时器会进行系统重启操作,因此,通过该种定时喂狗的机制,可以保证系统核心进程大部分时间都处于运行状态,即使特定情况下系统进程崩溃,导致无法正常定时喂狗,系统也可以在看门狗驱动程序作用下重新启动,使得核心进程重新运行,这样的方式能够确保系统业务正常运行。

然而,当前操作系统中只有一个watchdog驱动,该watchdog驱动只能够针对整个系统的全部进程进行删除处理,因此只能够保证整个系统级别的可靠性。然而,随着电信业务的发展,容器技术越来越普遍,当运行程序的在容器内运行时,因此,期望watchdog驱动能够实现针对一个容器内的全部进程的删除处理。

图2是本发明一个实施例的处理进程的方法的示意性流程图。本发明实施例的方法用于物理机述物理机上部署有多个容器,物理机包括看门狗watchdog驱动,如图2所示,该方法包括:

步骤210,watchdog驱动通过设备文件dev接收第一容器的第一操作指令,第一操作指令包括第一进程标识符pid,第一pid表示第一操作指令是第一容器中的第一进程下发的。

步骤220,根据第一pid,确定第一容器对应的第一命名空间namespace。

步骤230,根据第一namespace,删除第一容器内的全部进程。

具体地,设备文件dev是操作系统中的一个目录文件,用于存储硬件设备信息,通过该目录可以直接访问内核。也就是说,用户和内核的交互需要通过该dev进行。具体地,容器对内核的操作,需要通过该dev进行,该至少一个容器中的每个容器都通过该dev设备向内核空间进行操作。例如,当第一容器需要向内核的watchdog驱动执行打开open操作的时候,则该第一容器需要通过/dev/watchdog对watchdog驱动发出open操作指令。

可选地,第一容器的操作包括下列中的至少一种:读操作、写操作、打开操作、关闭操作以及ioctl操作。

应理解,上述至少一个容器中的每个容器都是通过同一个dev发送操作指令,每个容器不需要单独对应一个dev,避免了资源浪费。

具体地,进程标识符(英文:processidentification;简写:pid)为操作系统中的进程识别号,操作系统中每个运行的进程都对应一个唯一的pid。第一pid可以指代第一容器中的任意一个进程,一般来讲,当容器拉起进程的时候,第一个拉起的进程的pid称之为第一pid,也就是说,第一容器的第一pid也就是该第一容器拉起的第一个进程对应的pid。

具体地,第一容器的第一操作指令中包括上述第一pid,因此可以通过该第一pid确定,第一操作指令为第一容器的第一进程下发的,应理解,第一进程不一定是第一容器内的第一个拉起的进程,可以指代第一容器中的任意一个进程。

步骤220中,当watchdog驱动接收到第一容器通过dev设备对watchdog驱动的第一操作指令时,能够获知该第一容器中的第一pid,并通过该第一pid,确定第一容器对应的命名空间(英文:namespace,简写:ns),在容器中的进程从拉起到删除这个过程中,该容器对应一个固定的命名空间ns,该命名空间可以实现容器之间运行进程的隔离。例如,当第一容器对应于第一命名空间时中,watchdog驱动可以只针对第一命名空间表征的第一容器内的所有进程进行删除处理,因此,该第一命名空间能够保证对watchdog驱动只针对第一容器中进程的进行处理,而对其它容器中的进程没有影响。

具体地,通过第一pid获取第一namespace的过程可以通过相应的程序和命令实现,例如,第一容器通过/dev/watchdog设备执行open操作时,watchdog驱动会获取到第一容器的第一pid,通过下面这个命令,可以获得第一namespace:structpid_namespace*pid_ns=task_active_pid_ns(current)。

应理解,上述通过容器对watchdog驱动的操作以获取该容器对应的pid的过程,以及通过pid获取该pid所在的命名空间的过程可以调用相应的linux指令实现,本发明不限于上述列举的具体指令代码。

因此,watchdog驱动通过确定容器的命名空间,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

可选地,作为本发明一个实施例,根据第一命名空间,删除第一容器内的全部进程之前,上述方法还包括:根据第一namespace,创建第一容器关联的第一看门狗watchdog实例,其中,第一watchdog实例用于删除第一容器内的全部进程,第一watchdog实例包括第一定时器。

也就是说,当第一容器通过dev向watchdog驱动发送操作指令时,watchdog驱动会根据第一容器对应的第一pid获取第一容器的第一namespace,并根据该第一namespace创建第一watchdog实例,该第一watchdog实例用于删除第一容器内运行的全部进程,该第一watchdog实例包括第一定时器,当第一容器在第一定时器的预设时长内没有对watchdog驱动进行操作时,则确定第一容器内运行的进程需要删除。

应理解,watchdog驱动中可能包括多个watchdog实例,每个watchdog实例用于处理各自对应的容器进程。

应理解,该第一watchdog实例中还可以包括第一容器的其它属性,例如第一命名空间、第一pid等,本发明不做限定。

例如,该第一watchdog实例的结构信息如下:

其中,soft_margin参数代表了softdog.ko的重启时间间隔,缺省值是60秒,可以在加载softdog.ko时指定清零时间间隔,例如modprobesoftdogsoft_margin=100;

其中,nowayout参数表示watchdog内核驱动配置选项,例如,‘config_watchdog_nowayout’可以设为‘y’,在这种情况下watchdog启动后不能被停止。如果模块的nowayout参数设为0,往/dev/watchdog写入字符`v’可以使watchdog停止工作;

其中,soft_noboot参数设置为1时表示不重启对应容器,0表示需要重启对应容器;

其中,timeout用于记录每个实例的soft_margin,ns_p->timeout=soft_margin;ns_timer代表每个实例对应的定时器,ppid_ns代表每个实例对应的pid_namespace。

可选地,作为本发明一个实施例,根据第一命名空间,删除第一容器内的全部进程,包括:

当在第一定时器的预设时长内,未接收到第一容器发送的第二操作指令,删除第一容器内的全部进程。

具体地,第一定时器为与第一容器关联的定时器,该定时器有一个预设时长,例如该预设时长可以为60s、75s等,本发明不作限制。

当在该第一定时器的预设时长内,没有接收到第一容器发出的第二操作指令,则删除第一容器内的全部进行,第二操作指令可以指代第一容器内发出的任意操作指令,也就是说,在第一watchdog实例在第一定时器的预设时长内,如果没有收到任何第一容器发出的操作指令,那么将指示处理器删除第一容器内的全部进程。

具体地,需要根据第一容器对应的第一命名空间,删除第一容器中运行的进程。

例如,当需要删除第一容器的进程时,watchdog驱动可以调用如下命令,根据第一容器的第一命名空间,删除进程:force_sig(sigkill,pid_ns->child_reaper),其中,该命令中的pid_ns即表示第一命名空间。

具体地,当删除第一容器的进程之后,watchdog驱动中的第一watchdog实例也将删除,该第一watchdog实例中对应的第一定时器、第一pid、第一命名空间等属性信息都将清理。

应理解,上述根据命名空间删除容器中进程的方法可以调用相应的系统指令实现,本发明不限于上述列举的具体指令代码。

可选地,作为本发明一个实施例,在根据第一命名空间,删除第一容器内的全部进程之前,方法还包括:当在第一定时器的预设时长内,接收到第一容器的第三操作指令时,将第一定时器清零后重新计时。

应理解,第三操作指令为第一容器下发的任意操作指令,也就是说,第一定时器重新计时的触发条件为:第一watchdog实例接收到第一容器的操作指令。

可选地,作为本发明一个实施例,上述方法还包括:在第一定时器超时的情况下,或在接收第一容器发出的退出指令的情况下,删除第一watchdog实例。

也就是说,一种情况下,例如,当第一定时器设置的预设时长为60s,那么在60s时长内,第一容器没有对watchdog驱动进行任何操作,那么第一定时器超时,则判断第一容器内的进程需要删除,并进一步删除第一容器内的全部进程。

另一种情况下,当第一容器主动退出服务,则可以向watchdog驱动发送操作指令,指示watchdog驱动删除第一容器内的全部进程。

可选地,作为本发明一个实施例,在所述删除所述第一容器内的全部进程后,上述方法还包括:通过dev接收第一容器重启后发出的第四操作指令,第四操作指令包括第二进程标识符pid,第二pid表示第四操作指令是第一容器中的第二进程下发的;根据第二pid,确定重启后的第一容器对应的第二namespace;根据第二namespace,创建与重启后的第一容器关联的第二watchdog实例,第二watchdog实例包括第二定时器,第二watchdog实例用于在确定第二定时器超时时,删除重启后的第一容器内的全部进程。

也就是说,第一容器的全部进程已经删除后,该第一容器如果进行重启,即第一容器内有新的进程拉起,那么当watchdog驱动接收到重启后的第一容器发出的第四操作指令后,能够根据第四操作指令获取重启后的第一容器的第二namespace,并根据第二namespace创建第二watchdog实例,该第二watchdog实例包括第二pid和第二定时器。

应理解,第四操作指令为重启后的第一容器发出的任意操作指令。

例如,当第一容器为docker容器时,通过在该docker容器启动参数中输入“restart=always”,那么当docker的deamon后台检测到容器中的进程被删除后,会自动重启该docker容器,通过dev设备向watchdog驱动发送第二操作指令,因此,该watchdog驱动可以获取第一容器中的第二pid,一般而言,该第二pid为第一容器重启后的第一个进程对应的pid。

应理解,根据第二操作指令获取第二pid的过程与上述实施例的过程类似,在此不再赘述,根据第二pid获取第二namespace,并根据第二namespace创建第二watchdog实例的过程业余上述实施例的过程类型,也不再赘述。

还应理解,当重启后第一容器的进程需要删除时,第二watchdog实例向发送相关的删除指令,第一容器中当前运行的进程将全部删除,随后第二watchdog实例也将删除,该过程与上述实施例的描述过程类似,在此不再赘述。

可选地,作为本发明一个实施例,其特征在于,watchdog驱动还包括第三watchdog实例,第三watchdog实例包括第三定时器,第三定时器与多个容器中的第三容器关联,第三watchdog实例用于根据第三容器下发的第三进程标识符pid,确定第三pid对应的第三namespace,并根据第三namespace删除第三容器中的全部进程。

也就是说,系统中至少一个容器中的每个容器对应于一个watchdog实例,该至少一个watchdog实例是由同一个watchdog驱动实现的。

因此,watchdog驱动的watchdog实例通过对相应的容器的处理,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

此外,由于至少一个容器中每个容器都通过同一个dev设备向watchdog驱动发送操作指令,避免需要多个dev设备和多个watchdog驱动实现容器级别的进程处理。

图3是本发明另一个实施例的处理进程的方法的示意性结构框图。如图3所示,该应用空间内存在三个容器分别为容器1、容器2和容器3,该三个容器通过dev,也就是图中所述的/dev/watchdog,对内核中的watchdog驱动进行喂狗,watchdog驱动包括了三个实例ns1、ns2和ns3。其中,ns1实例包括容器1的pid和第一定时器,ns2实例包括容器2的pid和第二定时器,ns3实例包括容器3的pid和第三定时器。

具体地,以容器1为例,当容器1通过dev设备向watchdog驱动进行操作时,例如可以为读、写、打开等操作,watchdog驱动能够根据该容器1的操作获取该容器1的pid,容器1的pid也就是容器1第一个拉起的进程对应的pid。

进一步地,watchdog驱动能够根据容器1的pid,获取容器1的命名空间ns1。

ns1实例中的第一定时器可以进行设置,例如可以设置为60s,也就是当容器1在60s内对watchdog驱动进行喂狗操作时,该第一定时器将清零,容器1将正常的运作;当容器1在60s内对watchdog没有进行喂狗操作时,该第一定时器将超时触发watchdog驱动发送删除指令,也就是将删除容器1内运行的全部进程,随后,该容器1能够在操作系统的相应命令下进行重启。

当容器1内当前运行的进程全部删除后,watchdog驱动中的ns1实例也将会删除。

当容器1重启后,与上述步骤类型,watchdog驱动将会新建一个对容器1重启后的进程相应的实例,对容器1实现监控。

应理解,每个实例对应容器的pid和watchdog属性。不同容器操作就对应不同的watchdog属性,实际就像打开了多个/dev/watchdog了。对于容器的每一项操作,watchdog驱动都会根据容器的pid分类执行,对容器看来就是私有的watchdog。

因此,watchdog驱动的watchdog实例通过对相应的容器的处理,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

此外,由于至少一个容器中每个容器都通过同一个dev设备向watchdog驱动发送操作指令,避免需要多个dev设备和多个watchdog驱动实现容器级别的进程处理。

图4是本发明一个实施例的处理进程的方法的示意性流程图。

如图4所示,该方法包括:

步骤401,容器通过dev设备向watchdog驱动发送操作指令,该操作指令包括读、写、打开、关闭等操作指令,本发明不作限定。

步骤402,watchdog驱动通过容器在步骤401的操作指令,获取容器的pid,将该容器的pid转化为该容器的命名空间,其中,获取容器的pid的过程以及获取命名空间的过程与上述实施例类似,在此不再赘述。

步骤403,watchdog驱动创建watchdog实例,该watchdog实例与容器对应,包括容器的pid以及与操作指令相关的一些属性,还包括定时器,例如,该定时器可以设置为60s。

具体地,容器在60s内向watchdog发送操作指令,那么定时器将会重启,以实现该watchdog驱动对容器的单独监控。

步骤404,判断是否满足下列两种条件中的一种:接收容器主动向watchdog驱动发送的退出命令,以及watchdog实例定时器超时。

步骤405,当满足上述两种条件之一,将会触发watchdog驱动向容器发送删除指令,将删除容器内当前运行的全部进程。

步骤406,watchdog驱动将删除与容器对应的实例,并清除命名空间等。

应理解,上述删除指令、退出指令等为linux系统的相应指令,在此不再枚举。

因此,watchdog驱动的watchdog实例通过对相应的容器的处理,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

此外,由于至少一个容器中每个容器都通过同一个dev设备向watchdog驱动发送操作指令,避免需要多个dev设备和多个watchdog驱动实现容器级别的进程处理。

图5是本发明一个实施例的处理进程的方法的示意性结构图。如图5所示,监控驱动中可以包括多个实例,图中列出了实例1、实例2和实例3,每个实例都有一个单独的定时器,例如,实例1对应定时器1、实例2对应定时器2、实例3对应定时器3等等。

具体地,当容器1向监控驱动进行操作时,监控驱动通过该操作指令获取容器1的pid和命名空间,将创建实例1,该实例1中包括容器1的pid以及定时器1,以及与容器1操作指令相关的其它属性。该实例1用于单独的监控容器1的运行,当容器1发生异常时,将会重启容器1,同时删除实例1。

当容器1重启后,监控驱动将会重建容器1对应的实例,例如实例4,该实例4与容器1重启后的pid相关联,其余过程与上述类似,在此不再赘述。

图6是本发明一个实施例的处理进程的装置的示意性结构框图。如图6所示,该装置600包括:

接收单元610,所述接收单元610用于通过设备文件dev接收第一容器的第一操作指令,所述第一操作指令包括第一进程标识符pid,所述第一pid表示所述第一操作指令是所述第一容器中的第一进程下发的。

处理单元620,所述处理单元620用于根据所述第一pid,确定所述第一容器对应的第一命名空间namespace。

所述处理单元620还用于用于根据所述第一namespace,删除所述第一容器内的全部进程。

可选地,作为本发明一个实施例,处理单元620具体用于:根据所述第一namespace,创建所述第一容器关联的第一看门狗watchdog实例,其中,所述第一watchdog实例用于删除所述第一容器内的全部进程,所述第一watchdog实例包括第一定时器。

可选地,作为本发明一个实施例,所述处理单元620还用于:当在与所述第一容器关联的第一定时器的预设时长内,未接收到所述第一容器发送的第二操作指令,删除所述第一容器内的全部进程。

可选地,作为本发明一个实施例,所述处理单元620还用于:当在与所述第一容器关联的第一定时器的预设时长内,未接收到所述第一容器发送的第二操作指令,删除所述第一容器内的全部进程。

可选地,作为本发明一个实施例,处理单元620还用于:当在所述第一定时器的预设时长内,接收到所述第一容器的第三操作指令时,将所述第一定时器清零后重新计时。

可选地,作为本发明一个实施例,处理单元620还用于:在所述第一定时器超时的情况下,或在接收所述第一容器发出的退出指令的情况下,删除所述第一watchdog实例。

可选地,作为本发明一个实施例,处理单元620还用于:通过所述dev设备接收第一容器重启后发出的第四操作指令,所述第四操作指令包括第二进程标识符pid,所述第二pid表示所述第四操作指令是所述第一容器中的第二进程下发的;

可选地,作为本发明一个实施例,处理单元620还用于:根据所述第二pid,确定所述重启后的第一容器对应的第二namespace;根据所述第二namespace,创建与所述重启后的第一容器关联的第二watchdog实例,所述第二watchdog实例包括第二定时器,所述第二watchdog实例用于在确定所述第二定时器超时时,删除所述重启后的第一容器内的全部进程。

可选地,作为本发明一个实施例,所述装置还包括第三watchdog实例,所述第一watchdog实例与所述第三watchdog实例属于一个watchdog驱动,所述第三watchdog实例包括第三定时器,所述第三定时器与所述多个容器中的第三容器关联,所述第三watchdog实例用于根据所述第三容器下发的第三进程标识符pid,确定所述第三pid对应的第三namespace,并根据所述第三namespace删除所述第三容器中的全部进程。

因此,watchdog驱动的watchdog实例通过对相应的容器的处理,能够对特定容器内的全部进程进行删除处理,而不影响其它容器内的进程,实现了容器粒度的进程处理。

此外,由于至少一个容器中每个容器都通过同一个dev设备向watchdog驱动发送操作指令,避免需要多个dev设备和多个watchdog驱动实现容器级别的进程处理。

图7是本发明另一实施例的装置。如图7所示,该装置700包括处理器701、存储器702、总线系统703。其中,处理器701、存储器702通过总线系统703相连,该存储器702用于存储指令,该处理器701用于执行该存储器702存储的指令,并根据存储器702中指令的实现图6所示实施例中接收单元与处理单元所能够实现相应的功能。

具体地,所述处理器701用于:通过设备文件dev接收第一容器的第一操作指令,所述第一操作指令包括第一进程标识符pid,所述第一pid表示所述第一操作指令是所述第一容器中的第一进程下发的;根据所述第一pid,确定所述第一容器对应的第一命名空间namespace;根据所述第一namespace,删除所述第一容器内的全部进程。

应理解,装置700能够实现前述方法实施例中的相应流程,为避免重复,这里不再赘述。

应理解,在本发明实施例中,该处理器701可以是中央处理单元(centralprocessingunit,简称为“cpu”),该处理器701还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器702可以包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储器702的一部分还可以包括非易失性随机存取存储器。例如,存储器702还可以存储设备类型的信息。

该总线系统703除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统703。

在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

本发明的另一装置实施例中,该装置包括处理器和总线,其中,处理器为数字信号处理器(dsp)、专用集成电路(asic)或者现场可编程门阵列(fpga)等器件,这类处理器中包括存储阵列或者存储电路等具有存储功能的单元,因此可以不需要外加存储器,而将实现上述方法中步骤的指令存储在这些具有存储功能的单元中。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1