一种执行命令的方法、装置、设备及介质与流程

文档序号:31537552发布日期:2022-09-16 22:57阅读:85来源:国知局
一种执行命令的方法、装置、设备及介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种执行命令的方法、装置、设备及介质。


背景技术:

2.随着计算机技术的不断革新,一般来说,在计算机产品与用户之间需要一定的交互,这样的交互需要通过交互式接口,交互式接口一般应用于linux系统。其中含有专门用于交互的特定的交互命令。且当这样的交互式接口应用在交换机和用户之间时,用户每输入一条命令,交换机就会给一个反馈。例如:当用户输入的命令是配置命令时,会反馈给用户配置成功或配置失败的信息;当用户输入的命令是显示配置命令时,会反馈给用户全部的配置信息,并按照一定的规则显示。可以理解的是,在全部的命令中,部分命令执行速度较快,相应反馈给用户的信息也较快;部分较为复杂的命令执行速度较慢,相应反馈给用户的信息也较慢。现有的为了提升较为复杂的命令执行速度,即提升反馈给用户的信息的速度,将全部的交互命令放到后台执行,但当用户连续输入多个相同的复杂的命令时,会出现多个复杂命令抢夺一个资源的情况,导致未抢夺到资源的命令出现未知错误。
3.鉴于上述存在的问题,寻求如何提升反馈给用户的信息的速度以及避免出现未知错误是本领域技术人员竭力解决的问题。


技术实现要素:

