发明内容
针对现有技术存在的问题,本发明实施例提供一种基于Linux系统的更新软件信息的方法及装置。
本发明实施例提供一种基于Linux系统的更新软件信息的方法,包括:
启动第一线程监视对软件进行的执行操作,并存储事件PID;
启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;
若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
其中,所述启动第一线程监视对软件进行的执行操作,并存储事件PID,包括:
预先在bprm_check_security中注册感知软件执行操作的逻辑,并采用所述bprm_check_security启动第一线程,以监视对软件进行的执行操作,并存储事件PID。
其中,所述启动第二线程监视对软件进行的执行完成操作,包括:
预先在task_free中注册可通过存储的事件PID感知软件执行完成操作的逻辑,并采用所述task_free启动第二线程,以监视对软件进行的执行完成操作。
其中,所述Linux系统包括debian系统或redhat系统;相应的,所述启动第一线程监视对软件进行的执行操作,并存储事件PID,包括:
在所述debian系统中捕获dpkg操作,并启动第一线程监视所述dpkg操作对应的执行操作,并存储事件PID;
或者,在所述redhat系统中捕获rpm操作,并启动第一线程监视所述rpm操作对应的执行操作,并存储事件PID。
其中,所述Linux系统包括debian系统或redhat系统;相应的,所述启动第二线程监视对软件进行的执行完成操作,包括:
在所述debian系统中捕获dpkg操作,并启动第二线程监视所述dpkg操作对应的执行完成操作;
或者,在所述redhat系统中捕获rpm操作,并启动第二线程监视所述rpm操作对应的执行完成操作。
其中,预先存储的软件信息所述更新所述Linux系统中的预先存储的软件信息,包括:
将所述预先存储的软件信息和当前软件列表进行对比,根据对比结果确定更新的软件信息,并根据所述更新的软件信息更新所述预先存储的软件信息。
其中,更新的软件信息,包括:
软件安装信息、软件卸载信息和软件版本升级信息中的至少一种。
本发明实施例提供一种基于Linux系统的更新软件信息的装置,包括:
第一启动单元,用于启动第一线程监视对软件进行的执行操作,并存储事件PID;
第二启动单元,用于启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;
更新单元,用于若判断存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
其中,所述第一启动单元具体用于:
预先在bprm_check_security中注册感知软件执行操作的逻辑,并采用所述bprm_check_security启动第一线程,以监视对软件进行的执行操作,并存储事件PID。
其中,所述第二启动单元具体用于:
预先在task_free中注册可通过存储的事件PID感知软件执行完成操作的逻辑,并采用所述task_free启动第二线程,以监视对软件进行的执行完成操作。
其中,所述Linux系统包括debian系统或redhat系统;相应的,所述第一启动单元具体用于:
在所述debian系统中捕获dpkg操作,并启动第一线程监视所述dpkg操作对应的执行操作,并存储事件PID;
或者,在所述redhat系统中捕获rpm操作,并启动第一线程监视所述rpm操作对应的执行操作,并存储事件PID。
其中,所述Linux系统包括debian系统或redhat系统;相应的,所述第二启动单元具体用于:
在所述debian系统中捕获dpkg操作,并启动第二线程监视所述dpkg操作对应的执行完成操作;
或者,在所述redhat系统中捕获rpm操作,并启动第二线程监视所述rpm操作对应的执行完成操作。
其中,所述更新单元具体用于:
将所述预先存储的软件信息和当前软件列表进行对比,根据对比结果确定更新的软件信息,并根据所述更新的软件信息更新所述预先存储的软件信息。
其中,更新的软件信息,包括:
软件安装信息、软件卸载信息和软件版本升级信息中的至少一种。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,
所述处理器执行所述程序时实现如下方法步骤:
启动第一线程监视对软件进行的执行操作,并存储事件PID;
启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;
若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
启动第一线程监视对软件进行的执行操作,并存储事件PID;
启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;
若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本发明实施例提供一种计算机程序产品所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时实现如下方法步骤:
启动第一线程监视对软件进行的执行操作,并存储事件PID;
启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;
若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本发明实施例提供的基于Linux系统的更新软件信息的方法及装置,通过第一线程和第二线程分别监视软件的执行操作和执行完成操作,并在存储事件PID中查找是否存在与执行完成操作对应的当前事件PID,进而能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明基于Linux系统的更新软件信息的方法实施例流程图,如图1所示,本发明实施例提供的一种基于Linux系统的更新软件信息的方法,包括以下步骤:
S101:启动第一线程监视对软件进行的执行操作,并存储事件PID。
具体的,启动第一线程监视对软件进行的执行操作,并存储事件PID。执行该方法步骤的可以是计算机设备,具体可以是终端。图2为本发明实施例内核态逻辑流程图,如图2所示,第一线程对应图2中的“bprm执行事件”对应的线程,其中,bprm是指内核中进程的执行流程。参照图2,可以预先通过在LSM的hook(钩子)点bprm_check_security注册可感知软件执行操作的逻辑,其中,LSM是Linux Security Module的简写,是一种安全框架,它定义了很多钩子函数,安插在内核的关键路径上,当执行到这些关键路径时,调用安插的钩子进行安全检查。每个钩子上安装一个函数指针链,当调用钩子时,依次执行挂载在钩子上的函数,为Linux实现的不同安全模块实际上就是在这些钩子上安装函数。然后采用所述bprm_check_security启动第一线程,以监视对软件进行的执行操作,并存储事件进程标识符(Process Identification,简称“PID”),进一步可以存储事件PID至软件变更PID链表中,再存储该链表至终端的缓存中。
bprm_check_security作用是在用户运行可执行程序前,对用户和可执行程序的安全标签进行比对,并在访问控制链表进行搜索,判断用户是否有权运行该可执行程序。
如图2所示,执行操作可以包括软件安装过程或软件卸载过程,相应的,事件PID即是在软件安装过程或软件卸载过程中的事件PID。
所述Linux系统可以包括debian系统;相应的,如图2所示,所述启动第一线程监视对软件进行的执行操作,并存储事件PID,可以包括:
在所述debian系统中捕获dpkg操作,并启动第一线程监视所述dpkg操作对应的执行操作,并存储事件PID。debian计划是一个致力于创建一个自由操作系统的合作组织,所创建的这个操作系统名为debian。该操作系统是使计算机运行的基本程序和工具的集合,其中最主要的部分称为内核(kernel)。内核是计算机中最重要的程序,负责一切基本的调度工作,运行其他程序。
dpkg是debian package的简写,为debian操作系统专门开发的套件管理系统,用于软件的安装、更新和卸载。所有源自debian的Linux的发行版都使用dpkg。
S102:启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID。
具体的,启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID。如图2所示,第二线程对应图2中的“进程结束事件”对应的线程。参照图2,可以预先通过在task_free中注册可通过存储的事件PID感知软件执行完成操作的逻辑,并采用所述task_free启动第二线程,以监视对软件进行的执行完成操作。其中,task_free是LSM的另一hook点。参照图2,执行完成操作可以具体包括软件安装完成或软件卸载完成;相应的,当前事件PID即是在软件安装完成时刻或软件卸载完成时刻的事件PID。可以理解的是,本发明实施例中的第一线程和第二线程是并行异步执行的,通过在第二线程中遍历在第一线程中已存储的事件PID,查找是否存在当前事件PID,可以准确确定是否软件安装完成或软件卸载完成,即如果在已存储的事件PID中存在当前事件PID,则确定当前事件PID对应的执行完成操作属实;如果在已存储的事件PID中不存在当前事件PID,则确定当前事件PID对应的执行完成操作不属实。
如图2所示,所述启动第二线程监视对软件进行的执行完成操作,可以包括:
在所述redhat系统中捕获rpm操作,并启动第二线程监视所述rpm操作对应的执行完成操作。所述Linux系统还可以包括redhat系统,Linux系统的发行版本可以大体分为两类:一类是商业公司维护的发行版本;另一类是社区组织维护的发行版本,前者以红帽(redhat)为代表,后者以debian为代表。rpm全名是Red Hat Package Manager,本意是RedHat软件包管理,顾名思义是Red Hat贡献出来的软件包管理;在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上进行二次开发出来的发行版。
S103:若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
具体的,若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。从已存储的事件PID中删除当前事件PID,可以保证实时更新已存储的事件PID,进而准确确定执行完成操作是否属实。图3为本发明实施例业务层逻辑流程图,如图3和图2所示,在更新Linux系统中预先存储的软件信息的步骤之前的步骤在内核中实现;在更新Linux系统中的预先存储的软件信息的步骤之后的步骤在业务层中实现,如图2所示,在从已存储的事件PID中删除所述当前事件PID的步骤之后,内核层可以向业务层发送通知消息,然后在业务层中执行更新Linux系统中的预先存储的软件信息预先存储的软件信息的步骤,预先存储的软件信息预先存储的软件信息可以理解为预先存储在业务层中的、记录已安装软件的软件信息,该软件信息在时间上滞后于当前软件列表,该当前软件列表可以表示在业务层中真实安装的软件信息。
更新Linux系统中的预先存储的软件信息预先存储的软件信息,可以包括:
将所述预先存储的软件信息和当前软件列表进行对比,根据对比结果确定更新的软件信息,并根据所述更新的软件信息更新所述预先存储的软件信息。进一步可以包括:如果在预先存储的软件信息中找不到当前软件列表中的软件,则说明这个软件是新安装的软件,记录软件安装信息,然后根据该软件安装信息更新预先存储的软件信息。
如果当前软件列表中的软件版本升级信息(即版本号)与预先存储的软件信息中的版本号不一致,则说明这个软件做了更新操作,记录软件版本升级信息,然后根据该软件版本升级信息更新预先存储的软件信息。
如果在当前软件列表中查找不到预先存储的软件信息中的软件,则说明这个软件已经卸载,记录软件卸载信息,然后根据该软件卸载信息更新预先存储的软件信息,可以进一步将预先存储的软件信息存储在缓存中,从而提高数据读写速度。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过第一线程和第二线程分别监视软件的执行操作和执行完成操作,并在存储事件PID中查找是否存在与执行完成操作对应的当前事件PID,进而能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述启动第一线程监视对软件进行的执行操作,并存储事件PID,包括:
具体的,预先在bprm_check_security中注册感知软件执行操作的逻辑,并采用所述bprm_check_security启动第一线程,以监视对软件进行的执行操作,并存储事件PID。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过采用bprm_check_security启动第一线程,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述启动第二线程监视对软件进行的执行完成操作,包括:
具体的,预先在task_free中注册可通过存储的事件PID感知软件执行完成操作的逻辑,并采用所述task_free启动第二线程,以监视对软件进行的执行完成操作。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过采用task_free启动第二线程,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述Linux系统包括debian系统或redhat系统;相应的,所述启动第一线程监视对软件进行的执行操作,并存储事件PID,包括:
具体的,在所述debian系统中捕获dpkg操作,并启动第一线程监视所述dpkg操作对应的执行操作,并存储事件PID;或者,在所述redhat系统中捕获rpm操作,并启动第一线程监视所述rpm操作对应的执行操作,并存储事件PID。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过启动第一线程监视dpkg操作或rpm操作对应的执行操作,能够使得该技术方案适用多种具体类型的Linux系统,还提高了该技术方案的通用性。
在上述实施例的基础上,所述Linux系统包括debian系统或redhat系统;相应的,所述启动第二线程监视对软件进行的执行完成操作,包括:
具体的,在所述debian系统中捕获dpkg操作,并启动第二线程监视所述dpkg操作对应的执行完成操作;或者,在所述redhat系统中捕获rpm操作,并启动第二线程监视所述rpm操作对应的执行完成操作。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过启动第二线程监视dpkg操作或rpm操作对应的执行完成操作,能够使得该技术方案适用多种具体类型的Linux系统,还提高了该技术方案的通用性。
在上述实施例的基础上,预先存储的软件信息所述更新所述Linux系统中的预先存储的软件信息,包括:
具体的,将所述预先存储的软件信息和当前软件列表进行对比,根据对比结果确定更新的软件信息,并根据所述更新的软件信息更新所述预先存储的软件信息。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,通过将预先存储的软件信息和当前软件列表进行对比的方式,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,具体的,更新的软件信息,包括:
软件安装信息、软件卸载信息和软件版本升级信息中的至少一种。可参照上述说明,不再赘述。
本发明实施例提供的基于Linux系统的更新软件信息的方法,能够实现多种类型软件信息的实时更新。
图4为本发明基于Linux系统的更新软件信息的装置实施例结构示意图,如图4所示,本发明实施例提供了一种基于Linux系统的更新软件信息的装置,包括第一启动单元401、第二启动单元402和更新单元403,其中:
第一启动单元401用于启动第一线程监视对软件进行的执行操作,并存储事件PID;第二启动单元402用于启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;更新单元403用于若判断存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
具体的,第一启动单元401用于启动第一线程监视对软件进行的执行操作,并存储事件PID;第二启动单元402用于启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;更新单元403用于若判断存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过第一线程和第二线程分别监视软件的执行操作和执行完成操作,并在存储事件PID中查找是否存在与执行完成操作对应的当前事件PID,进而能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述第一启动单元401具体用于:预先在bprm_check_security中注册感知软件执行操作的逻辑,并采用所述bprm_check_security启动第一线程,以监视对软件进行的执行操作,并存储事件PID。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过采用bprm_check_security启动第一线程,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述第二启动单元402具体用于:预先在task_free中注册可通过存储的事件PID感知软件执行完成操作的逻辑,并采用所述task_free启动第二线程,以监视对软件进行的执行完成操作。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过采用task_free启动第二线程,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,所述Linux系统包括debian系统或redhat系统;相应的,所述第一启动单元401具体用于:在所述debian系统中捕获dpkg操作,并启动第一线程监视所述dpkg操作对应的执行操作,并存储事件PID;或者,在所述redhat系统中捕获rpm操作,并启动第一线程监视所述rpm操作对应的执行操作,并存储事件PID。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过启动第一线程监视dpkg操作或rpm操作对应的执行操作,能够使得该技术方案适用多种具体类型的Linux系统,还提高了该技术方案的通用性。
在上述实施例的基础上,所述Linux系统包括debian系统或redhat系统;相应的,所述第二启动单元402具体用于:在所述debian系统中捕获dpkg操作,并启动第二线程监视所述dpkg操作对应的执行完成操作;或者,在所述redhat系统中捕获rpm操作,并启动第二线程监视所述rpm操作对应的执行完成操作。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过启动第二线程监视dpkg操作或rpm操作对应的执行完成操作,能够使得该技术方案适用多种具体类型的Linux系统,还提高了该技术方案的通用性。
在上述实施例的基础上,所述更新单元403具体用于:将所述预先存储的软件信息和当前软件列表进行对比,根据对比结果确定更新的软件信息,并根据所述更新的软件信息更新所述预先存储的软件信息。
本发明实施例提供的基于Linux系统的更新软件信息的装置,通过将预先存储的软件信息和当前软件列表进行对比的方式,进一步能够及时更新国产操作系统中的预先存储的软件信息,实现追溯软件操作行为的目的。
在上述实施例的基础上,更新的软件信息,包括:软件安装信息、软件卸载信息和软件版本升级信息中的至少一种。
本发明实施例提供的基于Linux系统的更新软件信息的装置,能够实现多种类型软件信息的实时更新。
本发明实施例提供的基于Linux系统的更新软件信息的装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的电子设备实体结构示意图,如图5所示,所述电子设备包括:处理器(processor)501、存储器(memory)502和总线503;
其中,所述处理器501、存储器502通过总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:启动第一线程监视对软件进行的执行操作,并存储事件PID;启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:启动第一线程监视对软件进行的执行操作,并存储事件PID;启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:启动第一线程监视对软件进行的执行操作,并存储事件PID;启动第二线程监视对软件进行的执行完成操作,若监视到执行已完成,则获取当前事件PID,并遍历已存储的事件PID,以查找是否存在所述当前事件PID;若存在,则从已存储的事件PID中删除所述当前事件PID,并更新所述Linux系统中的预先存储的软件信息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。