命令解析(通用9篇)
命令解析 篇1
1引言
一致性测试是黑盒测试,通过验证被测实体的输出与预期的差异,来判断它与协议描述的一致性。作为一致性测试中很重要的一个部分,射频一致性测试主要用来验证设备性能是否达到协议的射频指标[1]。终端的射频性能对其整体性能的影响是非常重要的。比如,终端接收机前端噪声系数过大,从而导致频繁掉话。这将严重影响用户体验,对终端厂商来说,十分不利于产品销售。为进一步推动TD-LTE产业链的发展,可以完成终端指标测试并保证终端入网质量及终端与系统兼容性的射频一致性测试系统就十分必要[2]。然而,由于终端射频一致性测试系统进行远程控制时不能直接执行控制器发出的可程控仪器标准命令,需要依靠SCPI命令解释器来完成这一功能,从而保证测试系统能够正确识别SCPI命令。因此,为保证射频一致性测试系统的远程控制,对SCPI命令解析器的研究就显得尤为重要[3]。
SCPI语言是一种用于可编程仪表的标准命令集。控制器和终端射频一致性测试系统通讯时使用的即为SCPI代码规则[4]。在终端射频一致性测试系统中,SCPI大大缩短了测试系统对测试项进行测试时所花费的时间,提高测试效率。
2测试系统功能结构
一致性测试是检验终端是否符合协议标准的重要手段,其核心是为了保证系统间、本系统内、多厂家间设备的互通性,以此为目进行参数设计和测试例开发实现。图1为TD-LTE终端射频一致性测试系统(以下简称测试系统)的结构图:
如图1在TD-LTE终端射频一致性测试系统中,由主控对TD-LTE测量项、TD-LTE协议栈、TD-LTE驱动的整体调度。驱动软件部分为基带以及射频板的运行提供保障, 应用接口部分是进行数据交互的通道。相关人员用仪表进行测试时,操作界面去驱动主控,并通过对主控的操作完成各项的测试指标。图中深色部分即为命令解析部分,是该论文研究的重点。
以上终端射频一致性测试系统可以进行本地界面操作,同时也支持远程控制。本地操作是传统的操作方式, 方便测试者修改参数,用户直接手动操作终端射频一致性测试系统的面板去完成测试要求;而远程控制则是利用GPIB或LAN来控制测试系统完成终端射频一致性测试。远程控制操作适用于对大规模的终端进行射频一致性测试,在节约劳动力的情况下也满足产线大规模生产的需求,同时提高了测试效率。
以上测试系统在没有远程控制部分也能完成测试,但若缺少远程控制操作功能,该测试系统将不宜应用到终端厂家产线上。因此,该系统添加了通过GPIB技术进行远程操作功能,在远程控制过程中,图中仪表和上位机之间是传输的是SCPI指令,即图1中深色部分也就是SCPI命令解析器。
仪表在接收到SCPI命令后不能识别这条命令,这就需要SCPI模块的支持,SCPI解析模块是远程控制功能的核心,它将GPIB(General-Purpose Interface Bus)接口传递过来的上位机发送的SCPI命令解析成仪表控制核心可以识别的信息,从而完成相应测试。下面详细阐述SCPI的设计与实现方案。
3 SCPI命令解析器设计与分析
3.1 SCPI简介
依据SCPI Release 99版本,整个SCPI命令分为两种类型;一种是IEEE488.2公用命令,另外一种是SCPI的特定控制命令。
公用命令是IEEE488.2规定的仪器必须执行的命令, 其句法和语义都遵循IEEE488.2的规定,以“*”开头,它与测量无关,用于控制仪器的某些基本功能操作[5],其语法格式如表1。
S C P I仪器特定控制命令以“ : ”开头,有命令 (Command)和询问(Query) 2种格式,主要用来从事测量、读取数据以及切换开关等,包括所有测量函数及一些特殊的功能函数;询问命令是一类特殊类型的命令,主要用于指示仪器产生响应数据,通过询问来获取仪器的设置或状态[5]。具体命令格式如表2。
依据公共命令和SCPI仪器特定控制命令的语法格式要求,下面举出几个典型的符合要求的例子,如表3。
3.2 SCPI解析器设计与分析
传统SCPI命令解析器在设计过程中,SCPI命令树的创建一般采用链式二叉树。这样在进行命令节点查询的时候, 不能任意查询某一节点,只能依据指针顺序进行查询,平均查找次数为: n为节点个数),若节点个数较多,将严重影响查询效率[6]。其次,传统的命令解析器将命令集写死在程序中,这对后期的修改或更新造成不便。
针对之前SCPI命令树造成查找不便以及修改麻烦的问题,设计了一种新的SCPI命令解析模式,将整个SCPI解析器分为三个部分:SCPI命令数据库、SCPI分析器、SCPI命令数据缓冲区,具体如图2。
其中SCPI命令数据库依然采用树形结构存储信息, 每个节点对应相应的SCPI命令。在存储上,SCPI设计时以本地文件的形式存储系统可以支持的所有SCPI信息,方便对SCPI命令的修改,SCPI命令数据库的设计很好的解决了SCPI命令修改或更新不便的问题。SCPI命令数据库负责提供SCPI命令在命令数据库中的位置信息,包括命令字符串、节点信息等。同时,还负责SCPI命令的相关函数的信息。SCPI命令数据库为修改SCPI命令集提供了便利。SCPI命令数据缓冲区是在进行远程控制相关操作时,系统开辟的一块内存区域,该内存区用来存储从SCPI命令数据库读取的节点信息。SCPI命令数据缓冲区负责将SCPI命令存储在内存中,存储SCPI命令信息。SCPI分析器负责分析SCPI命令数据库,并将其信息存储在SCPI命令数据库缓冲区内,同时还负责分析SCPI命令字符串;进行命令查找时,在SCPI命令集数据库缓冲区内查找对应的SCPI命令节点及信息;同时,SCPI分析器将SCPI命令存储在SCPI命令数据库缓冲区时按照命令信息字母顺序进行存储,以减少查找时间,此处将在实现部分详细阐述。
4 SCPI命令解析器分析与实现
4.1 SCPI命令数据库
SCPI命令数据库本地文件的形式存储所有SCPI命令信息。在SCPI命令数据库实现过程中,以XML格式文件存储数据库命令。下面以具体XML文件来分析存储SCPI命令的实现思想。
以上列举了,参数配置和读取终端UE参数的部分命令,其中各项的具体含义在表4中给出详细的解释。
依据命令数据库和上表说明,可以明确的了解命令数据库的实现,整个的命令数据库包括了系统需支持的所有SCPI命令信息,并供SCPI分析器部分调用。
4.2 SCPI命令数据缓冲区
SCPI命令数据缓冲区负责将存储SCPI命令信息, 并实现查找节点的功能。SCPI命令信息主要包括:父节点、子节点(集)、命令模式(配置/查询)、默认子节点、设置命令参数个数、查询命令参数个数、命令全写格式、处理函数名,是否叶子节点等,因此,SCPI命令数据缓冲区是功能实现过程中主要通过两个类实现, SCPIBufferNode类和SCPIBufferNodeCollection类,下面对两个类的实现进行具体的阐述。
4.2.1 SCPIBufferNode类
在S C P I B u f f e r N o d e类的实现 过程中 , SCPIBufferNode共有8个属性,各属性的名称,类型等详细信息如表5。
同时SCPIBufferNode类包括两个方法,一个是AddChild()方法,即向节点中添加一个子节点;另一个是NewSCPIBuffer(),创建一个节点实例,其各项属性从当前节点继承而来。
SCPIBufferNode类的这些属性和方法可以保证在存储命令信息时,能够存储完整的命令信息。
4.2.2 SCPIBufferNodeCollection类
SCPIBufferNodeCollection类的主要功能是存储多个SCPIBufferNode的集合。SCPIBufferNodeCollection类通过一个属性和两个方法来实现这个功能。
一个属性 为P a r e n t , 即父节点 。将几个SCPIBufferNode集合到一起的时候,该属性保证了查找时的顺序。
两个方法为FindNode(string )和FindLeaf(string)。FindNode(string )方法的作用是查找节点集合中,名称为对应string字符串的节点,FindLeaf(string)方法的功能是查找节点集合的叶子节点中,名称为对应string字符串的节点。
SCPIBufferNode类以及SCPIBufferNodeCollection类的属性和方法的实现保证了SCPI命令数据缓冲区将SCPI命令数据库中的信息完整的读取到内存中。
4.3 SCPI分析器
SCPI分析器主要功能是加载SCPI命令数据库,将其信息存储在SCPI命令数据库缓存;同时它还负责解析SCPI命令字符串,并在SCPI命令集数据库缓冲区内查找到与之相对应的SCPI命令节点及相关信息。
系统启动后,SCPI分析器在加载SCPI命令数据库并存储于SCPI命令缓存区时,SCPI分析器首先将所有SCPI命令按照命令级别排序,在完成之后,依照字母顺序将各级别内的命令按照字母的顺利进行排序, 均完成后,将命令消息完整的存储于命令数据缓冲区。
SCPI分析器分析输入的SCPI命令字符串,之后再SCPI命令数据库缓冲区查找对应的SCPI命令节点。根据之前对命令信息的存储,此处,采用二分查找算法查询命令节点,这样查找成功的平均查找长度为: (n为节点个数)[7]。当n较大时,这一查找长度远小于
图3具体阐述SCPI分析器解析输入字符串的具体实现流程。
整个系统开始后,SCPI解析部分可能接收到多条命令,首先对按“;”将命令分开,之后获取待处理命令, 并去除非法字符串。接下来SCPI分析器判断命令属于那种命令,是系统命令还是属于查询或者设置命令,针对不同的命令类别,做出不同的判断。下一步依据命令在数据缓冲区查找对应的节点,并获取解析后的命令。最后判断是否还有未处理的SCPI命令,若有,则继续获取命令进行处理,反之则完成命令解析。
5结果验证
依据对SCPI命令解析器的设计与实现的研究,基于VS2010软件开发平台对SCPI命令解析器进行开发。此SCPI命令解析器已经应用到测试系统中,并可以实现对SCPI命令字符串的正确解析。为验证SCPI命令解析器设计与实现的正确性,编写测试软件进行验证。测试内容为输入SCPI命令,看能否进行解析并实现命令特定功能,仪表通过返回相应的数值来验证是否正确[8]。验证结果如图4。输入标准SCPI命令*IDN?之后,点击相应按钮查看结果可看到TD- LTE Terminal RF Conformance Test的字符串;为某一项安排码值之后,通过相应的操作能够读取到具体的数值。
以上操作验证了设计的正确性。依据SCPI命令解析器的设计,修改SCPI命令数据库可减少修改或更新SCPI命令集的复杂度,这相比于将命令集写死在程序中,极大的简化了修改或更新的步骤;在进行命令节点查询时,传统命令解析器平均查找长度为 ,而基于该设计的S C P I命令解析 器的平均 查找长度 (n为节点个数),由此对比,该SCPI命令解析器的查找效率有了很大提高。
6结束语
本文提出了TD-LTE终端射频一致性测试系统中SCPI命令解析器的设计与实现方案,并基于此方案在VS2010的开发平台下对软件进行了开发实现,最后通过具体的测试对开发的SCPI命令解析器的功能进行了验证,结果表明该SCPI命令解析器能够满足预期的要求,可有效提高节点查找效率,降低SCPI命令集修改复杂度。本文提出的射频一致性测试系统中SCPI命令解析器的设计与实现,保证测试时上位机对测试仪表的远程控制,适用于对大规模的终端进行射频一致性测试,在节约劳动力的同时也满足产线大规模生产的需求,很好的提高了测试效率, 同时为将测试系统应用到终端厂家产线提供了保证,对于加快TD-LTE产业链的发展具有十分重要的意义[9]。
摘要:SCPI(Standard Commands for Programmable Instruments)命令是TD-LTE(Time Division-Long Term Evolution)终端射频一致性测试系统实现远程控制的基础。文章针对目前TD-LTE终端射频一致性测试系统中SCPI命令解析器存在着查找节点效率低、修改SCPI命令集繁琐的问题,分析了SCPI命令解析器功能以及测试系统整体流程,设计了一种新的SCPI命令解析方案。该方案通过在命令解析器中嵌入命令数据库和命令数据缓冲区的方法,实现了提高查找效率和简化修改命令集等功能。将该方案应用于TD-LTE终端射频一致性测试系统验证,测试结果准确,测试效率明显提高。
关键词:TD-LTE,射频一致性测试,SCPI命令解析器
命令解析 篇2
华为交换机配置命令问题描述:
某大学一台S3526下接的用户常常使用BT下载软件。如果在S3526上不开启system-guard华为交换机配置命令则容易死机,但是开启这条华为交换机配置命令的话有很多用户反映BT软件工作异常。
华为交换机配置命令原因分析:
首先我们看一下system-guard华为交换机配置命令原理:system-guard是以太网交换机实现的蠕虫病毒检测功能。交换机通过自动下发ACL方式使染毒主机下线 ,从而将染毒主机与网络隔离,保证网络其他主机不受感染,在超过一定时间后,交换机将恢复对这个染毒主机地址的正常转发流程。
也就是说这条华为交换机配置命令限制了TCP并发连接数,它实时监控每一个进程的并发线程数目,只要超过了系统认为的安全线程数目就开始蔽屏掉部分线程。这是为了防止震荡波这类的蠕虫病毒,但是bt、emule这类的多线程的点对点工具也一起被同等对待了。于是不开启system-guard时,蠕虫病毒将导致设备死机,开启system-guard时导致很多用户BT软件工作异常,
◆首先掌握一下system-guard华为交换机配置命令的配置:
◆使能system-guard检测功能:system-guard enable
◆禁止system-guard检测功能:undo system-guard enable
◆设置当前最大可检测染毒主机的数目: system-guard detect-maxnum number
◆恢复最大可检测的染毒主机数目至缺省值: undo system-guard detect-maxnum
◆设置地址学习数目的上限、重复检测次数的上限和隔离时间:
◆system-guard detect-threshold IP-record-threshold record-times-threshold isolate-time
缺省情况下,system-guard地址学习数目的上限(IP-record-threshold)、重复检测次数的上限(record-times-threshold)、隔离时间(isolate-time)分别为:30、1、3。华为交换机配置命令例:在设置了地址学习数目的上限为50、重复检测次数的上限为3、隔离时间为5后。
系统如果连续3次检测到来自某源IP的地址每次IP地址学习数目都超过了50,系统就认为受到了攻击,将此源IP检测出来,在5倍的老化周期内不学习来自此源IP的报文中的目的IP地址。
华为交换机配置命令解决方法:
命令解析 篇3
向全国进军的命令 (一九四九年四月二十一日)
各野战军全体指挥员战斗员同志们、南方各游击区人民解放军同志们:
由中国共产党的代表团和南京国民党政府的代表团经过长时间谈判所拟定的国内和平协定, 已被南京国民党政府所拒绝。南京国民党政府的负责人员之所以拒绝这个国内和平协定, 是因为他们仍然服从于美国帝国主义和国民党匪首蒋介石的命令, 企图阻止中国人民解放事业的推进, 阻止用和平的方法解决国内问题。经过双方代表团的谈判所拟定的国内和平协定八条二十四款, 表示了对于战犯问题的宽大处理, 表示了对于国民党军队的官兵和国民党政府工作人员的宽大处理, 对于其他各项问题亦无不是从人民利益和民族利益出发作了适宜的解决。拒绝这个协定, 就是表示国民党反动派决心将他们发动的反革命战争打到底;拒绝这个协定, 就是表示国民党反动派在今年1月1日所提议的和平谈判, 不过是企图阻止人民解放军向前推进, 以便反动派获得喘息时间, 然后卷土重来, 扑灭革命势力;拒绝这个协定, 就是表示南京李宗仁政府所谓承认中共八个和平条件以为谈判基础是完全虚伪的。因为既然承认惩办战争罪犯, 用民主原则改编一切国民党反动军队, 接收南京政府及其所属各级政府的一切权力以及其他各项基础条件, 就没有理由拒绝根据这些基础条件所拟定的而且是极为宽大的各项具体办法。在此种情况下, 我们命令你们:
(一) 奋勇前进, 坚决、彻底、干净、全部地歼灭中国境内一切敢于抵抗的国民党反动派, 解放全国人民, 保卫中国领土主权的独立和完整。
(二) 奋勇前进, 逮捕一切怙恶不悛的战争罪犯, 不管他们逃至何处, 均须缉拿归案, 依法惩办。特别注意缉拿匪首蒋介石。
(三) 向任何国民党地方政府和地方军事集团宣布国内和平协定最后修正案。对于凡愿停止战争、用和平方法解决问题者, 你们即可照此最后修正案的大意和他们签订地方性的协定。
(四) 在人民解放军包围南京之后, 如果南京李宗仁政府尚未逃散, 并愿意在国内和平协定上签字, 我们愿再一次给该政府以签字的机会。
中国人民革命军事委员会主席毛泽东中国人民解放军总司令朱德
命令是最具权力象征的一种公文, 它集中表现为执行上的不可动摇性, 没有丝毫商洽易移的余地, 不论在何种情况下, 受令者不准在行动上有任何差异, 强制性十分突出。反映到行文上, 它要求通过令人折服的事理和确切精当的语言, 来营构出一种汹涌磅礴的气势。在这方面, 《向全国进军的命令》为我们树立了光辉的典范, 堪称中国现代命令体公文的巨篇。60余年来, 这篇命令一直被人们广为传颂, 并先后被众多的公文写作著述和教材引为范例。从鉴赏的角度看, 这篇命令在写作上的成功之处主要有如下几点:
(一) 强弩连发, 势不可挡
俗语说:“军令如山倒”;古人也讲:“慎乃出令, 令出准行”, 正是由于命令体公文这种至高无上的权威性和强制性, 决定了其在写法上必然要体现出一种如江河涌流、一泻千里、锐不可挡的气势。革命领袖的宏韬伟略以及“压倒一切敌人”的强大气势在文中得到了鲜明而又有力的体现。命令开篇率先点明当时的国内形势:“由中国共产党的代表团和南京国民党政府代表团经过长时间的谈判所拟定的国内和平协定, 已被南京国民党政府所拒绝。”用语高度概括, 直截了当。紧接着用一因果倒装句, 追溯了国民党政府拒绝和平协定的根本原因, 可谓一针见血, 切中要害。然后连续使用三个“拒绝这个协定, 就是表示……”为提领句构成的排比, 将国民党政府“假和平, 真内战”的反动本质淋漓尽致地揭露出来。通过上述三层内容的表述, 逐层深入, 步步进逼, 环环相扣, 如强弩连发, 势不可挡, 从而将发布命令的缘由和必要性充分有力地表述出来, 令人不容置疑。同时, 在下文所列示的四条命令事项中, 又使用“奋勇前进……”作提领语句, 构成隔离反复辞格, 而且四条要求依据逻辑顺序, 由总到分逐一展开, 这种写法也使行文体现出一种顺流直下、排山倒海般的强大气势, 其由此对人民解放军指战员所产生的无比巨大的鼓舞力和号召力, 显然是不言而喻的。
(二) 夹叙夹议, 事理融合
命令体公文的写作, 在结构布局上通常由发命令的缘由和命令事项两大部分组成。其中缘由是写作的重点, 它要将发布命令的原因和必要性完整、充分、合理、有力地做出阐述。在表述手法上, 通常是夹叙夹议, 叙议结合。“叙”就是摆事实, “议”就是讲道理, 要把两者有机地结合起来, 达到高度的统一。对此, 这篇命令写得极其成功。文中开篇首句“由中国共产党的代表团和南京国民党政府代表团经过长时间的谈判所拟定的国内和平协定, 已被南京国民党政府所拒绝”这一高度概括的语句显然是在摆事实, 同时又暗含着说明国民党政府妄图用和谈拖延时间, 以便卷土重来, 扑灭革命势力的顽固立场, 这样向人民解放军发出进军命令也是理所当然的了。接下去在阐述国民党政府拒绝和平协定的原因之后, 又进一步指出:“经过双方代表团的谈判所拟定的国内和平协定八条二十四款, 表示了对于战犯问题的宽大处理, 对于国民党军队的官兵和国民党政府工作人员的宽大处理, 对于其他各项问题亦无不是从民族利益和人民利益出发作了适宜的解决”这一排比句, 本身既是在摆事实, 具体指出我党都在哪些方面做出了必要的让步, 又是在讲道理, 让人从中深刻体会到国民党反动政府是如何地冥顽不灵, 顽固坚持其反动立场。最后连用三个“拒绝这个协定, 就是表示……”是在进一步讲道理。这样, 通过叙议交织, 事理融合, 使行文的缘由显得十分充分, 说服力极强, 从而使中国人民解放军指战员按照命令, 以摧枯拉朽之势, 直捣蒋家王朝。总之, 既摆事实, 又讲道理, 寓理于事, 是这篇命令在写法上最为突出的特色之一, 很值得我们认真加以研究和借鉴。
(三) 用语精当, 质直不傲
在语言表达方面, 这篇命令也极富特色, 充分体现出了命令体公文准确精当、斩钉截铁、质直不傲的风格特征。如, “由中国共产党的代表团和南京国民党政府代表团经过长时间的谈判所拟定的国内和平协定, 已被南京国民党政府所拒绝。”将发布命令的根本缘由用高度概括的语言一语道破, 并且使用“拒绝”一词, 极为确切, 既充分暴露出国民党政府“决心将他们发动的反革命战争打到底”的顽固立场, 又有力地说明了向全国进军、“消灭中国境内一切敢于抵抗的国民党反动派”的必要性。又如, “拒绝这个协定, 就是表示国民党反动派决心将他们发动的反革命战争打到底。拒绝这个决定, 就是表示国民党反动派在今年一月一日所提议的和平谈判, 不过是企图阻止人民解放军向前推进, 以便反动派获得喘息时间, 然后卷土重来, 扑灭革命势力。拒绝这个协定, 就是表示南京李宗仁政府所谓承认中共八个和平条件以为谈判基础是完全虚伪的”。这里, 排比辞格的运用使行文的语言表达显得严整、有力, 富有气势;而“企图阻止”、“喘息”、“卷土重来”、“扑灭”、“虚伪”等诸多词语的使用, 又把国民党反动派的顽固态度和狂妄野心揭露得淋漓尽致;“在此种情况下, 我们命令你们:”这一发令性语句更显得坚决果断, 令人感到神圣不可侵犯。再如, “奋勇前进, 坚决、彻底、干净、全部地歼灭中国境内一切敢于抵抗的国民党反动派……”一句, 连续使用“坚决”、“彻底”、“干净”、“全部”等四个近义词语作为状语, 分别从程度、范围、态度、效果等几个方面说明了歼敌所要达到的任务目标和基本要求, 用得极其确实精当、严谨缜密;“奋勇前进, 逮捕一切怙恶不悛的战争罪犯。不管他们逃至何处, 均须缉拿归案, 依法惩办。特别注意缉拿匪首蒋介石”。这里“逮捕”、“怙恶不悛”、“缉拿归案”、“依法惩办”“匪首”等词语, 极具有感情色彩, 充分体现出对战争罪犯的贬恶之情以及一定要将其绳之以法的坚决态度, 充分体现出命令体公文所具有的威严凛然的气势。此外, 文中还多处使用“亦无不是”、“此种”、“凡……者”、“即可”、“尚未”、“均须”等文言词语和文言句式, 既使语言表达简洁凝练, 又切合命令体公文庄重严肃的语体特征。
(四) 逻辑严谨, 环环相扣
这篇命令的结构层次也非常严谨缜密, 环环相扣, 层层进逼, 逻辑性十分突出。开篇在交待出发布命令的根本原因之后, 随即追溯南京国民党政府拒绝协定的原因, 继而进一步指出其拒绝协定是毫无道理的, 通过这种强劲严密的层次表达, 使行文的缘由和必要性得以充分地展现, 令人深信不疑;接下去运用一过渡句, 很自然地引出四条命令事项, 而且依照逻辑顺序, 采用由总到分、由轻至重的写法, 前两条重在明确任务与要求, 后两条重在阐述解决问题的方式, 既有总的原则性, 又有处理具体问题的灵活性;既体现出我军“奋勇前进”、“解放全中国”的不可动摇性, 又体现出了对南京国民党政府及其地方政府和地方军事集团的极度宽容性, 从而使行文显得十分严谨、周密, 无懈可击。
命令解析 篇4
‘configure’脚本有大量的命令行选项。对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的。带上’–help’选项执行’configure’脚本可以看到可用的所有选项。尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的。下面对每一个选项进行简略的介绍:
–cache-file=FILE
‘configure’会在你的系统上测试存在的特性(或者bug!)。为了加速随后进行的配置,测试的结果会存储在一个cache file里。当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助。
–help
输出帮助信息。即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项。例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项。
–no-create
‘configure’中的一个主要函数会制作输出文件。此选项阻止’configure’生成这个文件。你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了。
–quiet
–silent
当’configure’进行他的测试时,会输出简要的信息来告诉用户正在作什么。这样作是因为’configure’可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么,使用这两个选项中的任何一个都会把你扔到一旁。(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)
–version
打印用来产生’configure’脚本的Autoconf的版本号。
–prefix=PEWFIX
‘–prefix’是最常用的选项。制作出的’Makefile’会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分。举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到”/opt/gnu/share”:
$ ./configure –prefix=/opt/gnu
–exec-prefix=EPREFIX
与’–prefix’选项类似,但是他是用来设置结构倚赖的文件的安装位置,编译好的’emacs’二进制文件就是这样一个问件。如果没有设置这个选项的话,默认使用的选项值将被设为和’–prefix’选项值一样。
–bindir=DIR
指定二进制文件的安装位置,这里的二进制文件定义为可以被用户直接执行的程序。
–sbindir=DIR
指定超级二进制文件的安装位置。这是一些通常只能由超级用户执行的程序。
–libexecdir=DIR
指定可执行支持文件的安装位置。与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行。
–datadir=DIR
指定通用数据文件的安装位置。
–sysconfdir=DIR
指定在单个机器上使用的只读数据的安装位置。
–sharedstatedir=DIR
指定可以在多个机器上共享的可写数据的安装位置。
–localstatedir=DIR
指定只能单机使用的可写数据的安装位置。
–libdir=DIR
指定库文件的安装位置。
–includedir=DIR
指定C头文件的安装位置。其他语言如C++的头文件也可以使用此选项。
–oldincludedir=DIR
指定为除GCC外编译器安装的C头文件的安装位置。
–infodir=DIR
指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式。
–mandir=DIR
指定手册页的安装位置。
–srcdir=DIR
这个选项对安装没有作用,他会告诉’configure’源码的位置。一般来说不用指定此选项,因为’configure’脚本一般和源码文件在同一个目录下。
–program-prefix=PREFIX
指定将被加到所安装程序的名字上的前缀。例如,使用’–program-prefix=g’来configure一个名为’tar’的程序将会使安装的程序被命名为’gtar’。当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in’文件使用时才会工作。
–program-suffix=SUFFIX
指定将被加到所安装程序的名字上的后缀。
–program-transform-name=PROGRAM
这里的PROGRAM是一个sed脚本。当一个程序被安装时,他的名字将经过`sed -e PROGRAM’来产生安装的名字,
–build=BUILD
指定软件包安装的系统平台。如果没有指定,默认值将是’–host’选项的值。
–host=HOST
指定软件运行的系统平台。如果没有指定。将会运行`config.guess’来检测。
–target=GARGET
指定软件面向(target to)的系统平台。这主要在程序语言工具如编译器和汇编器上下文中起作用。如果没有指定,默认将使用’–host’选项的值。
–disable-FEATURE
一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置。如果默认是提供这些特性,可以使用’–disable-FEATURE’来禁用它,这里’FEATURE’是特性的名字,例如:
$ ./configure –disable-gui
-enable-FEATURE[=ARG]
相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用’–enable-FEATURE’来起用它。这里’FEATURE’是特性的名字。一个特性可能会接受一个可选的参数。例如:
$ ./configure –enable-buffers=128
`–enable-FEATURE=no’与上面提到的’–disable-FEATURE’是同义的。
–with-PACKAGE[=ARG]
在自由软件社区里,有使用已有软件包和库的优秀传统。当用’configure’来配置一个源码树时,可以提供其他已经安装的软件包的信息。例如,倚赖于Tcl和Tk的BLT器件工具包。要配置BLT,可能需要给’configure’提供一些关于我们把Tcl和Tk装的何处的信息:
$ ./configure –with-tcl=/usr/local –with-tk=/usr/local
‘–with-PACKAGE=no’与下面将提到的’–without-PACKAGE’是同义的。
–without-PACKAGE
有时候你可能不想让你的软件包与系统已有的软件包交互。例如,你可能不想让你的新编译器使用GNU ld。通过使用这个选项可以做到这一点:
$ ./configure –without-gnu-ld
–x-includes=DIR
这个选项是’–with-PACKAGE’选项的一个特例。在Autoconf最初被开发出来时,流行使用’configure’来作为Imake的一个变通方法来制作运行于X的软件。’–x-includes’选项提供了向’configure’脚本指明包含X11头文件的目录的方法。
–x-libraries=DIR
类似的,’–x-libraries’选项提供了向’configure’脚本指明包含X11库的目录的方法。
在源码树中运行’configure’是不必要的同时也是不好的。一个由’configure’产生的良好的’Makefile’可以构筑源码属于另一棵树的软件包。在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布于源码树。这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难。建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree)。这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build && cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc… gcc
checking whether the C compiler (gcc ) works… yes
checking whether the C compiler (gcc ) is a cross-compiler… no
checking whether we are using GNU C… yes
checking whether gcc accepts -g… yes
checking for a BSD compatible install… /usr/bin/install -c
checking host system type… i586-pc-linux-gnu
checking build system type… i586-pc-linux-gnu
checking for ar… ar
checking for ranlib… ranlib
checking how to run the C preprocessor… gcc -E
checking for unistd.h… yes
checking for getpagesize… yes
checking for working mmap… yes
checking for limits.h… yes
checking for stddef.h… yes
updating cache ../config.cache
creating ./config.status
这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置’/usr/local’:
文书提出命令比较研究 篇5
一、文书提出命令的涵义及其意义
“文书提出命令是指一方当事人就证明案件事实的书证,由负有提出义务的对方当事人或者第三人持有时,向法院申请要求命令该持有人递交文书的一种方法。”[2]对当事人来说,文书提出命令制度既是当事人通过法院向持有文书的对方当事人或第三人收集书证的一种手段,也是以此来证明所要证明事实的一种举证行为。[3]它对于推进整个民事诉讼程序的前进和实现民事诉讼的程序价值起着重要的作用。
第一,贯彻当事人诉讼权利平等原则。在民事诉讼中,诉讼当事人的主体地位是平等的,他们所享有的权利和义务具有对等性。当一方当事人的书证为对方当事人或第三人所持有,而对方或第三人拒绝交出书证时,当事人在证据的出示和收集方面便会处于劣势。如果此时法院依职权进行调查收集,就意味着法院可以代替当事人行使举证责任,这将有违辩论主义守则。而通过法院发出文书提出命令的形式促使对方当事人或第三人履行展示相关证据的义务,再由当事人自行收集相关书证,既不违反辩论主义的法理,又可以达到重新平衡双方当事人的权利。即法院通过文书提出命令来扩充和完善受害人向对方当事人或第三人收集证据的制度,使诉讼双方当事人处于真正平等的地位。
第二,使审理集中化,提高司法效率。文书提出命令的施行,一方面有利于发现案件的证据事实,使法官能尽早地整理案件的争议焦点,保障案件审理的集中化;另一方面,文书提出命令可以通过公权力的运行来缩短当事人收集证据的时间,预防对方当事人的证据突袭,甚至可以通过证据的发现促成双方当事人达成和解。因此,从这个层面来说文书提出命令又有降低诉讼成本,提高司法效率的功能。
第三,提高判决与事实的接近度和正确度。文书提出命令促使双方当事人尽可能地收集证据,通过证据的展示充实整个案件的审理和尽可能地呈现案件的事实,在不损害当事人程序主体地位的基础上增强法官的认知能力。法官通过证据呈现的事实来形成自由心证,从而缩小判决认定事实与客观事实间的差距。
二、文书提出命令内容比较
(一)文书提出命令的范围
在英美法系国家,由于实行判例法制度,它们对文书提出的范围并未作明文的规定。在司法实践中对此通常作扩大解释,即凡是涉及一切与诉争有关的信息来源而不仅限于关联性证据本身,都属于证据开示的范围。[4]而在大陆法系国家,一般以民事诉讼成文法的形式直接规定文书提出命令的范围。如德国民事诉讼法就规定对方当事人在诉讼中曾经引用了他自己手中的文书时,负有文书提出义务。同时该法422条还规定了民法里的提出义务,即当事人可依《民法典》、《商法典》、《票据法》等实体法规定的资讯请求权,要求对方当事人提出其所持有的书证。由此可看出德国把文书提出命令的范围分为实体法上的事项和程序法上的事项。与德国相比,日本和台湾地区对对方当事人文书提出命令的范围要宽广和具体一些。
(二)文书提出命令申请要件及审查程序
1. 申请要件。
英美法系国家的法院原则上不介入当事人的证据收集活动,只在特殊的情况下才给予必要的干预与救济。[4]德国、日本和台湾地区的民事诉讼法均规定了文书提出命令的具体申请要件,只有在符合这些条件情况下法院才会受理当事人的申请:(1)文书的形式(说明是公文书或私文书、文书制作的日期和地点等);(2)文书所要证明的事实;(3)文书的主要内容;(4)对方当事人或第三人持有文书的事由;(5)文书持有人有提出文书义务的原因。法律规定文书提出命令申请要件主要源于他们认为国家对私人财产权、自由权的干涉必须通过正当的程序才得以实施的法律传统。此外,法律规定严格的申请要件可以排除当事人的摸索证明,提高司法效率。
2. 审查程序。
当事人提交文书提出命令申请后,法院需要对申请进行形式要件上和实质要件的审查,只有同时符合形式和实质要件的申请,法院才会签发文书提出命令。法官将从其提交的申请材料中判断该书证对审判的重要性、证据的合法性、现实可行性等因素综合判断,以决定是否批准该申请。对于不符合申请要求的,法院将通知当事人补正,当事人不及时补正的法院将按照中间裁判或终局裁判驳回其申请,继续审查原案件。
(三)对违反文书提出命令的制裁
当对方当事人或第三人不履行文书提出命令时则会被视为违反诉讼法上的诚信义务和当事人平等原则,构成证明妨碍。为使双方当事人掌握的证据公平和促使文书持有人履行法院的法命,保障司法权威,很多国家和地区对违反文书提出命令的证明妨碍都规定了相应的制裁措施。
在英国,当事人不得依赖于未经开示或不允许他人查阅的书证。另外,当事人在特定期间不开示特定书证的,法院可以撤销其案情陈述。对不遵守书证开示的当事人或诉讼外第三人,法院还可以裁决藐视法庭罪,处以罚金或拘留。[5]而在大陆法系,对方当事人不提出书证时,法院可以申请人所主张的关于该文书的记载或申请人所主张的事实为真实。对于第三人不服从文书提出命令的,日本新民事诉讼法第225条规定法院可以裁定处以20万日元以下的罚款。
(四)秘密资讯的保护及对义务人的救济
1. 秘密资讯的保护。
在强调法院文书提出命令范围的同时,并非所有的文书持有人都负有文书提出的义务,在一些特殊的情况下,对方当事人和第三人受保密特权的保护可以免除其文书的提出义务,其实质是对法官运用文书提出命令自由裁量权的限制。保密特权一般因个人身份、职业关系和因公务、商业关系以及公共利益而产生。在英国,为了公共利益的需要和享有保密特权的人可以免除其文书提出义务。在美国则仅限于享有保密特权的人。为了保护文书持有人的秘密资讯,德国民事诉讼法第434条规定:“由于重大障碍不能在言词辩论时提出文书,或者因为证书极为重要,为防其散失或损坏而不能提出之虑时,受诉的法院可以命令把证书提交给法院成员之一或提交给另一法院。”[6]
2. 对义务人的救济。
如前所述文书提出命令涉及到国家公权力对私人权利的干涉,因此许多国家的法律都为文书提出义务人提供了救济的程序。在德国,当事人否认其持有文书时,法院必须经过询问程序才能作出文书记载内容或申请人主张的事实为真实。此外,强制第三人提出书证时,必须通过诉讼的途径实现。其民事诉讼法第431条则规定:“如果对第三人的诉讼已经终结,或者举证人拖延起诉、拖延诉讼的进行,拖延强制执行时,对方当事人可以申请,不得期间届满就续行诉讼。”[6]
三、对我国文书提出命令制度的启示
(一)目前我国文书提出命令的不足
我国民事诉讼法对书证提出的规定比较简单,只规定了“谁主张,谁举证”的一般原则。对于书证落在对方当事人或第三人手里时,当事人如何获得书证,民事诉讼法没有明确的规定。最高法院在《关于民事经济审判方式改革问题若干规定》第30条和最高人民法院《关于民事诉讼证据的若干规定》第75条均规定了“有证据证明持有证据的一方当事人无正当理由拒不提供,如果对方当事人主张该证据的内容不利于证据持有人,可以推定该主张成立”。这从一定程度上补充了民事诉讼法中关于证据规定的不足,但对于当事人如何申请文书提出命令、文书提出命令的审查程序、第三人拒不交出文书如何解决等问题仍缺乏相应的规定。由此造成了在实践中对方当事人只提出对自己有利的证据,对自己不利的证据则不予交换。第三人持有文书时,出于避免“不必要的麻烦”和“不想得罪任何人”的想法,往往是不予以提供或是声称文书不在其手里,甚至以此向当事人敲诈勒索。这些问题的出现和存在影响了诉讼当事人证据的收集和诉讼的顺利进行,为此建构文书提出命令制度就成为了我国的一种现实需要。
(二)我国文书提出命令制度的建构
1. 文书提出命令的范围。
从德国、日本和台湾地区最近一次的民事诉讼法修改来看,其文书提出命令的范围均有扩大之趋势。如台湾地区修改前的民事诉讼法只规定当事人只有在诉状或辩论中引用过其所持有的文书时,才负有文书提出的义务。而2000年修改的民事诉讼法则把该项规定扩大到当事人只要在诉讼中曾引用了该文书,都负有文书提出的义务。1998年修改后的日本新民事诉讼法则把文书提出义务规定为一般性义务。即把文书持有人提出文书的义务扩大到如同任何人都有义务出庭作证一样,凡是文书持有人所持有的文书与案件有关联,当法院发出文书提出命令后就负有向法院提出文书的义务。[7]为了适应整个民事诉讼从职权主义向当事人主义转变的趋势,我国民事诉讼法应把文书提出义务规定为一般性义务,以确保当事人收集证据的权利得到更为有力的保障。而文书提出命令的事项范围可以借鉴德国的模式,在实体法和程序法中均可以规定对方当事人和第三人负有文书提出的义务。
2. 文书提出命令的申请条件和审查方式。
文书提出命令的申请条件是法院审查文书提出命令申请的基础,其构成应包括形式要件和实质要件。对于实质要件的规定则至少需要包括文书的下落和下落他人手中的原因以及文书所证的事实。法院依据文书提出命令的申请要件,判断当事人所申请的文书对案件审理是否有重要性、合法性和可能性。对于不符合申请要件的,可以责令申请人补正,不能及时补正或补正后仍不符合申请要件的则应驳回其申请。
3. 对违反文书提出命令的制裁。
对于违反文书提出命令的制裁按主体可以分为对对方当事人的制裁和对第三人的制裁。按制裁的形式可分为自动制裁、强制制裁和法院制裁三种。结合我国的实际,直接认定事实的真实性,禁止不服从命令的当事人提出证据;驳回诉讼、停止诉讼和缺席判决;裁决支付不作为费用;强制出示等措施都可以纳入我国立法考虑的视野。
4. 对秘密资讯的保护和义务人的救济。
文书提出命令制度一个突出的特点表现为国家公权力的运行。然而任何权力的行使都有可能偏离原来的轨道,致使权力异化。因此,在文书提出命令制度中除了需要规定严密的程序外,还应特别注意对个人秘密资讯的保护以及文书提出义务人的救济。对于秘密资讯的保护首先要解决的问题是如何界定秘密资讯的范围。秘密资讯的范围取决于通过保密特权所要保护的利益与真实发现间的价值衡量,应从证据的重要性、必要性、其他证据的替代的可能性以及审理对象、秘密种类等综合因素来确定其范围。[8]对于秘密资讯的具体界定目前尚需学术界的讨论和实体法相关规定的完善。其次是对秘密资讯的保护方法。秘密资讯的保护方法主要有两种:一是免除秘密资讯持有人的提出义务。二是对于一些像商业账簿等商业保密资讯法院认为确有必要提出的,法院应遵循相关的商业惯例,可以令文书持有人以不公开的方式直接向法院出示,除此以外的任何人不得要求开示该文书。在权利救济方面,则需赋予义务人言词辩论的机会,不服时可提出申诉。对于第三人来说,其与诉讼无直接的利害关系,因此对其文书的强制提出必须通过诉讼的方式为必要。
摘要:文书提出命令对贯彻当事人诉讼权利平等原则,提高司法效率,分配当事人举证责任以及提高判决与事实的接近度和正确度有着重要的作用。通过对英美法系证据开示和大陆法系一些国家及地区文书提出命令范围、申请要件、审查程序、违反命令的制裁以及秘密资讯保护和对义务人的救济等内容的比较,可以看出我国关于文书提出制度的不足,应从文书提出命令的范围、申请条件和审查方式、制裁及对秘密资讯的保护和义务人的救济等方面加以完善。
关键词:文书提出命令,文书提出义务,比较研究
参考文献
[1]江伟.民事诉讼法[M].北京:高等教育出版社,2004:139.
[2]宋英辉。金玄耿.日本证据法简介[BE/OL]http://www.jorb.com/zyw/n120/ca65639.htm.
[3]日本新民事诉讼法[M].白绿铉,译.北京:中国法制出版社,2000:14.
[4]黎蜀宁,张芸.论书证收集的程序保障[J].西北师范大学学报:社会科学版,2004(5).
[5]·徐昕.英国民事诉讼与民事司法改革[M].北京:中国政法大学出版社,2002:313.
[6]德意志联邦共和国民事诉讼法[M].谢怀拭,译.北京:中国法制出版社,2001:105.
[7]廖中洪.论中国民事证据发现制度的构建——一个比较法视角的思考[J].金陵法律评论,2004(2).
军事命令若干问题浅析 篇6
关键词:军事命令,概念,法律地位
服从命令是军人的天职。命令是我国最古老的公文文种之一, 在古代, 命令被称作“诰”、“制”、“策”等。命令是最常见的军事行为形式。“军令如山倒”就是对命令在军队地位最为贴切的形容。服从命令、听从指挥是军队战胜敌人的重要保证, 也是建设现代化、正规化军队的起码条件。
一、军事命令的概念及其构成要素
对军事命令的概念界定, 主要有以下几种观点:第一种观点认为军事命令“是指有权主体就涉及国家军事利益的具体事项依法做出的具有特殊执行力的权威意思表示”。第二种观点认为军事命令“主要是指有权的国家机关和人员依照已有的法律、法规就涉及国家军事利益的具体事项, 对下级或受管辖的对象所做出的安排”。第三种观点认为“命令是一种典型的军事行政执法行为, 包括纯粹的军事命令和行政性命令两类, 前者指直接有关作战与训练任务内容的命令, 后者是以辅助作战与训练活动而进行行政管理为内容的命令, 行政性命令是由军事性命令派生并且为其服务的”。将军事命令定义为一种行政执法行为, 是直接有关作战与训练任务内容的命令。第四种观点认为军事命令“是军队首长或所属部队、机关下达规定性活动或公布重要决定的军事行为”。第五种观点认为“军事命令是军队首长和军事机关依据宪法、法律, 发布军事法规、下达训练、作战任务, 任免干部, 授予荣誉称号, 变更编制、体制的军用文书。”除此之外, 《中国人民解放军军语》对军事命令是这样界定的:“军队首长或领导机关对所属部队、机关下达规定性任务或公布重要决定的军用文书。通常用以下达有关作战、训练等任务, 颁发条令、条例, 调动部队、人员、装备, 任免干部, 授予荣誉称号, 变更编制、体制等。”
对于军事命令概念的争议, 可以从构成要素进行分析, 从而更加准确地认识军事命令。
(一) 主体。
《内务条令》第61条规定, “军官、士兵依行政职务和军衔, 构成首长与部属、上级与下级或者同级的关系。部属、下级必须服从首长、上级”。第62条规定, “首长有权对部属下达命令”。据此, 军事命令的主体是受令者的首长或上级。此外, 例如, 《解放军政治工作条例》中规定, 总政治部的主要任务是遵照中共中央和中央军委的决议、命令、指示, 根据新时期军队政治工作的基本任务和主要内容, 制定全军政治工作的方针、政策、规章制度。因此, 依法享有发布命令权的机关也是军事命令的主体。
(二) 职权。
军事命令的发布者必须是具有合法职权的机关或首长发出的命令, 军事命令执行者所执行的命令必须属于本职范围。命令的下达形式必须合法, 是指命令在上级的抽象职权范围内按照法律规定的形式和程序下达。
(三) 受令者。
根据《内务条令》第61条规定:“受令者应为中国人民解放军军人, 并且与命令发布者是上下级或首长与部属的关系。”
(四) 内容。
军事命令应该与国家军事活动有着直接或间接的联系, 有关作战与训练任务的命令以及辅助其进行的日常管理或行政管理的命令, 都归属于军事命令的内容。
因此, 《军语》中对军事命令的表述最为准确, 因采用此概念。
二、军事命令的特征
(一) 权威性。
军事命令是军事统治最重要的方式和手段。《三略·上略》中写到“将之所以为威者, 号令也。战之所以全胜者, 军政也。士之所以轻战者, 用命也”。讲的就是命令的权威性, 正是因为命令的权威性反映出命令的约束力和执行力, 使得上级的命令能够得到很好的贯彻执行, 进而提升部队的指挥和作战秩序, 保卫祖国和民族安全。
(二) 强制性。
《曾胡治兵语录·严明》中记载“号令未出, 不准勇者独进, 号令既出, 不准怯者独止, 如此则功罪明而心志一也”。《内务条令》第63条规定:“部属对命令必须坚决执行, 并将执行情况及时报告首长”。下级必须无条件的服从上级命令, “如果认为命令有不符合实际情况之处, 可以提出建议, 但在首长未改变命令时, 仍须坚决执行”。强调军事命令的不可违抗性, 意在阐明军事命令的强制性。除此之外还规定, 下达命令的权利和承担的义务是不可离分的, 拥有某项权利的同时也在承担某种义务。义务也是强制性的, 如上级下达命令时, 就必须对命令执行的后果负责;而下级在执行上级的命令时, 也必须秉着高度负责的态度完成军事命令, 并对由于自己原因而产生的后果承担军事责任。
(三) 单向性。
军事命令只能由上级的机关或个人向低层次的机关或个人发出。《内务条令》中“部属、下级必须服从首长、上级”。因此, 在命令的下达途径上, 只能是单向的。除此之外, 也是上级依法作出的单方意思表示, 并不需下级的认可或同意。
(四) 层次性。
《内务条令》第62条:“首长有权对部属下达命令。命令通常按级下达, 情况紧急时, 也可以越级下达。越级下达命令时, 下达命令的首长, 应当将所下达的命令通知受令者的直接首长。”越级下达命令只是一种特殊的情势, 只存在于情况紧急时。63条规定, 对于越级下达的命令, 也必须坚决执行。军事命令的层次性对于维护军事秩序具有极其重要的作用。
(五) 机动性。
《唐律疏议》中“军中号令, 理贵机速, 用舍从权, 务在成济”。《内务条令》第63条规定:“执行中如果情况发生急剧变化, 原命令确实无法继续执行而又来不及或者无法请示报告时, 应当根据首长总的意图, 以高度负责的精神, 积极主动地机断行事, 坚决完成任务, 事后迅速向首长报告。”这一规定赋予了下级执行命令时的临时处断权, 说明军事命令在实施的过程中是具有机动性的。客观条件并非是固定不变的, 特别是在紧急情况下, 更是瞬息万变的。而军事命令的作出, 由于受到主客观的限制并非能准确符合变化了的实际情况, 因而需要下级在执行命令的同时, 要履行注意的义务。更好地完成任务为目标, 灵活处理突发状况。
三、军事命令的法律属性
对于军事命令的法律地位, 既有肯定说, 认为军事命令具有法的属性, 就是法律;又有否定说, 认为不能将命令视为法, 因为其不具备法的一般特性。在阐述了军事命令的概念与特征之后, 对其法律地位, 应具体分情况分析。
要确定军事命令的法律地位, 首先要明确军事命令是否具有法的一般属性。法的一般属性是指一般意义上的法所固有的, 体现法的基本特征。主要有:规范性、国家意志性、国家强制性、普遍性、权威性、程序性和稳定性等。在分析军事命令的特征之后, 笔者发现军事命令在国家强制性、权威性等方面与法的特征是相一致的, 但对于其它属性要具体问题具体分析。
首先, 从国家意志性来看, 有军事立法权的机关制定发布的军事命令具有法的地位, 因为其法律效力直接来自于宪法与法律赋予的立法权。如2010年的《内务条令》就是由中华人民共和国中央军事委员会的命令发布的。中央军委有宪法赋予的立法权, 其所发布的命令就具有法的属性。除此之外, 不具有立法权的军事机关或首长发布的军事命令则不具有法的属性, 因其法律效力是来自于已经制定和发布的法律、法规和规章的效力, 虽然其发布的命令依然具有执行性, 但因其不具有立法权, 所以不能算作是法律。其次, 从普遍性来看, 在有立法权的军事机关所发布的军事命令中, 也并非全部都有法的属性。以命令形式发布的规定、条例、办法等, 其规范的对象是不确定的人或事, 并且可以重复适用, 是法的普遍性特征, 因此具有法的属性。另一种针对具体的人或事所做的命令, 因其不具有法的效力的重复性, 就不具有法的普遍性, 不能算作是法。
再次, 从稳定性来看, 创设法律的目的是国家为了保护、巩固和发展对于统治阶级有利的社会关系和秩序, 要求法具有稳定性。而军事命令具有机动性, 如《内务条令》63条中, “执行中如果情况发生急剧变化, 原命令确实无法继续执行而又来不及或者无法请示报告时, 应当根据首长总的意图, 以高度负责的精神, 积极主动地机断行事, 坚决完成任务, 事后迅速向首长报告”。
因此, 军事命令的法律地位要具体条件具体分析, 不能盲目地将一切军事命令当作法律实行, 但也不能忽视军事命令的作用。明确军事命令的法律地位可以更好地使命令下达者摆正自己位置, 有利于执行者明确执行任务的依据。
参考文献
[1]刘春玲:《军事命令概念的法学解析》, 《法制与社会》, 2010, 1。
[2]钱寿根:《军事法理学》, 国防大学出版社, 2004, 307。
[3]夏勇:《中国军事法学基础理论研究》, 中国财经出版社, 2005, 221。
[4]邓三土:《军队行政监察新论》, 解放军出版社, 2003, 44。
[5]杨福坤、朱阳明:《军事法学词典》, 国防大学出版社, 1993, 238。
[6]刘春玲:《军事命令概念的法学解析》, 《法制与社会》, 2010, 1。
Linux系统关机命令详解 篇7
学习Linux系统环境下的关机命令首先就要先了解Linux的运行级别, Linux系统有7个运行级别:
#0系统停机, 这个千万不能设置为系统默认的运行级别, 如设为系统默认运行级别, 系统就不能正常启动, 机器关闭。
#1单用户工作状态, 这是root权限, 用于系统维护, 禁止远程登陆。
#2多用户状态, 没有NFS支持。
#3完整的多用户模式, 有NFS, 登陆后进入控制台命令行模式。
#4系统保留一般不用, 在一些特殊情况下可以用它来做一些事情。
#5 X11控制台, 登陆后进入图形GUI模式, X Window系统。
#6系统正常关闭并重启, 不能设为默认运行级别, 否则不能正常启动。
Linux是一种网络操作系统, 所以在其中包含有许多服务器脚本程序, 它们存储于目录/etc/rc.d/init.d中, 我们统称为service。其中有7个以rc N.d为名的目录, 与系统的7个运行级别一一对应。在rc N.d目录中存储的都是指向存储于init.d目录中的service的符号链接文件, 以K+nn+服务名或S+nn+服务名为文件名, nn为两位数字。
Linux操作系统在登录系统或者关闭系统时都要调用系统设置的运行级别, 才能进行相关的操作。Linux系统中有三个与关机相关的命令, 它们分别是shutdown, halt和reboot, 下面我们就分别详细说明一下:
Shutdown:
作用:关闭计算机系统, 并切断计算机电源关机。只有超级用户才能使用。
格式:shutdown[-h][-t][-k][-i][-m]
主要参数:
-h:关机后关闭电源。
-t:在系统运行级别改变以前, 通知init系统关机时间。
-k:只是给每位登录用户送出关机警告信号, 但并不真正关机。
-i:关闭操作系统时显示系统信息。
-time:设定关机前的时间。
-c:取消当前正在执行的关机操作程序。因此这个选项不带时间参数, 但是可以输入信息, 而输入的信息就会送达每位登录者。
-F:强迫系统在重启计算机时进行fsck。
-m:把系统改为单用户模式。
在这里我们需要说明的是Linux操作系统需要安全的关闭, 使用shutdown命令就可以安全地关闭Linux系统。但在实际中, 有些新人会用直接切断电源的方法关闭Linux系统, 长期使用这种方法对Linux系统来讲是十分危险的。因为Linux与Windows不同, 在其运行时后台运行着许多进程, 当关机时这些进程都要把数据回写到硬盘中, 所以切断电源关机就可能会导致进程的数据丢失, 使系统处于崩溃的边缘, 更甚者会直接损坏硬盘。
与shutdown命令作用相似的命令还有halt。
halt
作用:系统关闭命令。只有超级用户能使用
格式:halt[-n][-i][-f][-w][-p][-d]
主要参数
-n:只有在使用fsck程序修补过根分区之后才能用到这个参数, 主要作用就是防止内核用修补之前的超级块覆盖已修补过的超级块。
-i:关机 (或重启) 前, 关掉所有的网络接口。
-f:强迫关机或重启。
-w:并不是真正的重启或关机, 只是往/var/log/wtmp写纪录。
-p:执行关机操作时顺便切断机器电源。
-d:关闭系统时不留下纪录。
其实halt命令执行的操作就是shutdown-h。halt命令执行时, 会杀死应用进程, 执行sync系统调用, 把buffer中的数据强制写入硬盘, 当检测到文件系统写操作完成后就会停止内核。如果这时系统的运行级别为0或6, 就关闭系统;否则就会执行shutdown指令 (加上-h参数) 。
在Linux中的第三个与关机有关的命令就是reboot
Reboot
作用:重新启动计算机。只有超级用户才能使用。
格式:reboot[-n][-w][-d][-i]
主要参数:
-n:在重启计算机时不把内存中的数据写回硬盘。
-w:不是真的重启计算机, 只是把系统重启记录写入/var/log/wtmp文件里。
-d:不把重启记录写入/var/log/wtmp文件里, 其实已经包含在-n这个参数里了。
-i:在重启计算机之前把所有与网络有关的设备停止。
参考文献
利用命令行IPSEC封锁端口 篇8
关键词:制作网络,IPSEC,端口
随着各电视台数字化、网络化进程的不断推进, 原来模拟时代的视、音频信号传输方式也发生了很大的变化。在过去, 各地的新闻回传是由工作人员把制作好的节目磁带利用录像机通过光纤或者电缆进行传输的。然而, 随着各电视台非线性制作网络的建立, 这一工作就变得很繁琐。由于节目制作全都是在非线性编辑系统中完成的, 因此, 工作人员首先需要把制作好的节目通过下载工作站下载到录像带上, 然后再拿着录像带到传送机房使用放像机通过光纤或者电缆进行传输。接收节目的电视台同样还需要把录制好的节目再一次通过放像机重新上载到本地非编网中。那么为什么不直接传送制作好的节目数据呢?这是因为在电视台中, 为了保证制作网的安全, 内网和外网是要求严格物理隔离的。那么有没有其他解决的办法呢?
为了方便接收各地回传的节目, 我们专门使用一台计算机来做FTP服务器。由于该机直接与外网是相连接的, 同时该机又需要与制作内网的机器进行文件交换, 为此我们对该机器的使用作了严格的规定。与内网相连的网线采用了随用随接, 用完即断的连接方式, 在制作内网上的工作人员每次需要下载该服务器上节目的时候便把网线连接上, 完成之后, 随即断开这一连接。同时我们还对该机器设置了严格的端口限制, 防止非法入侵。下面就详细说明一下利用命令行下的IPsec配置工具对计算机端口进行限制。
IPsec:Security Architecture for IP networkIP是一种开放标准的框架结构, 通过使用加密的安全服务以确保在Internet协议 (IP) 网络上进行保密而安全的通讯。关于IPsec的原理在此就不做过多说明, 由于我们采用的是Windows 2000作为FTP服务器的, 因此, 这里主要介绍Windows 2000下IPsec配置工具--IPSECPOL.EXE, 它是一个用于创建、指派和删除IPSec策略的命令行程序。它工作的时候还需要另外两个DLL, 它们是text2pol.dll和ipsecutil.dll, 只要把这两个DLL同IPSECPOL.EXE一并复制到需要配置的机器上去就行了。
1 常用参数介绍
-w TYPE:DOMAIN:确定策略写入的位置, 一般选择REG, 也就是注册表。
-p PolicyName:PollInterval:策略名。
-r RuleName:规则名称。
-f:设置规则。
-x:指派该策略。
-y:不指派 (停止) 该策略。
-o:删除该策略。
其中-w, -f, -n的参数是区分大小写的, 都要使用大写。配置和指派上来讲也就用到这几个, 其余的在此就不多说了。
2 使用范例
1) 阻止所有地址的所有端口到本机所有端口的通信 (比如本机是重点保护对象)
2) 阻止任何主机的任何端口对192.168.0.88的TCP 135端口的通信
3) 阻止1.2.3.4的TCP 2938端口连接本机的6667端口 (比如1.2.3.4在irc上捣乱)
4) 阻止本机TCP 3333端口连接任何主机的任何端口 (比如本机3333端口是反弹连接的后门所开)
上面的例子是阻止的, 如果设置通行的话, 只要把-n BLOCK改成PASS即可。其中=前面的是源地址, 后面是目的地址。如果使用+, 则表明此规则是双向的。IP地址中用*代表任何IP地址, 0代表我自己的IP地址。
3 注意
因为上面的例子中每一句都是独立的, 所以要配置多条规则的时候, 应该一行多几个-f, 而不是分多行输入, 因为每一次都会覆盖掉上一次的, 比如:
要禁止任何主机的任何端口连接本机的TCP 6666, 又要禁止任何主机的任何端口连接本机的TCP 8888, 那么应该是这样:
而不是:
这在写脚本的时候尤其应该注意。还有就是-f中某个参数缺省的话, 就代表所有端口或协议。
4 指派、不指派和删除
对于配好的策略来讲, 还要指派后才能生效, 所以我们就:
如果要停止一个已经指派了的策略, 那么就:
如果要删除这个策略, 那么就:
在删除某个策略的时候, 应该先停止那个策略 (-y) 。删除时会包括所有相关的筛选器列表和筛选器操作。
设置一台机器可能会有许多条的配置, 因此编写一个脚本不但可以很方便、直观地设置该机的安全配置, 同时给一台以上机器配置IPSEC的时候带来极大方便, 还可以根据每台机器的不同要求, 简单更改就可以轻松搞定, 下面是我们bat的例子:
为了禁止工作人员使用该机器上网, 为此我们除了禁止访问80端口外还禁用了iexplore.exe和regedit.exe, 并且在指派安全策略之后自动注销机器并设置了自动登陆。同时还关闭了系统默认共享文件夹, 下面是注册表修改文件:
通过上面的技术手段, 我们把系统安全隐患降低到最低限度。不但能方便、高效地进行节目传输, 同时最大程度降低了我们的运维成本。当然, 任何的技术手段都不可能确保系统的永远安全, 我们必须随时关注安全动态, 不断完善安全措施, 提高警惕, 只有这样才能真正做好网络安全工作。
5 结论
网络安全是一个系统工程, 不能只依靠一个杀毒软件, 或者几条安全策略。安全实施的主体是人, 只有树立人的安全意识, 不断学习, 提高业务水平, 才能最大程度地保证系统的安全, 确保系统高可靠性和高可用性。
参考文献
路由配置命令识别诊断技术研究 篇9
关键词:配置管理,命令集,无关性,识别
0、引言
计算机网络技术的发展使网络的规模正以几何级数的速度飞快发展, 从而导致网络系统的规模和复杂程度越来越大, 而各种网络设备的配置命令又呈多样化和复杂化, 所以因配置引起的网络错误是很难被网络管理员发现的, 而目前国内外还没有专门用于网络设备配置管理的系统作为网管员的助手, 网络故障还是靠网管员的经验手工排除, 这样就迫切需要开发一个专门用于网络设备配置故障管理的专家系统, 以适应日益壮大的计算机网络, 本文提出了基于DFA (Deterministic Finite Automata, 确定有穷自动机) 理论[2]的配置命令集无关性算法, 使配置管理智能系统能够应用于多种类型多种型号网络设备的配置管理中;同时提出了能够用于多种类型 (比如路由器、交换机、防火墙等) 和多种型号网络设备的算法———基于DAG (Directed Acycline Graph, 有向无环图) 理论[3]的配置命令识别算法, 明显提高了系统的运行效率。
1、系统概要与设计
1.1 网络设备配置命令单词符号的特点
网络设备的配置命令是一种相对没有严格控制结构和语法规则的文本语言, 它的单词符号一般有以下四种:
关键字:由生产厂家定义的具有固定意义的标识符;
标识符:用来表示各种名字, 如网络设备名、用户名等;
整形常数:用来表示IP地址、端口号等类型的整数;
界符:如圆点、感叹号等。
每一条配置命令都是由以上符号组成的, 网络设备配置后所形成的文本文件中, 命令与命令之间有换行符, 单词与单词之间有空格字符, 这些都为我们的研究工作提供了很大方便。
1.2 命令识别器的设计及工作原理
如图1所示, 命令识别器有5部分组成, 其中我们设计了一个工程师接口, 在该接口中要求配置工程师告诉识别器用来诊断的网络设备的命令集, 工程师根据规则输入包含可选参数在内的完整的命令对象, 并以特定的表示方式表示出在该命令对象中的可选配置参数和整型数据、标识符部分, 由于整型数据和标识符的长度具有变动性, 故在工程师接口中我们将其处理为一个不可分割的元素, 并以特定的方式告知识别器。
识别器的工作包括两部分, 首先由支持程序处理工程师所给的命令集, 并将其构建为命令状态转换图, 即由命令无关性算法处理的部分;其次是识别程序调用扫描器读入配置文本, 通过查询命令状态转换图, 识别配置命令并作相应标注等处理, 即配置命令识别算法处理的部分。这样处理的系统设计, 首先解决了命令集无关性的问题, 其次大大缩短了识别命令的处理时间, 提高了系统识别处理的效率。
2、配置命令集无关性算法
2.1 词法分析器的DFA原理
计算机程序语言是一种有确定控制结构和严格语法规则的指令集, DFA (Deterministic Finite Automata, 确定有穷自动机) 理论是设计程序语言编译器的词法分析程序的一种途径, 它就像一张状态转换图, 用于识别 (或接受) 一定的字符串。下面给出关于DFA的定义[2]。
定义1:一个确定有穷自动机 (DFA) M是一个五元式:M= (S, ∑, δ, S0, F)
DFA思想在各种计算机程序编译器的词法分析中得到广泛应用, 但各种编译器只能用于一种程序语言的编译, 为增强文献[1]中智能诊断系统的可移植性本文提出了一种新的命令集无关性算法。
2.2 基于DFA思想的配置命令集无关性算法
令集合C表示系统提供给配置工程师用于输入设备配置命令的集合, 该集合初始为空, 工程师可以向集合中添加命令对象, 算法简要描述如下 (算法1:)
0) 预处理:删除C中的所有的空格和回车符;
1) 若C非空, 顺次读取C中的一条命令L (有符号%隔开) ;否则, 退出程序;
2) 若L非空, 顺次读取L中的一个字符w;若为空, 转到1) 继续执行;
3) 若w!=’|’, 则T=T+w, 即在图T的基础上 (T初始为空) 构建一个以root为根, 一个字符为一个节点, 没有重复兄弟节点的新图T;否则转到4) 执行;
4) 若符号w==’|’, 且为首次出现, 则令q指向w的前一个节点, 转到2) 执行;若为期待的第2个符号|, 则将q指向的字符和符号|后的字符建立连接, q=null, 转到2) 执行;
2.3 算法示例
假设现有以下几条命令:
经算法1处理后形成的图如图3所示 (除开始根节点和终态节点外其余各字符均省略了圆圈, 双圈表示终态并有一个相应的执行动作) :
工程师再往命令集C中添加命令, 图3的状态图会随即更新。
该算法在支持程序中实现。按照该算法将集合C中的符号读取完毕之后, 将会形成一个包含一个根节点, 若干个终态叶子节点, 没有相同兄弟节点的配置命令状态图;当工程师继续往集合C中添加新的命令, 使用此算法能随时更新状态图。不同的命令集将生成不同的配置命令状态图。
3、配置命令识别算法
3.1 有向无环图及其在识别器中的应用
有向无环图DAG (Directed Acycline Graph) , 是一个有向的无环图[3], 如图4所示。
实际上, 由命令无关性算法生成的状态转换图就是一个有向无环图, 所以我们的识别算法就可以构建在DAG的基础上。
3.2 基于DAG的配置命令识别算法
如果已经构建好了配置命令状态转换图, 就可以使用以下算法识别出网络设备配置文本中的命令对象。算法描述如下:
算法2:
0) 调用扫描器预处理配置文本 (设为集合S) ;
1) 若S非空, 顺次在T中读取一条命令 (命令间有回车符隔开) L;否则退出程序;
2) 若L非空, 顺次读取L中的一个单词 (单词间有空格或圆点隔开) W;若L为空, 且在状态转换树T中匹配查找到一个终态叶子节点, 则完成对L命令执行识别标注, 转到1) 执行;
3) 若W为L的第一个单词, 则从T的root的直接子节点依次匹配查找W中的字符;若W非为L的第一个单词, 则紧接其上一字符顺次往下匹配查找;在以上两种情况中, 若无相匹配字符, 则转到4) 执行;
4) 查找出现不匹配情况的兄弟节点中是否有¥或$符号, 若有, 视W的词性 (标识符或数字) 相应匹配, 转到2) 执行;
以上算法将能识别出配置文本所用到的所有属于集合C中的命令对象, 从而为智能诊断该设备的配置做好了准备。
3.3 算法示例
假设在数据库中存在以下一个DAG图 (即算法1生成的状态图) 如图5所示 (规定同图3) :
在已预处理的配置文本中读取一条命令:ip address 10.1.1.1 255.255.255.0;逐个单词的匹配查找处理后 (将数字式单词与$字符相匹配, 并将单词的值另外存储) , 最终会和图5中的以$为符号的终态节点相匹配, 然后执行一个终态识别的操作, 就会识别出它是一条配置IP地址的命令。
4、系统及算法分析
配置命令识别系统的最大特点是解决了配置命令集无关性的问题, 在数据库中可以储存多种类型设备的配置命令集, 在不同的设备上可以使用不同的命令集, 系统就可以在多种网络设备上运行, 但同时为工程师增加了维护工作, 因为需要他提供具体的命令集;但该系统的设计使得配置文本命令的识别变得简单而又高效, 算法1主要在后台运行, 不占用具体配置文本的识别时间, 算法2工作在前台, 主要通过匹配查找实现命令对象的识别。总之本文识别器的设计与算法实现为构建和命令集无关的网络设备诊断系统做好了基础技术准备。
参考文献
[1]常景超, 陶滔, 陈虹.路由器配置策略智能提取技术研究[J].计算机工程.2008.7
[2]陈火旺等.编译原理[M].3版.北京:国防工业出版社.2000.
[3]Mark Allen Weiss.Data Structures and Algorithm Analysis in C[M].北京:机械工业出版社.2004.
[4]L Yuan, J Mai, Z Su, et al.FIREMAN:A Toolkit for FIREwallModeling and ANalysis.IEEE Symposium on Security and Privacy, 2006.