4.本技术的目的是提供一种执行命令的方法、装置、设备及介质,用于提升反馈给用户的信息的速度以及避免出现未知错误。
5.为解决上述技术问题,本技术提供了一种执行命令的方法,包括:
6.接收用户输入的命令;
7.调用redis数据库,将命令写入redis数据库,其中redis数据库的响应速度为毫秒级;
8.将表征命令写入至redis数据库的信息反馈给用户;
9.根据命令写入至redis数据库的时间生成时间戳;
10.判断时间戳是否发生变化;
11.若时间戳发生变化,则获取命令对应的资源并执行命令。
12.优选地,在根据命令写入至redis数据库的时间生成时间戳之前,在判将表征命令写入至redis数据库的信息反馈给用户之后,还包括:
13.记录命令写入至redis数据库的时间。
14.优选地,在接收用户输入的命令之后,在调用redis数据库,将命令写入redis数据库之前,还包括:
15.判断命令的个数是否为1个;
16.若是,则进入调用redis数据库,将命令写入redis数据库的步骤;
17.若否,则按照顺序将命令排序。
18.优选地,按照顺序将命令排序包括:
19.按照接收命令的先后顺序将命令排序。
20.优选地,当接收多个命令时,在根据命令写入至redis数据库的时间生成时间戳之后,在判断时间戳是否发生变化之前,还包括:
21.在顺序中覆盖除第一个命令对应的时间戳和最后一个命令对应的时间戳之外的全部命令对应的时间戳。
22.优选地,按照顺序将命令排序包括:
23.按照命令的优先级将命令排序。
24.优选地,在获取命令对应的资源并执行命令之后,还包括:
25.判断命令是否执行完毕;
26.若是,则结束;
27.若否,则返回至判断时间戳是否发生变化的步骤。
28.为解决上述技术问题,本技术还提供了一种执行命令的装置,包括:
29.接收模块,用于接收用户输入的命令;
30.调用模块,用于调用redis数据库,将命令写入redis数据库,其中redis数据库的响应速度为毫秒级;
31.反馈模块,用于将表征命令写入至redis数据库的信息反馈给用户;
32.生成模块,用于根据命令写入至redis数据库的时间生成时间戳;
33.第一判断模块,用于判断时间戳是否发生变化;
34.获取模块,用于若时间戳发生变化,则获取命令对应的资源并执行命令。
35.此外,该装置还包括以下模块:
36.记录模块,由于记录命令写入至redis数据库的时间。
37.第二判断模块,用于判断命令的个数是否为1个;
38.若是,则进入调用模块;
39.若否,则触发排序模块,用于按照顺序将命令排序。
40.先后顺序排序模块,用于按照接收命令的先后顺序将命令排序。
41.覆盖模块,用于在顺序中覆盖除第一个命令对应的时间戳和最后一个命令对应的时间戳之外的全部命令对应的时间戳。
42.优先级排序模块,用于按照命令的优先级将命令排序。
43.第三判断模块,用于判断命令是否执行完毕;
44.若是,则结束;
45.若否,则返回至第一判断模块。
46.为解决上述技术问题,本技术还提供了一种执行命令的设备,包括:
47.存储器,用于存储计算机程序;
48.处理器,用于指向计算机程序,实现执行命令的方法的步骤。
49.为解决上述技术问题,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现上述全部执行命令的方法的步骤。
50.本技术所提供的一种执行命令的方法包括:接收用户输入的命令;调用redis数据库,将命令写入redis数据库,其中redis数据库的响应速度为毫秒级;将表征命令写入至redis数据库的信息反馈给用户;根据命令写入至redis数据库的时间生成时间戳;判断时间戳是否发生变化;若时间戳发生变化,则获取命令对应的资源并执行命令。由于redis数据库的响应速度为毫秒级,调用redis数据库实现了提升反馈给用户的信息的速度;同时,通过根据命令写入至redis数据库的时间生成时间戳,只有时间戳发生变化时,才能够执行命令,以此避免了出现未知错误。
51.本技术还提供了一种执行命令的装置、设备和介质,效果同上。
附图说明
52.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1为本技术实施例所提供的一种执行命令的方法流程图;
54.图2为本技术实施例所提供的一种执行命令的装置结构图;
55.图3为本技术实施例所提供的一种执行命令的设备结构图。
具体实施方式
56.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
57.本技术的核心是提供一种执行命令的方法、装置、设备及介质,其能够提升反馈给用户的信息的速度以及避免出现未知错误。
58.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
59.需要说明的是,交互式接口就是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。换句话说,即在启动终端后,在终端设备附加一个交互式应用程序,就叫交互式接口。通常指软件接口,一般有命令行接口、图形接口、程序接口三种。
60.命令行接口(command line interface,cli)是计算机操作系统或应用程序为用户提供的可视提示接口。使用命令行接口,可以在特定的行中输入命令,从操作系统接收回应等。常见的如:shell程序:sh(bourn,史蒂夫
·
伯恩)、csh、tcsh、ksh(korn)、bash(bourn again shell)、gpl、zsh等等。
61.图形用户接口(graphical user interface,gui),又称图形用户界面,是指采用图形方式显示的计算机操作用户界面。图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。常见的如:x protocol、window manager、desktop:gnome(c,图形库gtk)、kde(c++,图形库qt)、轻量级桌面(xfce)等等。
62.程序接口就是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务。面向过程语言最基本的单元是过程和函数。常见的如:api(application programming interface),就是软件系统不同组成部分衔接的约定;abi(application binary interface),应用程序二进制接口,描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。
63.其中设备可以分为设备终端,例如:电脑、收集等等;还可以包括物理终端,例如:控制器、控制台等等;还可以包括:虚拟终端,例如:多个tty(teletypewriters);还可以包括:串行终端(serial port terminal,ttys)是使用计算机串行端口连接的终端设备,计算机把每个串行端口都看作是一个字符设备,有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端;还可以包括:伪终端(pseudo terminal),它是成对的逻辑终端设备,它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用(ptyp3(m3))逻辑设备。例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备一个伪终端端口上(ptyp2(m2))。此时一个getty程序就应该运行在对应的(ttyp2(s2))端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回“login:”字符串信息。这样,登录程序与telnet程序就通过伪终端进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
64.图1为本技术实施例所提供的一种执行命令的方法流程图。如图1所示,该执行命令的方法,包括:
65.s10:接收用户输入的命令。
66.在本实施例中,输入命令可以是用户输入的文字信息,还可以是一串代码,该代码可以是java语言、c语言、c++语言、python语言等等,以java语言举例说明,该输入命令为:string input=“x”。当输入命令为文字信息时,可以通过识别文字信息中的关键词,通过关键词查找对应的命令并输入。
67.s11:调用redis数据库,将命令写入redis数据库。
68.其中redis数据库(remote dictionary server)的响应速度为毫秒级。redis数据库是一个由salvatore sanfilippo写key-value存储系统,它由c语言编写、遵守bsd协议、支持网络、可基于内存亦可持久化的日志型、key-value类型的数据库,并提供多种语言的应用程序接口(application program interface,api)。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、有序集合和哈希类型。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。其中,key-value可以理解为,key=value,其中,key为一个无实
际含义的参数,其中value在本技术中为根据命令写入至redis数据库的时间生成时间戳。
69.s12:将表征命令写入至redis数据库的信息反馈给用户。
70.由于redis数据库存在并运行于后台,且该数据库具有的高性能以及publish/subscribe订阅通知等特性,将该数据写入至redis数据库,开始在后台执行目标程序不等执行完成就返回结果,用户的感知是下了一条命令很快就返回结果,其实后台还是在运行。
71.s13:根据命令写入至redis数据库的时间生成时间戳。
72.s14:判断时间戳是否发生变化。
73.若时间戳发生变化,则进入步骤s15:获取命令对应的资源并执行命令。
74.当时间戳发生变化时,则会完成执行用户输入的命令。此时,若发生连续执行两次的情况。对用户而言只是写了两次redis数据库,后台在第一次收到时间戳变化的时候会执行一次命令,执行完毕之后会检测到时间戳变化,然后再执行第二次,这样循环下去,直到时间戳不再变化。
75.其中,redis的发布与订阅功能由publish、subscribe、psubscribe等命令组成。通过执行subscribe命令,客户端可以订阅一个或多个频道。将三个客户端订阅同一个频道。再使用一个客户端执行publish命令向频道发送内容。三个订阅该频道的客户端都收到了信息。psubscribe命令可以订阅匹配模式的频道。例如rabbitmq的topic模式,可以利用通配符来进行模式匹配的绑定。如下图,对于news.it和news.et都可以接受。
76.当一个客户端执行subscribe命令订阅某个或某些频道的时候,这个客户端与被订阅频道之间就建立起了一种订阅关系。redis将所有频道的订阅关系都保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,值是一个链表,链表里面记录了所有订阅这个频道的客户端。subscribe命令订阅频道,如果之前没有订阅,则将该频道加入字典中,并构建订阅者的链表,如果已经存在,则只需要将该订阅者加入到链表。unsubscribe命令则是退订操作,将该订阅者从链表中移除。如果订阅者全部没有了,则删除该频道。
77.所有模式的订阅存放在一个链表中。链表中每个节点又记录了订阅模式和订阅该模式的客户端。可以通过psubscribe命令订阅某些模式并构造节点加入到链表中。或者通过psubscribe命令退订某模式,也就是删除该链表中的某个节点。
78.本技术所提供的一种执行命令的方法包括:接收用户输入的命令;调用redis数据库,将命令写入redis数据库,其中redis数据库的响应速度为毫秒级;将表征命令写入至redis数据库的信息反馈给用户;根据命令写入至redis数据库的时间生成时间戳;判断时间戳是否发生变化;若时间戳发生变化,则获取命令对应的资源并执行命令。由于redis数据库的响应速度为毫秒级,调用redis数据库实现了提升反馈给用户的信息的速度;同时,通过根据命令写入至redis数据库的时间生成时间戳,只有时间戳发生变化时,才能够执行命令,以此避免了出现未知错误。
79.在上述实施例的基础上,作为一种更优选地实施例,在根据命令写入至redis数据库的时间生成时间戳之前,在判将表征命令写入至redis数据库的信息反馈给用户之后,还包括:
80.记录命令写入至redis数据库的时间。
81.因为每次时间戳的变化都会执行命令,由于每次执行命令会使用同样的资源,因
此执行命令的过程都是一样的,即获取一次资源执行命令和获取多次资源执行命令的结果是一样的。此时,记录命令写入至redis数据库的时间,减少了由于用户输入的多个命令多次调用资源,进而导致的资源浪费。因为需要判断时间戳的变化,时间戳的每次变化都会对应获取一次资源且执行命令的操作,如果不记录命令写入至redis数据库的时间,这样时间戳的变化都会对应获取一次资源且执行命令的操作。
82.在上述实施例的基础上,作为一种更优选地实施例,在接收用户输入的命令之后,在调用redis数据库,将命令写入redis数据库之前,还包括:
83.判断命令的个数是否为1个;
84.若是,则进入调用redis数据库,将命令写入redis数据库的步骤;
85.若否,则按照顺序将命令排序。
86.当有多个命令时,为了减少资源浪费,将接收到的命令按照顺序进行排列,其中,顺序可以为接收命令的先后顺序,还可以为命令的优先级顺序。
87.当接收多个命令时,在根据命令写入至redis数据库的时间生成时间戳之后,在判断时间戳是否发生变化之前,还包括:
88.在顺序中覆盖除第一个命令对应的时间戳和最后一个命令对应的时间戳之外的全部命令对应的时间戳。
89.以下以三个命令产生三个时间戳进行举例说明:
90.用户在第一时刻、第二时刻、第三时刻分别执行了命令,即在上述三个时刻分别完成了将表征命令写入至redis数据库的信息反馈给用户,并且记录命令写入至redis数据库的时间。在第一时刻判断时间戳发生变化,此时对比已经保存的上次时间戳的变化,发现根据命令写入至redis数据库的时间生成时间戳的时间更新了,则会获取命令对应的资源并执行命令。但是执行命令的时间一般需要很长时间(例如:1min),在执行命令的过程中,用户再次根据命令写入至redis数据库的时间生成第二时刻对应的时间戳和第三时刻对应的时间戳。在完成执行第一时刻的命令后,发现时间戳再次发生了变化,于是上一次时间戳的时间和本次时间戳变化的时间(此时,由于第二时刻对应的时间戳被第三时刻对应的时间戳所覆盖,因此,此时时间戳变化的时间是第三时刻)。当有第三时刻对应的时间戳再次输入时,判断时间戳没有发生改变,则不获取资源。所以虽然用户输入了三次命令,其实命令只是按照顺序获取2遍资源,节省了系统资源。
91.在上述实施例的基础上,作为一种更优选地实施例,,在获取命令对应的资源并执行命令之后,还包括:
92.判断命令是否执行完毕;
93.若是,则结束;
94.若否,则返回至判断时间戳是否发生变化的步骤。
95.为了确保命令完全执行,通过判断命令是否执行完毕的步骤进行确认。当命令未执行完毕时,返回至判断时间戳是否发生变化的步骤,重新执行。
96.在上述实施例中,对于执行命令的方法进行了详细描述,本技术还提供执行命令的装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
97.图2为本技术实施例所提供的一种执行命令的装置结构图。如图2所示,本技术还
array,pla)中的至少一种硬件形式来实现。处理器31也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器31可以集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器31还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
122.存储器30可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器30还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器30至少用于存储以下计算机程序,其中,该计算机程序被处理器31加载并执行之后,能够实现前述任意一个实施例公开的执行命令的方法的相关步骤。另外,存储器30所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括windows、unix、linux等。数据可以包括但不限于执行命令的方法等。
123.在一些实施例中,执行命令的设备还可包括有显示屏、输入输出接口、通信接口、电源以及通信总线。
124.本领域技术人员可以理解,图3中示出的结构并不构成对执行命令的设备的限定,可以包括比图示更多或更少的组件。
125.本技术实施例提供的执行命令的设备,包括存储器30和处理器31,处理器31在执行存储器30存储的程序时,能够实现执行命令的方法。
126.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
127.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory),rom、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
128.以上对本技术所提供的一种执行命令的方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
129.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1