CN115480744A - 命令执行日志的输出方法及装置、电子设备和存储介质 - Google Patents

命令执行日志的输出方法及装置、电子设备和存储介质 Download PDF

Info

Publication number
CN115480744A
CN115480744A CN202210977032.1A CN202210977032A CN115480744A CN 115480744 A CN115480744 A CN 115480744A CN 202210977032 A CN202210977032 A CN 202210977032A CN 115480744 A CN115480744 A CN 115480744A
Authority
CN
China
Prior art keywords
command
target
log
calling
program
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
CN202210977032.1A
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.)
Beijing Rockwell Technology Co Ltd
Original Assignee
Beijing Rockwell 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 Beijing Rockwell Technology Co Ltd filed Critical Beijing Rockwell Technology Co Ltd
Priority to CN202210977032.1A priority Critical patent/CN115480744A/zh
Publication of CN115480744A publication Critical patent/CN115480744A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开公开了命令执行日志的输出方法及装置、电子设备和存储介质,主要技术方案包括:第三方软件开发系统获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。与相关技术相比,在第三方软件开发系统执行目标命令时,使用执行日志记录命令执行过程,并将生成的执行日志输出至预配置的目标存储路径下,当命令运行出错时,通过执行日志查找出错源。

Description

命令执行日志的输出方法及装置、电子设备和存储介质
技术领域
本公开涉及软件编程技术领域,尤其涉及一种命令执行日志的输出方法及装置、电子设备和存储介质。
背景技术
目前,许多Linux命令以及Android自带的命令并不是都有自身的二进制文件存在/system/bin/目录下,而是集成在第三方软件开发系统toybox,通过toybox来执行对应的命令。
在Android系统下执行的大部分命令都是通过toybox执行,toybox根据接收到的命令参数选择对应的命令,并基于toybox执行命令,在命令执行过程中可能会出现运行错误;由于toybox不提供命令执行日志的功能,因此当命令运行错误时,无法对toybox执行的出错源进行查找。
发明内容
本公开提供了一种命令执行日志的输出方法、装置、电子设备和存储介质。其主要目的在于解决toybox在执行命令时,无法输出日志信息的问题。
根据本公开的第一方面,提供了一种命令执行日志的输出方法,其中,所述方法应用于第三方软件开发系统,所述第三方软件开发系统集成开发目标系统使用的命令,包括:
获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;
在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;
调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
可选的,所述配置所述目标命令程序的执行日志的目标存储路径包括:
调用第一预设宏打开所述目标存储路径对应的日志存储文件;
调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
可选的,所述日志输出函数包括:第一输出函数及第二输出函数,其中,所述第一输出函数为当前命令进程的进程标识符及进程名称的输出函数、所述第二输出函数为当前命令进程的父进程的进程标识符及进程名称的输出函数;
所述调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下包括:
调用所述第一输出函数,输出所述执行当前命令进程的进程标识符及进程名称;
调用所述第二输出函数,输出所述执行当前命令进程的父进程的进程标识符及进程名称;
将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名称编译为日志字符串,生成所述执行日志;
将生成的所述执行日志写入目标存储路径下的日志存储文件。
可选的,所述根据预设映射关系查找所述命令参数对应的目标命令程序包括:
将所述命令参数存入所述第三方软件开发系统的预置结构体;
调用预设查找函数,在所述预置结构体内基于预设映射关系,查找与所述命令参数相同的命令表结构;
将所述命令表结构确定为所述目标命令程序。
可选的,所述方法还包括:
调用预设搜索函数查找所述命令表结构,并判断查找结果是否为空;
若不为空,则调用预设鉴权函数对所述命令表结构的使用权限进行鉴权,并检测当前运行环境是否能够运行所述命令表结构;
若对所述命令表结构拥有使用权限,且确定所述当前运行环境能够运行所述命令表结构,则调用所述命令表结构的执行入口函数,执行所述目标命令程序。
根据本公开的第二方面,提供了一种命令执行日志的输出装置,所述装置被设置于第三方软件开发系统,所述第三方软件开发系统集成开发目标系统使用的命令,包括:
获取单元,用于获取调用目标命令的命令参数;
查找单元,用于根据预设映射关系查找所述命令参数对应的目标命令程序;
配置单元,用于在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;
输出单元,用于调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
可选的,所述配置单元包括:
调用模块,用于调用第一预设宏打开所述目标存储路径对应的日志存储文件;
配置模块,用于调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
可选的,所述输出单元包括:
第一输出模块,用于调用所述第一输出函数,输出所述执行当前命令进程的进程标识符及进程名称;
第二输出模块,用于调用所述第二输出函数,输出所述执行当前命令进程的父进程的进程标识符及进程名称;
生成模块,用于将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名称编译为日志字符串,生成所述执行日志;
写入模块,用于将生成的所述执行日志写入目标存储路径下的日志存储文件。
可选的,所述获取单元包括:
存储模块,用于将所述命令参数存入所述第三方软件开发系统的预置结构体;
查找模块,用于调用预设查找函数,在所述预置结构体内基于预设映射关系,查找与所述命令参数相同的命令表结构;
确定模块,用于将所述命令表结构确定为所述目标命令程序。
可选的,所述装置还包括:
判断单元,用于调用预设搜索函数查找所述命令表结构,并判断查找结果是否为空;
鉴权单元,用于当所述查找结果不为空时,调用预设鉴权函数对所述命令表结构的使用权限进行鉴权,并检测当前运行环境是否能够运行所述命令表结构;
执行单元,用于当对所述命令表结构拥有使用权限,且确定所述当前运行环境能够运行所述命令表结构时,调用所述命令表结构的执行入口函数,执行所述目标命令程序。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如前述第一方面所述的方法。
本公开提供的命令执行日志的输出方法、装置、电子设备和存储介质,第三方软件开发系统获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。与相关技术相比,在第三方软件开发系统执行目标命令时,使用执行日志记录命令执行过程,并将生成的执行日志输出至预配置的目标存储路径下,当命令运行出错时,通过执行日志查找出错源。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例所提供的一种命令执行日志的输出方法的流程示意图;
图2为本公开实施例所提供的一种输出日志格式的示意图;
图3为本公开实施例所提供的一种toybox程序执行的流程示意图;
图4为本公开实施例提供的一种命令执行日志的输出装置的结构示意图;
图5为本公开实施例提供的另一种命令执行日志的输出装置的结构示意图;
图6为本公开实施例提供的示例电子设备300的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本公开实施例的命令执行日志的输出方法、装置、电子设备和存储介质。
图1为本公开实施例所提供的一种命令执行日志的输出方法的流程示意图。
如图1所示,该方法包含以下步骤:
步骤101,获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序。
所述目标命令为用户想要执行的命令,所述目标命令程序为命令行实用程序,为了便于理解,举例而言Linux的ls命令为打印出当前目录的列表,该ls命令就对应一个执行程序。
为了确定输入命令参数所要执行的目标命令程序,当目标命令的命令参数输入第三方软件开发系统后,根据第三方软件开发系统中命令参数与目标命令程序之间的预设映射关系,查找并确定该命令参数对应的目标命令程序。
实际应用中,第三方软件开发系统集成了最常用Linux命令行实用程序的组合,本申请实施例所述的第三方软件开发系统包括但不局限于toybox、BusyBox,后续实施例以第三方软件开发系统以toybox为例进行说明,但是应当明确的是,该种说明方式并非意在限定第三方软件开发系统仅能为toybox。
为了说明所述第三方软件开发系统在获得目标命令的命令参数后的执行过程,以及其发挥的功能,第三方软件开发系统主要为路由功能,当其接收到目标命令的命令参数后,基于查找函数在命令表结构数组中查询与输入命令参数名称相同的命令表结构,将所述命令表结构对应的目标命令确定为需要执行的目标命令程序。
步骤102,在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径。
为了便于目标命令程序在执行过程中生成的执行日志有对应的目标存储路径,预先在目标存储路径下构建存储执行日志的日志存储文件。
需要说明的是,配置目标存储路径为在第三方软件开发系统基于映射关系查询到与所述命令参数相对应的目标命令程序之后,在基于执行入口函数执行目标命令程序之前,完成目标存储路径的配置,其目的在于记录执行目标命令程序过程中的所有执行过程,以实现后续日志输出函数输出的日志信息的存储。
步骤103,调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
通过上面的分析可知,只需要在目标命令执行之前输出执行日志log信息即可,实际应用过程中,调用的日志输出函数包含但不限于prdebug函数即可输出log信息。
为了提高查找目标命令程序中每个进程的执行信息,在调用日志输出函数时,可通过日志输出函数获取执行当前命令进程的进程标识符及进程名称,以及执行当前命令进程的父进程的进程标识符及进程名称,该种输出方式能够在目标命令程序运行出错时,更直观的查看出错源。
示例性的,图2为本公开实施例所提供的一种输出日志格式的示意图,如图2所示,excute parent pid代表当前命令进程父进程的进程标识符(Process Identifier,pid),excute parent name代表父进程名,excute pid代表当前进程pid,process name代表当前进程名,command options代表执行命令参数。与图2所示输出日志相对应的shell脚本内容,即输入该shell脚本输出如图2所示的输出日志,代码内容如下所示:
#!/system/bin/sh
toybox ls
log-p i this is a test
sleep 60
本公开提供的命令执行日志的输出方法,第三方软件开发系统获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。与相关技术相比,在第三方软件开发系统执行目标命令时,使用执行日志记录命令执行过程,并将生成的执行日志输出至预配置的目标存储路径下,当命令运行出错时,通过执行日志查找出错源。
执行日志作为记录目标命令程序执行的载体,实现执行日志的输出,在步骤102执行配置所述目标命令程序的执行日志的目标存储路径时,调用第一预设宏打开所述目标存储路径对应的日志存储文件,调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
其中,基于第二预设宏配置所述目标命令程序的执行日志的日志等级,在基于日志输出函数向日志存储文件输出执行日志的信息之前,需要基于第一预设宏打开目标存储路径对应的日志存储文件,并基于第二预设宏输出执行日志的日志等级。
示例性的,第一预设宏为#define KMSG_PRIORITY(PRI),在第一预设宏打开所述目标存储路径对应的日志存储文件,如设置static const char dev_kmsg[]="日志存储文件",fdDmesg=TEMP_FAILURE_RETRY2(open(日志存储文件));在第一预设宏设置循环函数,以实现当日志存储文件打开中止时,也继续打开文件。
在第二预设宏#define TEMP_FAILURE_RETRY2(exp)中通过KMSG_PRIORITY(LOG_INFO)输出执行日志的日志等级,举例而言,A执行日志等级为紧急,B执行日志等级为重要,C执行日志等级为次要,D日志等级为提示,可根据配置的日志等级触发不同的存储优先级策略,上述仅为示范性的说明,对日志等级具体的划分方式及实现不进行限定。
在本实施例一种可能的实现方式中,日志输出函数包括:第一输出函数及第二输出函数,其中,所述第一输出函数为当前命令进程的进程标识符及进程名称的输出函数、所述第二输出函数为当前命令进程的父进程的进程标识符及进程名称的输出函数,基于上述输出函数分别输出当前命令进程的进程标识符及进程名称以及当前命令进程的父进程的进程标识符及进程名称。在调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下可以采用但不局限于以下方式:
调用所述第一输出函数,输出所述执行当前命令进程的进程标识符及进程名称,调用所述第二输出函数,输出所述执行当前命令进程的父进程的进程标识符及进程名称,将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名称编译为日志字符串,生成所述执行日志,将生成的所述执行日志写入目标存储路径下的日志存储文件。
为了便于理解,以下结合部分代码进行说明,如下:
int execute_pid=getpid();
int parent_pid=getppid();
getNameByPid(parent_pid,parent_name);
prdebug("excute parent pid%d,excute parent name%s,excute pid%d,process na me%s,command options%s,execution complete!",parent_pid,parent_name,execute_pid,ar gv[0],options);
上述代码中getpid()为第一输出函数,getppid()为第二输出函数,getNameByPid(parent_pid,parent_name)用于通过传递的parent_pid参数,即parent_pid代表进程pid参数,基于pid参数查找到对应的进程名。
prdebug("excute parent pid%d,excute parent name%s,excute pid%d,process name%s,command options%s,execution complete!",parent_pid,parent_name,execute_pid,argv[0],options)为图2在输出执行日志的代码实现,即调用函数输出prdebug执行命令进程和其父进程pid和进程名。将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名以字符串形式写入日志存储文件的过程,通过write(fdDmesg,buffer,strlen(buffer))实现,即write函数,其中buffer用于存储将要输出的日志信息,fdDmesg是日志存储文件,strlen(buffer)表示buffer中日志信息的长度,write函数的作用是将buffer中全部内容都写入fdDmesg标识的文件中,所述fdDmesg标识的文件是基于第二预设宏打开的日志存储文件。
作为上述实施例的细化,在步骤101执行根据预设映射关系查找所述命令参数对应的目标命令程序时,所述方法还包括但不局限于以下实现方式,例如:将所述命令参数存入所述第三方软件开发系统的预置结构体;调用预设查找函数,在所述预置结构体内基于预设映射关系,查找与所述命令参数相同的命令表结构;将所述命令表结构确定为所述目标命令程序。
作为上述实施例的细化,所述方法还包括但不局限于以下实现方式,例如:调用预设搜索函数查找所述命令表结构,并判断查找结果是否为空;若不为空,则调用预设鉴权函数对所述命令表结构的使用权限进行鉴权,并检测当前运行环境是否能够运行所述命令表结构;若对所述命令表结构拥有使用权限,且确定所述当前运行环境能够运行所述命令表结构,则调用所述命令表结构的执行入口函数,执行所述目标命令程序。
上述实施例主要内容为在目标命令程序在执行前的一些判断过程,首先对命令表结构内的内容进行一个判断,判断命令表结构是否为空,即无效,若不为空,则判断输入该条命令的系统用户是否有执行该条命令的权限,例如:计算机中存在超级用户和普通用户,在执行对计算机的操作时,超级用户的权限更高,可以执行的命令也相应的更多。之后判断命令是否具备执行的环境条件,例如:修改文件名,若文件被打开则导致文件名不可以被修改,即文件名修改命令不具备执行条件,给用户返回提示。若权限具备,环境条件具备,则基于执行入口函数,执行命令表结构对应的目标命令程序即可。
在上述判断过程之后,目标命令程序执行之前,还对命令表结构的参数进行了存储,即基于预设函数将参数存放至预置结构体,在预置结构体中基于which函数搜索到命令表结构,再将命令表结构的不同部分分别存入不同名的变量中。
图3为本公开实施例所提供的一种toybox程序执行的流程示意图。如图3所示,
当调用toybox程序的时候,主程序首先对输入的参数进行判断,然后将参数argv放入toys结构体中,之后调用toybox_main函数对命令进行总处理。在toybox_main函数中调用toy_exec函数执行命令,其中调用toy_exec函数传入参数是argv+1。在toy_exec函数中调用toy_find函数,在toy_find函数中通过二分在toy_list数组中查找和输入参数同名的命令,toy_list的结构中toy_main属性就是命令执行入口,结构中name属性存放命令名。
为了直观的展示toy_list的结构,本公开实施例提供了一段代码,如下所示:
extern structtoy_list{
char*name;
void(*toy_main)(void);
char*options;
unsigned flags;
}toy_list[];
toy_find函数执行后会把找到的命令toy_list结构传给toy_exec_which函数作为参数,在toy_exec_which函数里面首先判断toy_list是否为空,不会空就会调用toy_init函数进行权限检查和命令初始化,然后再调用toy_singleinit函数将命令和参数放入toys结构中,toys结构中which存放找到的命令toy_list结构,argv存放输入的命令行参数,optargs存放命令的参数。都执行之后就返回到了toy_exec_which函数,判断toys中的which属性不为空就调用它的命令执行入口函数toy_main()。日志输出函数的调用位置已在流程图中展示,请参阅图3。
综上所述,本申请实施例能够达到以下效果:
1.基于日志输出函数将目标命令程序的执行日志输出至目标存储路径下,实现了执行日志的输出,从而使专业人员可以清晰的查看系统的行为,便于出现问题之后的差错纠正。
2.基于映射关系,实现输入命令参数对应目标命令程序的确定。
3.基于预先构建的日志存储文件实现执行日志的存储。
与上述的命令执行日志的输出方法相对应,本发明还提出一种命令执行日志的输出装置。由于本发明的装置实施例与上述的方法实施例相对应,对于装置实施例中未披露的细节可参照上述的方法实施例,本发明中不再进行赘述。
图4为本公开实施例提供的一种命令执行日志的输出装置的结构示意图,如图4所示,包括:
获取单元21,用于获取调用目标命令的命令参数;
查找单元22,用于根据预设映射关系查找所述所述获取单元获取的所述命令参数对应的目标命令程序;
配置单元23,用于在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;
输出单元24,用于调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
本公开提供的命令执行日志的输出装置,第三方软件开发系统获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。与相关技术相比,在第三方软件开发系统执行目标命令时,使用执行日志记录命令执行过程,并将生成的执行日志输出至预配置的目标存储路径下,当命令运行出错时,通过执行日志查找出错源。
图5为本公开实施例提供的另一种命令执行日志的输出装置的结构示意图。
进一步地,在本实施例一种可能的实现方式中,如图5所示,所述配置单元23包括:
调用模块231,用于调用第一预设宏打开所述目标存储路径对应的日志存储文件;
配置模块232,用于调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
进一步地,在本实施例一种可能的实现方式中,如图5所示,所述输出单元24包括:
第一输出模块241,用于调用所述第一输出函数,输出所述执行当前命令进程的进程标识符及进程名称;
第二输出模块242,用于调用所述第二输出函数,输出所述执行当前命令进程的父进程的进程标识符及进程名称;
生成模块243,用于将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名称编译为日志字符串,生成所述执行日志;
写入模块244,用于将生成的所述执行日志写入目标存储路径下的日志存储文件。
进一步地,在本实施例一种可能的实现方式中,如图5所示,所述获取单元21包括:
存储模块211,用于将所述命令参数存入所述第三方软件开发系统的预置结构体;
查找模块212,用于调用预设查找函数,在所述预置结构体内基于预设映射关系,查找与所述命令参数相同的命令表结构;
确定模块213,用于将所述命令表结构确定为所述目标命令程序。
进一步地,在本实施例一种可能的实现方式中,如图5所示,所述装置还包括:
判断单元25,用于调用预设搜索函数查找所述命令表结构,并判断查找结果是否为空;
鉴权单元26,用于当所述查找结果不为空时,调用预设鉴权函数对所述命令表结构的使用权限进行鉴权,并检测当前运行环境是否能够运行所述命令表结构;
执行单元27,用于当对所述命令表结构拥有使用权限,且确定所述当前运行环境能够运行所述命令表结构时,调用所述命令表结构的执行入口函数,执行所述目标命令程序。
需要说明的是,前述对方法实施例的解释说明,也适用于本实施例的装置,原理相同,本实施例中不再限定。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开的实施例的示例电子设备300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备300包括计算单元301,其可以根据存储在ROM(Read-OnlyMemory,只读存储器)302中的计算机程序或者从存储单元308加载到RAM(Random AccessMemory,随机访问/存取存储器)303中的计算机程序,来执行各种适当的动作和处理。在RAM303中,还可存储设备300操作所需的各种程序和数据。计算单元301、ROM 302以及RAM 303通过总线304彼此相连。I/O(Input/Output,输入/输出)接口305也连接至总线304。
设备300中的多个部件连接至I/O接口305,包括:输入单元303,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元301的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元)、各种专用的AI(Artificial Intelligence,人工智能)计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital SignalProcessor,数字信号处理器)、以及任何适当的处理器、控制器、微控制器等。计算单元301执行上文所描述的各个方法和处理,例如命令执行日志的输出方法。例如,在一些实施例中,命令执行日志的输出方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到RAM 303并由计算单元301执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,计算单元301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行前述命令执行日志的输出方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific StandardProduct,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑设备)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory,可擦除可编程只读存储器)或快闪存储器、光纤、CD-ROM(Compact Disc Read-Only Memory,便捷式紧凑盘只读存储器)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode-Ray Tube,阴极射线管)或者LCD(LiquidCrystal Display,液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(LocalArea Network,局域网)、WAN(Wide Area Network,广域网)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
其中,需要说明的是,人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (10)

1.一种命令执行日志的输出方法,其特征在于,所述方法应用于第三方软件开发系统,所述第三方软件开发系统集成开发目标系统使用的命令;包括:
获取调用目标命令的命令参数,并根据预设映射关系查找所述命令参数对应的目标命令程序;
在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;
调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
2.根据权利要求1所述的方法,其特征在于,所述配置所述目标命令程序的执行日志的目标存储路径包括:
调用第一预设宏打开所述目标存储路径对应的日志存储文件;
调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
3.根据权利要求2所述的方法,其特征在于,所述日志输出函数包括:第一输出函数及第二输出函数,其中,所述第一输出函数为当前命令进程的进程标识符及进程名称的输出函数、所述第二输出函数为当前命令进程的父进程的进程标识符及进程名称的输出函数;
所述调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下包括:
调用所述第一输出函数,输出所述执行当前命令进程的进程标识符及进程名称;
调用所述第二输出函数,输出所述执行当前命令进程的父进程的进程标识符及进程名称;
将所述当前命令进程的进程标识符及进程名称、父进程的进程标识符以及进程名称编译为日志字符串,生成所述执行日志;
将生成的所述执行日志写入目标存储路径下的日志存储文件。
4.根据权利要求1所述的方法,其特征在于,所述根据预设映射关系查找所述命令参数对应的目标命令程序包括:
将所述命令参数存入所述第三方软件开发系统的预置结构体;
调用预设查找函数,在所述预置结构体内基于预设映射关系,查找与所述命令参数相同的命令表结构;
将所述命令表结构确定为所述目标命令程序。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
调用预设搜索函数查找所述命令表结构,并判断查找结果是否为空;
若不为空,则调用预设鉴权函数对所述命令表结构的使用权限进行鉴权,并检测当前运行环境是否能够运行所述命令表结构;
若对所述命令表结构拥有使用权限,且确定所述当前运行环境能够运行所述命令表结构,则调用所述命令表结构的执行入口函数,执行所述目标命令程序。
6.一种命令执行日志的输出装置,其特征在于,所述装置被设置于第三方软件开发系统,所述第三方软件开发系统集成开发目标系统使用的命令;包括:
获取单元,用于获取调用目标命令的命令参数;
查找单元,用于根据预设映射关系查找所述获取单元获取的所述命令参数对应的目标命令程序;
配置单元,用于在所述目标命令程序执行前,配置所述目标命令程序的执行日志的目标存储路径;
输出单元,用于调用日志输出函数,将执行所述目标命令程序过程中产生的执行日志输出至所述目标存储路径下。
7.根据权利要求6所述的装置,其特征在于,所述配置单元包括:
调用模块,用于调用第一预设宏打开所述目标存储路径对应的日志存储文件;
配置模块,用于调用第二预设宏配置所述目标命令程序的执行日志的日志等级。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
9.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-5中任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-5中任一项所述的方法。
CN202210977032.1A 2022-08-15 2022-08-15 命令执行日志的输出方法及装置、电子设备和存储介质 Pending CN115480744A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210977032.1A CN115480744A (zh) 2022-08-15 2022-08-15 命令执行日志的输出方法及装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210977032.1A CN115480744A (zh) 2022-08-15 2022-08-15 命令执行日志的输出方法及装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115480744A true CN115480744A (zh) 2022-12-16

Family

ID=84422672

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210977032.1A Pending CN115480744A (zh) 2022-08-15 2022-08-15 命令执行日志的输出方法及装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115480744A (zh)

Similar Documents

Publication Publication Date Title
CN113010181B (zh) 一种深度学习框架之中算子的部署方法、装置及电子设备
US10776082B2 (en) Programming environment augment with automated dialog system assistance
CN113342345A (zh) 深度学习框架的算子融合方法、装置
CN111625224A (zh) 代码生成方法、装置、设备及存储介质
JP2022177793A (ja) ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体
CN112527281A (zh) 基于人工智能的算子升级方法、装置、电子设备及介质
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
US20240053991A1 (en) Method and Apparatus for Generating Dependence Graph, Device, Storage Medium and Program Product
CN114372256A (zh) 应用程序运行方法、装置、设备和存储介质
WO2022271345A1 (en) Triggering dynamic robotic process automation
US20140250251A1 (en) Automatically and transparently preserving testing state across sessions
CN110471662A (zh) 程序转换方法、装置及设备
CN115480744A (zh) 命令执行日志的输出方法及装置、电子设备和存储介质
CN113590217B (zh) 基于引擎的函数管理方法、装置、电子设备及存储介质
CN114741294A (zh) 一种页面的调试方法、装置、设备及存储介质
CN114579095A (zh) 一种基于AspectJ实现AOP的开发方法、装置、设备及介质
CN112306493A (zh) 热修复补丁生成方法、装置、存储介质及计算机设备
US20210365277A1 (en) Static reconcilliation of application view hierarchies
US20230012881A1 (en) Method and apparatus for reading data, electronic device and storage medium
CN113741887B (zh) 模型生产方法、系统、装置及电子设备
CN114398653B (zh) 数据处理方法、装置、电子设备及介质
CN115080008A (zh) 应用运行方法、装置、电子设备和存储介质
CN117668824A (zh) 代码数据处理方法及装置、设备和介质
CN115291844A (zh) Element-Wise算子实现的方法及装置

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