• 2006-05-08

    平淡人生

    生命是个圆心,由生到死,从起点到终点,每个人都想逃,但最终还是回到起点,哭着来笑着去,赤条条的来一无所有的去。缘份也是个圆心,云淡风轻的起,平平淡淡的终,不管中间经历了什么发生了什么,最终平淡才是人生的真谛。 
      我们有着平凡的外表,有着平凡的家境,有着和大多数平凡人同样的平凡经历。我们为得而喜为失而痛,我们有我们爱的人也有我们恨的人,我们时常在不经意中甜蜜着曾经的甜蜜,迷惘着末知的迷惘。我们希望在自己平凡的生命中会有一些不同于别人的地方,也就是说在平凡中要透出一丝丝的不平凡。

      于是我们去爱,爱那个不能爱却很想爱的人,我们朝朝暮暮的期盼,盼着那种蓦然回首却在灯火烂珊处的惊喜与默契,也许就是因为他不能爱,所以我们更想去爱,我们忽略了一直陪在我们身边的亲情、友情、人情,我们痛恨一切对这段感情阻挠的力量,我们为了拥有而争取,为了得到而付出,甚至天真的以为这就是曾经沧海,除却巫山。以为这段感情是世间上独一无二的,是与众不同的,是不平凡的,是可以影响一生一世的。直到有一天,我们都倦了,累了,惊觉自己正在与周边的人和事脱节,发觉原来彼此相对的也只是一个平凡人,有着平凡人的思想平凡人的智慧,平凡人的嗜好平凡人的坏习惯。更发觉原来世间上还有着许许多多和我们同样经历的男人女人正在开始着、结束着他们的缘份。渐渐的,我们安静了下来,渐渐的我们走入了各自生活的轨道,渐渐的我们习惯偶尔的想起对方淡淡的莞尔一笑。 

      日复一日,年复一年,经过风雨的历练,我们成熟了,知道自己的平凡是不能靠一些小恩小爱而改变成千古绝唱。我们要在平凡中牵着身边那双平凡的手,过着油盐柴米,家长里短的日子。我们依然会羡慕有钱人的奢侈,崇拜名人伟人的光辉,时不时的为自己的幻想玩笑几句,但是在夕阳下黄昏后,还是会开一屋温暖的灯光,等着那个还没有归家的平凡人。

      最终我们心甘情愿地平凡着我们的平凡

  • 在SnagIt中实现滚屏截图有二种方法,此处试以截取网页为例作说明。

    第一种方式:自动滚屏截取(Auto Scroll)

    1.在SnagIt主面板中点击[Image Capture];


    图1

    2.选[Input]菜单为[Windows];


    图2

    3.再次选择[Input]菜单,选中[Auto Scroll];


    图3

    4.打开某网页,按下热键Ctrl+Shift+P,一个红色的方框将罩住网页页面,此时鼠标变为

    5.点一下鼠标左键,这时鼠标变成漏斗状。稍等,运行中……页面开始自行滚动,一直到页面底端终止。

    6.出现截图预览窗口,已成功截取。:-)

    第二种方式:自定义滚动(Custom Scroll)

    1.在SnagIt主面板中点击[Image Capture],如图1所示;

    2.选[Input]菜单为[Advanced]-->[Custom Scroll],选后[Auto Scroll]变成灰色,不可用。


    图4

    3.打开页面,按下热键Ctrl+Shift+P后鼠标变成状,按住不动,在页面中将拖出一个截取区域后松开,其鼠标又变为状。

    4.将鼠标移至如图所示的滚动条中,点击滚动按钮松开,页面自动往下方滚动。


    图5

    5.当滚至页面末端,截图预览窗口出现,截图成功。^_^

    几个相关问题:

    1.无论是第一种还是第二种方式,都是截取的垂直滚动的网页,如果要截取水平滚动的页面,该怎么办?其实很EASY,在菜单[Input]中有个选项[Properties],打开它,点击[Scrolling]标签,把[Scroll]设为[Horizontal]即可。


    图6

    2.第二种方式不仅可以用来截取网页,更多的却是用于截取对话窗口中的List列表,如图所示。


    图7

    3.若截图过程中出错,可以考虑设置滚屏延时,如图6所示,将[millisecond]前面的数值加大就OK了。加到多少才合适?嘿嘿,这可要视具体情况而定,自己动手试一试吧……

  • 软件测试员的目标是找出软件缺陷,尽可能早一些。

    软件测试员的一个基本素质是:打破沙锅问到底。

    大多数软件测试员应具备的素质:

    1.探索精神:软件测试员不会害怕进入陌生环境。
    有较强的学习能力,可以用最快的速度成为一个新的行业的专家(就像 jerod 那样)。

    2.故障排除能手:软件测试员善于发现问题的症结,喜欢猜谜。可以迅速的通过事物的表面现象发现事物的本质,能够从琐碎的现象中发现内部的联系和规律。

    3.不懈努力:软件测试员总是不停尝试。他们可能会碰到转瞬即逝或者难以重建的软件缺陷;他们不会心存侥幸,而是尽一切可能去寻找。
    只要出现过的缺陷,就说明一定是存在的,找不到只能说明没有能够真的重新当时的环境和全部的操作细节。测试人员要能够敏感的察觉到细微的变化,并立即开始在大脑中努力重现之前的整个场景。把残存的瞬间记忆整理在纸上,通过分析,把这些碎片整理起来,最终找到缺陷重现的场景和规律。牢记:在做这样的事情之前给自己制定一个规则,例如只花费N多时间来努力重现这个缺陷,如果超过这个时限还没有找到,那么就把当前的工作整理成一份文档保留下来,然后去按计划继续进行下面的工作,直到再次“偶遇”这个缺陷。

    4.创造性:测试显而易见的事实,那不是软件测试员;他们的工作是想出富有创意甚至超常的手段来寻找软件缺陷。
    虽然创造性是必需的,但是还是更建议把大多数时间放在熟悉真实用户的工作上,测试的基础是现实中已经存在的场景,在冥思苦想新的场景的时候,先同用户沟通一下,试图发现一些新的场景效率会更高一些。有很多事实并不是那么显而易见。

    5.追求完美:他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目标。
    做任何事情都应当有一个策略,分配给每项任务一个指标或者一部分资源(也就是说如果这件事情成功,那么它带来的收益值得我们付出的最大成本),当这部分资源耗尽时,就停止这项任务。

    6.判断准确:软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真正的缺陷。
    要不断的提高自己的专业素养,除了行业知识、测试专业知识以外,还要尽可能的去学习一些软件行业的基础知识,例如操作系统、数据库、程序设计开发、计算机网络等。

    7.老练稳重:软件测试员不害怕坏消息。其实做任何工作、任何事情都一样,人生就是一个不断的发现问题和解决问题的过程,没什么好怕的。

    8.说服力:软件测试员要善于表达观点,表明软件缺陷为何必须修复,并通过实际演示力陈观点。测试工作开展的好坏,很大程度上就靠沟通能力和展示自己工作的能力了。

    9.在编程方面受过教育。一个有过开发经历的测试人员,对系统的领悟能力和学习速度同没有开发经历的测试人员是截然不同的。
  • 一. 黑盒测试概述(2.10 黑盒测试)
    1.定义
    l 也称功能测试,它是通过测试来检测每个功能是否都能正常使用
    l 把程序看成一个黑盒子,完全不考虑程序内部结构和内部特性,着眼于程序外部结构,不考虑内部逻辑结构
    l 在程序接口进行测试,只检查程序功能是否按照需求说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息
    l 主要针对软件界面和软件功能进行测试
    2.试图发现的错误类型
    l 功能不正确或遗漏
    l 界面错误(输入能否正确的接受?能否输出正确的结果)
    l 数据库访问错误(如数据结构定义错误或外部信息(如数据文件)访问错误)
    l 性能错误
    l 初始化和终止错误
    3.黑盒测试用例设计方法
    (1) 等价类划分法:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类的其他值
    (2) 边界值分析法:通过选择等价类边界的测试用例。不仅重视输入条件边界,而且也必须考虑输出域边界
    (3) 错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法
    (4) 因果图法:从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输入或程序状态的改变),可以通过因果图转换成判定表
    (5) 判定表驱动法:利用判定表进行测试用例的设计
    (6) 正交试验设计法:使用已设计好的正交表格来安排试验,并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率
    (7) 功能图法:用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成
    二. 黑盒测试用例设计方法
    1.等价类划分法
    (1)划分基础:需求规格说明书中输入、输出要求
    (2)等价类:某个输入域的子集合;分为有效等价类和无效等价类
    l 有效等价类:指对于程序规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中的功能和性能
    l 无效等价类:与有效等价的定义恰巧相反
    (3)划分等价类原则(6条)
    序号 输入条件(数据) 划分等价类
    1 规定了取值范围值的个数 一个有效等价类两个无效等价类
    2 规定了输入值的集合规定了“必须如何”的条件 一个有效等价类一个无效等价类
    3 是一个布尔量 一个有效等价类一个无效等价类
    4 输入数据的一组值(n个),并且程序对每一个输入值分别进行处理 n个有效等价类一个无效等价类
    5 规定必须遵守的规则 一个有效等价类(符合规则)若干个无效等价类
    6 在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类
        
    (4) 列出等价类表
    在确定了等价类之后,建立等价类表,列出所有划分出的等价类
    输入条件 有效等价类 无效等类
    …… …… ……
    (5) 确定测试用例步骤
    l 第一步:为每个等价类规定一个惟一的编号
    l 第二步:设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
    l 第三步:设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
    小结:采用等价类划分方法设计测试用例,按照划分等价类、列出等价列表、确定测试用例三个步骤完成,目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。
    2.边界值分析法
    (1) 边界类型
    l 边界条件:可以在产品说明书中有定义或者在使用软件过程中确定
    l 次边界条件:在软件内部,也称为内部边界条件
    l 其他边界条件:如输入信息为空(对于此类问题应建立单独的等价类空间)、非法、错误、不正确和垃圾数据
    (2)边界值的选择方法(遵循原则)
    序号 输入条件(数据) 输入边界值数据
    1 规定了取值范围 刚刚达到这个范围刚刚超越这个范围
    2 规定值的个数 最大个数、比最大个数大1最小个数、比最小个数少1
    3 根据规格说明书的每个输出条件,使用 原则1、2
    4 输入或输出是个有序集合 集合的第一个、最后一个元素
    5 程序中使用一个内部数据结构 内部数据结构边界上的值
    6 分析规格说明,找出其他可能的边界
    (3)例子:
    l 允许文本输入1~255个字符:测试用例-1、255、254、0、256
    l 程序读写软盘:测试用例-文件很小、等于软盘容量限制之内、空、超过
    l 程序允许在一张纸上打印多个页面:测试用例-只打印一页,规定最大页,0页,大于允许最大页数
    3.错误推测法
    基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例
    4.因果图法
       侧重于输入条件的各种组合,各个输入情况之间的相互制约关系
    (1) 因果图设计方法
    从用自然语言书写的程序规格说明的描述中找出因果,通过因果图转换成判定表
    (2) 因果图导出测试用例步骤
    l 第一步:分析程序规格说明的描述中,哪些是原因,哪些是结果。原在因常常是输入条件或是输入条件的等价类,结果是输出条件
    l 第二步:分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的‘因果图’
    l 第三步:标明约束条件
    l 第四步:把因果图转换成判定表
    l 第五步:为判定表中每一列表示的情况设计测试用例
    (3) 因果图基本图形符号
    通常在因果图中,用Ci 表示原因,Ei表示结果,各结点表示状态,可取值0(状态不出现) 或1(某状态出现)
    l 恒等:若原因出现,则结果出现;若原因不出现,则结果不出现
    l 非(~):若原因出现,则结果不出现;若原因不出现,则结果出现
    l 或(V):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现;
    l 与(∧):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现
    (4) 因果图的约束符号
    从输入(原因)考虑四种约束
    l E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立
    l I(包含):表示三个原因中至少有一个必须成立
    l O(惟一):表示两个原因中必须有一个,且仅有一个成立
    l R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现
    从输出(结果)考虑一种约束
    l M(屏蔽):两个结果,a为1时,b必须是0,当a为0时,b值不定

    2005-4-19
    5.判定表驱动法
    (1) 判定表:是分析和表达多逻辑条件下执行不同操作的情况的工具
    (2) 判定表组成
    l 条件桩:列出了问题的所有条件
    l 动作桩:列出了问题规定可能采取的操作
    l 条件项:列出针对它所列条件的取值,在所有可能情况下的真假值
    l 动作项:列出在条件项的各种取值情况下应该采取的动作
    l 规则:任何一个条件组合的特定取值及其相应要执行的操作
    注:判定表中贯穿条件项和动作项的一列就是一条规则;
    (3) 判定表的建立(步骤)
    l 第一步:确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n种规则
    l 第二步:列出所有的条件桩和动作桩
    l 第三步:填入条件项
    l 第四步:填入动作项。制定初始判定表
    l 第五步:简化。合并相似规则或者相同动作
    (4) 适合使用判定表设计测试用例的条件
    l 规格说明以判定表的形式给出,或很容易转换成判定表
    l 条件的排列顺序不影响执行哪些操作
    l 规则的排列顺序不影响执行哪些操作
    l 当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
    l 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要

    2005-4-20
    6.正交试验法
    (1) 概述
    l 从大量的试验数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法
    l 使用已造好的表格“-”正交表来安排试验并进行数据分析的一种方法
    l 因子:影响实现指标的条件
    l 因子的状态:影响实现因子的条件
    (2) 优点
    l 节省测试工时
    l 可控制生成的测试用例的数量
    l 测试用例具有一定的覆盖率
    (3) 设计步骤
    l 提取功能说明,构造因子‘-’状态表。
    l 加权筛选,生成因素分析表;
    l 利用正交表构造测试数据集,正交表的推导依据Galois理论
    L:代表正交表,L8(27)代表7为因子数,2为因子的水平数,8为此表行的数目(试验次数)
    行数为mn型的正交表中,试验次数(行数)=∑(每列水平数-1)+1
    例:5个3水平因子及一个2水平因子,表示为35*21,试验次数=5*(3-1)+1*(2-1)+1=12,
    即L12(35*2)
    7.功能图法
    (1) 程序功能说明的组成
    l 动态说明:描述输入数据的次序或转移次序
    l 静态说明:描述输入条件和输出条件之间的对应关系
    (2) 功能图:由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来表示。一个状态指出数据输入的位置(或时间),一个迁移指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能
    (3) 功能图法概述
    l 用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例
    l 功能图模型由状态迁移图和逻辑功能模型构成
    v 状态迁移图:用于表示输入数据序列以及相应的输出数据;由输入数据和当前状态决定输出数据和后续状态
    v 逻辑功能模型:用于表示在状态中输入条件和输出条件的对应关系。由输入数据决定输出数据。此模型只适用于描述静态说明
    l 功能图测试用例由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满中的一对条件组成
    (4) 测试用例生成方法
    从状态迁移图中选取测试用例,用节点代替状态,用弧线代替迁移,状态图就可转化成一个程序的控制流程图形式
    (5) 测试用例生成规则
    为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,在一个结构化的状态迁移(SST)中,定义3种形式的循环:顺序,选择和重复
    (6) 功能图生成测试用例步骤
    l 生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成
    l 测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径
    l 测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
    l 测试用例的合成算法:采用条件构造树
    8.场景法
    (1) 基本流和备选流
    采用此方法进行设计时,需要进行场景的设计,在场景中采用基本流和备选流表示经过用例的每条路径
    l 基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)
    l 备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入到基本流中;(各种错误情况)
    (2) 设计步骤
    l 根据说明,描述出程序的基本流及各项备选流
    l 根据基本流和各项备选流生成不同的场景
    l 对每一个场景生成相应的测试用例
    l 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
    三. 黑盒测试用例设计方法的选择策略
    1. 首先进行等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,这是减少测试量和提高测试效率的最有效办法
    2. 在任何情况下都必须使用边界值分析方法。此方法设计的测试用例发现程序错误的能力最强
    3. 可以用错误和推测法追加一些测试用例
    4. 对照程序的逻辑,检查已设计的测试用例的逻辑覆盖度,如果没有达到要求,应在补充
    5. 如果程序的功能说明中含有输入条件的组合情况,一开始就可以使用因果图法和判定表驱动法
    6. 对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果
    7. 功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的数据
    8. 对于业务流清晰的系统,可以利用场景法贯空整个测试案例过程,在案例中综合使用各种方法
    四. 测试用例的编写
    1. 测试用例概述
    (1) 定义
    l 将测试行为具体量化的方法之一
    l 设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果
    l 为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,
    l 一个好的测试用例是在于它能发现至今未发现的错误
    (2) 优点:
    l 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率
    l 测试用例的使用令软件测试的实施重点突出、目的明确
    l 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期
    l 功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升
    2.计划测试用例的目的
    (3) 计划测试用例,是达成测试目标的必由之路
    (4) 组织性:使测试用例具有组织性,便于全体测试员和其他项目小组人员有效地审查和使用
    (5) 重复性和跟踪,可以明确测试过程中测试用例的执行情况,保证测试的全面性
    (6) 计划测试用例,可以避免发布忽略某些测试用例的软件
    (7) 测试证实,正确的测试用例计划和跟踪提供了一种证实测试的手段
    3.测试设计说明
    (1) 定义:在测试计划中提炼测试方法,要明确指出设计包含的特性以及相关的测试用例和测试程序,并指定判断通过/失败的规则
    (2) 目的;组织和描述针对具体特性需要进行的测试,注:不给出具体的测试用例或执行测试的步骤
    (3) 包含的部分内容(来自ANSI/IEEE829   ANSI 美国国家标准化组织)
    l 标识符:用于引用和定位测试设计说明的惟一标识符
    l 要测试的特性:对测试设计说明所包含的软件特性的描述。还将明确出要间接测试的特性
    l 方法:描述测试的通用方法。如果方法在测试计划中描述,在测试设计说明中要详细描述要使用的技术,并给出如何验证测试结果的方法
    l 测试用例信息:用于描述所引用的测试用例的相关信息。如测试用例编号
    l 通过/失败规则:描述用什么规则来判定某项特性的测试结果是通过还是失败。
    4.测试用例说明
    (1) 定义(ANSI/IEEE829):编写用于输入的实际数据和预期结果,并明确指出使用具体测试用例产生的测试程序的任何限制
    (2) 包含的内容
    l 标识符:由测试设计过程说明和测试程序说明引用的唯一标识符
    l 测试项:描述被测试的详细特性、代码模块等
    l 输入说明:列举执行测试用例的所有输入内容或者条件
    l 输出说明:描述进行测试用例预期的结果
    l 环境要求:执行测试用例的软件、硬件、测试工具及人员等要求
    l 特殊要求:描述执行测试用例的特殊要求
    l 用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响
    5. 测试程序说明
    (1) 定义:明确指出为实现相关测试设计而执行具体测试用例和操作软件系统的全部步骤,有时也称为‘测试脚本说明’,即详细定义了执行测试用例的每一步操作
    (2) 包含的内容
    l 标识符:把测试程序与相关测试用例和测试设计相联系的惟一标识
    l 目的:本程序描述的目的以及将要执行的测试用例的引用信息
    l 特殊要求:执行测试所需的其他程、特殊测试技术或者特殊设备
    l 程序步骤:执行测试用例的详细描述,包括
    v 日志:指出记录测试结果和现象的方式
    v 设置:如何准备测试
    v 启动:启动测试的步骤
    v 程序:运行测试的步骤
    v 衡量标准:描述如何判断结果
    v 关闭:描述因意外原因页推迟测试的步骤
    v 终止:描述正常停止测试的步骤
    v 重置:说明如何把环境恢复到测试前的状态
    v 偶然事件:说明如何处理计划之外的情况
    在相关书籍中看到一个案例,关于黑盒测试用例设计,大家参与一下吧,题目在论坛中也有
    测试用例设计练习:
    1.采用因果图方法设计测试用例
    某个软件的规格说明中包含下面的要求:
    第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L,如果第二列字符不是数据,则给出信息M
  • 软 件 测 试 基 础
    一、软件测试概述

    软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

    软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。

    测试人员在软件开发过程中的任务:

    1、寻找Bug;

    2、避免软件开发过程中的缺陷;

    3、衡量软件的品质;

    4、关注用户的需求。

    总的目标是:确保软件的质量。

    二、常用的软件测试方法

    1. 黑盒测试

    黑盒测试顾名思义就是将被测系统看成一个黑盒,从外界取得输入,然后再输出。整个测试基于需求文档,看是否能满足需求文档中的所有要求。黑盒测试要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,它适用于对系统的功能进行测试。

    黑盒测试的优点有:
    1)比较简单,不需要了解程序内部的代码及实现;

    2)与软件的内部实现无关;

    3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;

    4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

    5)在做软件自动化测试时较为方便。

    黑盒测试的缺点有:
    1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;

    2)自动化测试的复用性较低。

    2. 白盒测试

    白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。如下例程序代码:

    HRESULT Play( char* pszFileName )

    {

    if ( NULL == pszFileName )

    return;

    if ( STATE_OPENED == currentState )

    {

    PlayTheFile();

    }

    return;

    }

    读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件)为空的话会出现什么情况;如果此时播放器的状态是文件刚打开,会是什么情况;如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一定能做到的事情。

    白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

    白盒测试的缺点有:

    1)程序运行会有很多不同的路径,不可能测试所有的运行路径;

    2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;

    3)系统庞大时,测试开销会非常大。

    3. 基于风险的测试

    基于风险的测试是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。有如下一个图,横轴代表影响,竖轴代表概率,根据一个软件的特点来确定:如果一个功能出了问题,它对整个产品的影响有多大,这个功能出问题的概率有多大?如果出问题的概率很大,出了问题对整个产品的影响也很大,那么在测试时就一定要覆盖到。对于一个用户很少用到的功能,出问题的概率很小,就算出了问题的影响也不是很大,那么如果时间比较紧的话,就可以考虑不测试。

    按此在新窗口浏览图片

    基于风险测试的两个决定因素就是:该功能出问题对用户的影响有多大,出问题的概率有多大。其它一些影响因素还有复杂性、可用性、依赖性、可修改性等。测试人员主要根据事情的轻重缓急来决定测试工作的重点。

    4. 基于模型的测试

    模型实际上就是用语言把一个系统的行为描述出来,定义出它可能的各种状态,以及它们之间的转换关系,即状态转换图。模型是系统的抽象。基于模型的测试是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统,过程如下图所示。

    按此在新窗口浏览图片

    三、软件测试的类型

    常见的软件测试类型有:

    BVT (Build Verification Test)

    BVT是在所有开发工程师都已经检入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确。如无大的问题,就可以进行相应的功能测试。BVT优点是时间短,验证了软件的基本功能。缺点是该种测试的覆盖率很低。因为运行时间短,不可能把所有的情况都测试到。

    Scenario Tests(基于用户实际应用场景的测试)

    在做BVT、功能测试的时候,可能测试主要集中在某个模块,或比较分离的功能上。当用户来使用这个应用程序的时候,各个模块是作为一个整体来使用的,那么在做测试的时候,就需要模仿用户这样一个真实的使用环境,即用户会有哪些用法,会用这个应用程序做哪些事情,操作会是一个怎样的流程。加了这些测试用例后,再与BVT、功能测试配合,就能使软件整体都能符合用户使用的要求。Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况。

    Smoke Test

    在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的 Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。在很多情况下,做Smoke Test是开发人员在试图解决一个问题的时候,造成了其它功能模块一系列的连锁反应,原因可能是只集中考虑了一开始的那个问题,而忽略其它的问题,这就可能引起了新的Bug。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。

    此外,Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等。

    四、微软的软件测试工作

    1. 基本情况

    测试在微软公司是一项非常重要的工作,微软公司在此方面的投入是非常巨大的。微软对测试的重视表现在工程开发队伍的人员构成上,微软的项目经理、软件开发人员和测试人员的比例基本是1:3:3或1:4:4,可以看出开发人员与测试人员的比例是1:1。对于测试的重视还表现在最后产品要发布的时候,此产品的所有相关部门都必须签字,而测试人员则具有绝对的否决权。

    测试人员中分成两种职位,Software Development Engineer in Test(测试组的软件开发工程师)实际上还是属于开发人员,他们具备编写代码的能力和开发工具软件的经验,侧重于开发自动化测试工具和测试脚本,实现测试的自动化。Software Test Engineer(软件测试工程师)具体负责测试软件产品,主要完成一些手工测试以及安装配置测试。

    2. 测试计划

    测试计划是测试人员管理测试项目,在软件中寻找Bug的一种有效的工具。测试计划主要有两个作用,一是评判团队的测试覆盖率以及效率,让测试工作很有条理的逐步展开。二是有利于与项目经理、开发人员进行沟通。有了测试计划之后,他们就能够知道你是如何开展测试工作的,他们也会从中提出很多有益的意见,确保测试工作顺利进行。总之,有了测试计划可以更好的完成测试工作,确保用户的满意度。

    测试人员在编写测试计划之前,应获得以下文档:

    1)程序经理编写的产品功能说明书或产品开发计划;

    2)程序经理或开发人员提供的开发进度表。

    根据产品的特性及开发进度安排,测试人员制定具体的测试计划。测试计划通常包括以下内容:

    1)测试目标和发布条件:

    a. 给出清晰的测试目标描述;

    b. 定义产品的发布条件,即在达到何种测试目标的前提下才可以发布产品的某个特定版本。

    2)待测产品范围:

    a. 软件主要特性/功能说明,即待测软件主要特性的列表;

    b. 特性/功能测试一览,应涵盖所有特性、对话框、菜单和错误信息等待测内容,并列举每个测试范围内要重点考虑的关键功能。

    3)测试方法描述:

    a. 定义测试软件产品时使用的测试方法;

    b. 描述每一种特定的测试方法可以覆盖哪些测试范围。

    4)测试进度表:

    a. 定义测试里程碑;

    b. 定义当前里程碑的详细测试进度。

    5)测试资源和相关的程序经理/开发工程师:

    a. 定义参与测试的人员;

    b. 描述每位测试人员的职责范围;

    c. 给出与测试有关的程序经理/开发工程师的相关信息。

    6)配置范围和测试工具:

    a. 给出测试时使用的所有计算机平台列表;

    b. 描述测试覆盖了哪些硬件设备;

    c. 测试时使用的主要测试工具。

    此外,还应列出测试中可能会面临的风险及测试的依赖性,即测试是否依赖于某个产品或某个团队。比如此项测试依赖性 WindowsCE这个操作系统,而这个系统要明年2月份才能做好,那么此项测试就可能只有在明年5月份才能完成,这样就存在着依赖关系。如果那个团队的开发计划往后推,则此项测试也会被推迟。

    3. 测试用例开发

    一个好的测试用例就是有一个合理的概率来找到Bug,不要冗余,要有针对性,一个测试只针对一件事情。特别是功能测试的时候,如果一个测试是测了两项功能,那么如果测试结果失败的话,就不知道到底是哪项功能出了问题。

    测试用例开发中主要使用的技术有等价类划分,边界值的分析,Error Guessing Testing。

    等价类划分是根据输入输出条件,以及自身的一些特性分成两个或更多个子集,来减少所需要测试的用例个数,并且能用很少的测试用例来覆盖很多的情况,减少测试用例的冗余度。在等价类划分中,最基本的划分是一个为合法的类,一个为不合法的类。

    边界值的分析是利用了一个规律,即程序最容易发生错误的地方就是在边界值的附近,它取决于变量的类型,以及变量的取值范围。一般对于有n个变量时,会有6n+1个测试用例,取值分别是min-1, min, min+1, normal, max-1, max,max+1的组合。边界值的分析的缺点,是对逻辑变量和布尔型变量不起作用,还有可能会忽略掉某些输入的组合。

    Error Guessing Testing完全靠的是经验,所设计的测试用例就是常说的猜测。感觉到软件在某个地方可能出错,就去设计相应的测试用例,这主要是靠实际工作中所积累的经验和知识。其优点是速度快,只要想得到,就能很快设计出测试用例。缺点就是没有系统性,无法知道覆盖率会有多少,很可能会遗漏一些测试领域。

    实际上在微软是采用一些专门的软件或工具负责测试用例的管理,有一些测试信息可以被记录下来,比如测试用例的简单描述,在哪些平台执行,是手工测试还是自动测试,运行的频率是每天运行一次,还是每周运行一次。此外还有清晰的测试通过或失败的标准,以及详细记录测试的每个步骤。

    4. Bug跟踪过程

    在软件开发项目中,测试人员的一项最重要使命就是对所有已知Bug进行有效的跟踪和管理,保证产品中出现的所有问题都可以得到有效的解决。一般地,项目组发现、定位、处理和最终解决一个Bug的过程包括Bug报告、Bug评估和分配、Bug处理、Bug关闭等四个阶段:

    1)测试工程师在测试过程中发现新的Bug后,应向项目组报告该Bug的位置、表现、当前状态等信息。项目组在Bug数据库中添加该Bug的记录。

    2)开发经理对已发现的Bug进行集中讨论,根据Bug对软件产品的影响来评估Bug的优先级,制定Bug的修正策略。按照Bug的优先级顺序和开发人员的工作安排,开发经理将所有需要立即处理的Bug分配给相应的开发工程师。

    3)开发工程师根据安排对特定的Bug进行处理,找出代码中的错误原因,修改代码,重新生成产品版本。

    4)开发工程师处理了Bug之后,测试人员需要对处理后的结果进行验证,经过验证确认已正确处理的Bug被标记为关闭(Close)状态。测试工程师既需要验证Bug是否已经被修正,也需要确定开发人员有没有在修改代码的同时引入新的Bug。

    5. Bug的不同处理方式

    在某些情况下,Bug已处理并不意味着Bug已经被修正。开发工程师可以推迟Bug的修正时间,也可以在分析之后告知测试工程师这实际上不是一个真正的Bug。也就是说,某特定的Bug经开发工程师处理之后,该Bug可能包括以下几种状态。

    已修正:开发工程师已经修正了相应的程序代码,该Bug不会出现了。

    可推迟:该Bug的重要程度较低,不会影响当前应提交版本的主要功能,可安排在下一版本中再行处理。

    设计问题:该Bug与程序实现无关,其所表现出来的行为完全符合设计要求,对此应提交给程序经理处理。

    无需修正:该Bug的重要程度非常低,根本不会影响程序的功能,项目组没有必要在这些Bug上浪费时间。

    五、成为优秀测试工程师的要求

    要成为一名优秀的测试工程师,首先对计算机的基本知识要有很好的了解,精通一门或多门的编程语言,具备一定的程序调试技能,掌握测试工具的开发和使用技术。同时要比较细心,会按照任务的轻重缓急来安排自己的工作,要有很好的沟通能力。此外,还要善于用非常规的方式思考问题,尽可能多的参加软件测试项目,在实践中学习技能,积累经验,不断分析和总结软件开发过程中可能出错的环节。这样,一名优秀的测试工程师就从软件测试的实践中脱颖而出了。

    结束语:微软的软件开发经验积淀深厚,微软工程师们的授课生动溢彩,其中有些内容是结合编程代码所作的详细讲解,较难用介绍性文字加以概括提炼,加之笔者受能力和精力所限,只能撷取部分精华内容整理成文以飨读者,因此难免是挂一漏万,甚至会有失误之处,敬请对本系列文章的关注者谅解及指正。最后对微软老师们的辛勤付出再表由衷谢意!

  • 提升男人气质的TIPS

    .倾听的奥秘
      智者说,在交谈中,把自己放低。低者,非低三下四也,而是用自己的耐心、自己的谦虚,营造一种适于信息流动的气氛。
      如果你摆出一副不可一世的姿态,别人如何敢畅所欲言?只有做到宽厚、包容,才能从最大的程度上赢得对方的尊重。
      愤青们老是挂在嘴边的一些话“不就是这个,我懂”、“别跟我说这个,不爱听”、“都老掉牙的东西了”……其实,关上的不仅是自己的耳朵,而且是一扇交际的大门。做一个好的倾听者是迈入中产的第一步,是否能从别人的话里得到商业奥秘或者炙手可热的八卦新闻都不是最重要的,关键是树立起了自己的“倾听者” 气质,一大群忠诚的朋友便会不请自来。
      TIPS:看着对方的眼睛,保持微笑,不时颔首;千万不要打哈欠;如果不幸走神儿了,没关系,立刻引用对方的最后一句话或者关键词,稍加模糊的评述即可。
      2.非常广泛的阅读使你自信
      作为中产预备人员,问自己一个问题:除了专业,我还会什么?
      一个在美国攻读学位的中国博士生,买一份上百页的华盛顿邮报,一般有三分之二是无法阅读的。为什么?单词量不够吗?非也,掌握的GRE的一万多生词应付这份报纸绰绰有余。
      答曰:没有相关的知识,无法理解。
      除了专业知识,你还懂什么?历史、地理、哲学、美学、雕刻、摄影、体育、烹饪……?
      如果不能很自信地从里面挑出几样,并且轻松地show show,那么要小心了,你很可能在不远的未来被划入“功能性文盲”类,并远远地被知识时代抛弃。
      TIPS:在业余时间里,少泡泡吧,少蹦蹦迪,赶快去书店买一些书,恶补一下。有目标地培养自己的一些兴趣,多给自己一片天空,让生活过得更加多彩。
      3.跟所有的人沟通是一门艺术
      在国外谋生的华人,虽说生活都渐渐赶上中产,但是始终无法进入自己周边的核心社会圈。于是,他们开始用一切可以用上的理由抱怨:“他们对我有偏见”, “他们的文化有狭隘性”……而实际的情况是:你不懂棒球,无法加入他们兴高采烈的对昨天比赛的讨论;他们一起参加慈善拍卖,你却认为此事大大地与自己无关;他们调侃明星、调侃科技,你被喷了一头雾水……
      真相是:你抛弃了你的社交圈,你拒绝为了沟通而改变自己,你拒绝和他们沟通。
      所谓沟通,其实是在交换可有可无的信息中传递一种感情信号,说得再通俗一点:你必须找到合适的话题,因为那就是你和他们互相了解的窗口。要成为成功的中产,你必须付出时间和精力来磨练自己的沟通能力:明天来访的客人对兰花情有独钟,那今晚你就从图书馆捧来一堆兰花的书通宵补补吧。
      TIPS:平时多多揣摩一下身边人的爱好与习惯,多在脑子里演练演练沟通场景,以备不时之需;而且,学会了对付一个人,就拥有对付所有这种类型人的能力了。
      4.成为一个有修养的中产
      是啊,现在都有秘书了,专业的文书都有专业人士代理,经理级以上的人物充其量也就是签签自己的名字而已,就算是写情书,网络上也有一大把供参考……
      诚然,写一笔好文章已不是成为一个有钱人的重要条件,甚至已逐渐被富人们所遗忘。但是,能够随意地用文字恰如其分地来表达自己的思想、情感,仍然是作为一个真正中产的必备条件。
      常有人戏言,听领导的报告,就是睡觉的最佳时间。
      为什么?因为很多高层的发言,枯燥无趣,没有丝毫品位而言。稿子都是秘书代写的,领导甚至眼一花,连“此处停顿,可能有掌声”都要读出来。
      真正有文学修养的中产,用一篇文字激扬的讲稿,一场群情激奋的演说,能使整个团体充满生气、活力和激情。
      5.你今天修理花园了吗
      中产阶层的人们并不缺钱花,他们有独立的车库和花园,难道付不起修车和剪草费吗?但是他们却宁愿花上星期六的大半天研究怎样修理发动机,甚至用一个周末大动干戈地招集朋友一起来粉刷墙壁。
      很显然,这是一种气质,一种生活的情趣。
      急于迈入中产的年轻人们,往往投入太多的时间去追求金钱和名誉。我们常常听到的声音是“管理处吗,我的电灯坏了,能不能派个人来看看?”朋友之间的聊天也常常以“我们那里的物业管理很好”为话题,而大肆渲染一番自己如何如何不用为小事而费尽周折。在这看似悠闲的“省事儿”中,你不仅丧失了解决周边生活问题的能力,也与培养自己“中产”气质的机会失之交臂。
      TIPS:不要求你学会自己做一套木质家具,但你很有必要从“学会怎样自己攒一部电脑”开始。至少你可以避免“因为上不了网而打电话给网络公司大呼上当,最后因为查出是没有把电话线接在modem上”而感到窘迫。
      6.严谨的风格是一种气质
      中产在小事上糊涂,记不清钱包里的现金,但是他们总是能丝毫不差地脱口而出“今天格林尼治时间21:04,道琼斯指数收盘上涨489点,上涨幅度6. 31%,收盘报8191……”
      在对事业,对金融(注:不是金钱)那种“小数点后两位”的一丝不苟,对“小节”的大大咧咧的衬托下,形成了中产身上独有的气质和魅力,使人产生一种“需仰视”的敬畏感。
      TIPS:一定要把目光放在一些能够显示身价的领域,例如股票或房地产。赶紧开始训练自己的记忆力,尝试着去注意并准确记下一些重要的数据,以给人留下做事严谨的印象。
      7.如果不懂得尊重,那你还是贫穷
      很多人富起来后,却变得不懂得尊重,那他们还是贫穷的,而且穷得一塌糊涂。
      一位公子开着大奔,倒车时撞倒了一位收垃圾的老婆婆,垃圾袋子散落一地。他马上下车,扶起老婆婆,并确认她没有受伤,然后笑着挽起袖子帮她拾掇起地上的垃圾袋。这里我们用蒙太奇的手法加上些许夕阳,将他的身影拉得很长很长……
      美之所以美,是因为它产生于极端反差的碰撞,使我们感到耀眼,感到欣慰,感到世界的温馨。
      如果换一个镜头:他跳下车,开始大骂,并且愤愤地踹着未散落的垃圾,最后上车扬长而去。那他绝不是中产,最多只是个暴发户。
      做一个合格的中产阶级,要比穷人更懂得尊重。要知道对他人的尊重已不是用来换取他人对自己尊重的等价物,而是平衡自己人格天平上的一颗砝码。
      8.在庸脂俗粉中,你也成了国色天香
      一个很著名的故事:一名商人,从非洲买来一种非常罕有并且高贵的花种,在家独立种植并期望来年卖个好价钱,于是理所当然地严加看管,生怕邻居偷去。过了一年,开出的花不如以前;又过了一年,花儿更加逊色。最后,商人请来的植物学家揭开了谜底:虽然此花品种高贵,但是长期生存在周围都是凡枝俗草的环境,由于蜜蜂等昆虫的媒介作用,品质便越来越平庸。大悟之后的商人,把花种分给所有的邻居。很快,名花便恢复了它独有的气质,商人和他的邻居们都富了起来。
      假设你就是这种名花,而你身边都非国色天香,而大多是山野小花,你如何保持自己的高贵、矜持和独有的风格?
      与他们保持距离,不让他们的俗气沾染到你?
      发现什么好的东西掖着藏着,生怕别人学去?
      NO,当然不行,这些行为的本身已经象征了你的无知,更何况它的结果导致的只能是你最终变得和他们一样俗气、平庸,就像故事里高贵的花儿一样。
      如果每当听到他们粗鲁的言语,看到他们市井的举动,你只在一旁窃笑,心中暗自鄙视,而决不屑于出言相劝,或试图纠正、用自己的言行来感染他们,那么长期的耳濡相染,使你有一天会惊奇地发现,什么时候自己也成了市井小人了?
      应该用自己的长处,一点点地感染周围的环境。帮助所有的人一起前进,才是你的成功。



    人生寄语
    欢乐属于达观者 希望赋于有志者
    成功献给勤奋者 痛苦戏弄懦弱者
    智慧垂青求知者 失败吓倒投机者
    聪颖馈赠好学者 苦果赐给鲁莽者
    挫折煎熬失志者 高尚寻觅无私者
    机遇迎着热望者 事业青睐开拓者
  • “脾气不好不但自己痛苦,也惹人讨厌。气质和修养的好坏,全看一个人的脾气,脾气不好,再有修养都报销了。”心静才能照人。无染才能心静。境由心造,事在人为,莫逆万般皆由命,退一步自然宽。
  • 界面测试(转贴)

    我在工作中总结了一些有关界面设计与测试的规范,与大家共享。 界面设计与测试规则界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度还远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具有艺术美的天赋而遭拒绝。目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。


    易用性:按钮名称应该易懂,用词准确,屏蔽模棱两可的字眼,要与同一界面上的其他按钮易于区分,能望文会意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。

    易用性细则:

    A.       完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。

    B.        完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。

    C.       按功能将界面划分局域块,用Frame框括起来,并要有功能说明或标题。

    D.       界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。

    E.        界面上首先应输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。

    F.        同一界面上的控件数量最好不要超过10个,多于10个时可以考虑使用分页界面显示。

    G.       分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl + Tab

    H.       默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。

    I.         可写控件检测到非法输入后应给出说明并能自动获得焦点。

    J.         Tab键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的方式。

    K.        复选框和选项框按选择几率的高底而先后排列。

    L.        复选框和选项框要有默认选项,并支持Tab选择。

    M.      选项数相同时多用选项框而不用下拉列表框。

    N.       界面空间较小时使用下拉框而不用选项框。

    O.       选项数较少时使用选项框,相反使用下拉列表框。

    P.        专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

    规范性:通常界面设计都按Windows界面的规范来设计,即包含菜单条、工具栏、工具厢、状态栏、滚动条、右键快捷菜单的标准格式,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具厢。

    规范性细则:

    A.       常用菜单要有命令快捷方式。

    B.        完成相同或相近功能的菜单用横线隔开放在同一位置。

    C.       菜单前的图标能直观的代表要完成的操作。

    D.       菜单深度一般要求最多控制在三层以内。

    E.        工具栏要求可以根据用户的要求自己选择定制。

    F.        相同或相近功能的工具栏放在一起。

    G.       工具栏中的每一个按钮要有及时提示信息。

    H.       一条工具栏的长度最长不能超出屏幕宽度。

    I.         工具栏的图标能直观的代表要完成的操作。

    J.         系统常用的工具栏设置默认放置位置。

    K.        工具栏太多时可以考虑使用工具厢。

    L.        工具箱要具有可增减性,由用户自己根据需求定制。

    M.      工具箱的默认总宽度不要超过屏幕宽度的1/5

    N.       状态条要能显示用户切实需要的信息,常用的有:目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示。

    O.       滚动条的长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比。

    P.        状态条的高度以放置五好字为宜,滚动条的宽度比状态条的略窄。

    Q.       菜单和工具条要有清楚的界限;菜单要求凸出显示,这样在移走工具条时仍有立体感。

    R.        菜单和状态条中通常使用5号字体。工具条一般比菜单要宽,但不要宽的太多,否则看起来很不协调。

    S.       右键快捷菜单采用与菜单相同的准则。

    帮助设施:系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。

    帮助设施细则:

    A.       帮助文档中的性能介绍与说明要与系统性能配套一致。(我们的系统帮助文档都是系统的祖先时期的说明,让人困惑)

    B.        打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。

    C.       操作时要提供及时调用系统帮助的功能,常用F1

    D.       在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即时针对性。

  • 一、Windows XP优化
    恢复Windows经典界面
    很多人安装了Windows XP后的第一感觉就是Windows变得漂亮极了。只是可惜美丽的代价要耗掉我们本就不富裕的内存和显存。要想恢复到和经典Windows类似的界面和使用习惯,请在桌面上单击鼠标右键,选择“属性”命令即可进入“显示属性”的设置窗口。这里共有“主题”、“桌面”、“屏幕保护程序”、“外观”和“设置” 五个选项卡。在当前选项卡的标签上会有一条黄色的亮色突出显示,默认是“主题”选项卡,这里我们只要在“主题”的下拉选单里选择“Windows经典”,立即就可以在预览窗口看到显示效果,同时,外观选项卡的内容也会随之进行更改。
    注意:Windows XP中“主题”和“外观”选项卡是息息相关的,只要更改其中的任何一个选项,在另一个选项卡中也会看到相应的改变。


    恢复“开始”菜单
    Windows XP新的“开始”菜单还是挺方便的,对系统资源的影响也不大。如果你喜欢过去的经典菜单的话,用鼠标右键单击任务栏空白处,选择“属性”菜单,进入“任务栏和开始菜单属性”的设置窗口,选择“[开始]菜单”选项卡,选择“经典[开始]菜单”即可恢复到从前的模样了。


    优化视觉效果
    Windows XP的操用界面的确是很好看,好看的背后是以消耗大量内存作为代价的,相对于速度和美观而言,我们还是宁愿选择前者,右键单击“我的电脑”,点击“属性/ 高级”,在“性能”一栏中,点击“设置/视觉效果”,在这里可以看到外观的所有设置,可以手工去掉一些不需要的功能。在这里把所有特殊的外观设置诸如淡入淡出、平滑*动、滑动打开等所有视觉效果都关闭掉,我们就可以省下“一大笔”内存。


    禁用多余的服务组件
    Windows XP和Windows 2000一样可以作为诸如Http服务器、邮件服务器、FTP服务器,所以每当Windows XP启动时,随之也启动了许多服务,有很多服务对于我们这些普通用户来说是完全没用的,所以关掉它们是一个很好的选择。操作的方法是:右键单击“我的电脑”,依次选择“管理/服务和应用程序/服务”,将不需要的服务组件禁用。
    注意:有些服务是Windows XP必需的,关闭后会造系统崩溃。查看详细说明确认后再禁止。
    编者注:对于Windows XP常见的90个服务,本文将有专门章节分析。


    减少启动时加载项目
    许多应用程序在安装时都会自作主张添加至系统启动组,每次启动系统都会自动运行,这不仅延长了启动时间,而且启动完成后系统资源已经被吃掉不少!我们可以减少系统启动时加载的程序,方法是:选择“开始”菜单的“运行”,键入“msconfig”启动“系统配置实用程序”,进入“启动”标签,在此窗口列出了系统启动时加载的项目及来源,仔细查看你是否需要它自动加载,否则清除项目前的复选框,加载的项目愈少,启动的速度自然愈快。此项需要重新启动方能生效。


    关闭系统还原功能
    “系统还原”功能是Windows系列操作系统的一个重要特色,当Windows运行出现问题后,还原操作系统。 “系统还原”虽然对经常犯错误的人有用,但是它会让你的硬盘处于高度繁忙的状态,你会发现你的硬盘总是忙个不停,因为Windows XP要记录操作,以便日后还原。如果你对自己有信心,那么就不要使用它,因为它可占不少内存。
    关闭系统还原功能方法是:单击“开始/所有程序/附件/系统工具/系统还原”,在系统还原界面,单击“系统还原设置”进入“系统还原设置”窗口,清空“在所有驱动器上关闭系统还原”复选框,这样Windows XP就会删除备份的系统还原点,从而释放它占用的磁盘空间。
    一般来说,为了兼顾系统性能和系统安全,笔者建议打开Windows XP所在盘符的系统还原功能。


    关闭自动更新
    “自动更新”是Windows XP为了方便用户升级系统而推出的一种新功能,这种功能可以在微软推出系统升级补丁或系统安全补丁的时候,自动提醒用户升级自己的系统,不过这种功能有一个要求,就是用户必须时时在线,但是对于我们这些缺铁少银的“穷人”来说,这个要求未免苛刻,所以我们把“自动升级”功能关闭掉,改为“手动升级”。
    关闭自动更新具体操作为:右键单击“我的电脑/属性/自动更新”,在“通知设置”一栏选择“关闭自动更新。我将手动更新计算机”一项。 


    关闭远程桌面
    这个功能的一个特点就是可以让别人在另一台机器上访问你的桌面。在局域网中,这个功能很有用。比如你有问题了可以向同事求助,他可以不用到你的跟前,直接通过“远程桌面”来访问你的机器帮你解决问题。但是对于我们只有一台计算机的普通用户来说这个功能就显得多余了,所以我们把它关掉,不让它在那儿白白浪费内存。具体操作为:右键单击“我的电脑”,选择“属性/远程”,把“远程桌面”里的“允许用户远程连接到这台计算机”勾去掉。


    禁用消休眠功能
    Windows XP的休眠可以把内存中当前的系统状态完全保存到硬盘,当你下次开机的时候,系统就不需要经过加载、系统初始化等过程,而直接转到你上次休眠时的状态,因此启动非常快。但它会占用大量的硬盘空间(和你的内存大小一样),可以到“控制面板/电源选项/休眠”中将其关闭,以释放出硬盘空间,待到要需要使用时再打开即可。方法是:单击“开始/控制面板/电源管理/休眠”,将“启用休眠”前的勾去掉。


    关闭“自动发送错误报告”功能
    大家在Window XP 中肯定有这样的经历,一旦一个程序异常终止,系统就会自动跳出一个对话框问你是否将错误发送给微软,这就是XP中的“自动发送错误”功能,它可以将错误信息发送到微软的网站。虽然微软一再信誓旦旦地表示,可以提供强大的安全保障,不会泄露个人隐私,但是发送给微软的信息中有可能包含你正在浏览或编辑的文档信息,也许这正包含了个人隐私或是公司机密,因此如果你想保障自己应有的权利,我们应该义无反顾的把这项功能关掉。方法是:单击“开始/控制面板/系统/ 高级”,单击“错误报告”按钮,然后选中“禁用错误报告”,下面的“但在发生严重错误时通知我”可以选中。


    关闭“Internet时间同步”功能
    “Internet时间同步”就是使你的计算机时钟每周和Internet时间服务器进行一次同步,这样你的系统时间就会是精确的,不过这个功能对我们来说用处不大,而且还可能引起死机的问题。一般来说,只要在安装完Windows XP以后同步一次时间就可以了。所以我们要把它关掉。具体操作是:依次单击“开始/控制面板/日期、时间、语言和区域选项”,然后单击“日期和时间 /Internet时间”。


    合理设置虚拟内存
    对于虚拟内存文件,Windows XP为了安全默认值总是设的很大,浪费了不少的硬盘空间,其实我们完全可以将它的值设小一点。方法是:进入“控制面板/系统/高级/性能/设置/高级/虚拟内存/更改”,来到虚拟内存设置窗口,首先确定你的页面文件在哪个驱动器盘符,然后将别的盘符驱动器的页面文件全部禁用。建议你把它是设置到其他分区上,而不是默认的系统所在的分区,这样可以提高页面文件的读写速度,有利于系统的快速运行。根据微软的建议,页面文件应设为内存容量的1.5倍,但如果你的内存比较大,那它占用的空间也是很可观的,所以,建议如果内存容量在256MB以下,就设置为1.5倍,最大值和最小值一样,如果在512MB以上,设置为内存容量的一半完全可行。


    删除多余文档
    Windows XP中有许多文件平时我们很少用到,放在硬盘中,白白浪费空间,降低系统性能。我们完全可以把这些用不到的文件删除,需要删除的文件有:
    帮助文件:在C:WindowsHelp目录下。
    驱动备份:C:Windowsdriver cachei386目录下的Driver.cab文件。
    系统文件备份: 一般用户是不怎么用的,利用命令sfc.exe /purgecache删除。
    备用的dll文件:在C:Windowssystem32dllcache目录下。
    输入法:在C:WindowsIme文件夹下直接删除chtime、imjp8_1、imkr6_1三个目录即可,分别是繁体中文、日文、韩文输入法。


    删除WindowsXP中隐含的组件
    Windows XP在正常安装之后,会自动安装许多组件,这些组件有许多是平时用不到的,安装在系统中会占用很多空间,降低系统性能,我们可以用下述方法删除不用的组件。
    用记事本修改C:WindowsInf目录下的Sysoc.inf文件,用查找/替换功能,在查找框中输入“,hide”(一个英文逗号紧跟hide),将 “替换为”框设为空。并选全部替换,这样,就把所有的“,hide”都去掉了,存盘退出,再单击“开始/控制面板/添加或删除程序”,就可以看到许多平时见不到的组件,选择不需要程序进行删除即可。


    清理垃圾文件
    Windows XP在正常的使用过程中会产生扩展名为TMP、BAK、OLD之类的垃圾文件,你可以用Windows的搜索功能,查出这些文件,然后把它们删除。另外 Windows XP默认会在系统失败时记录错误事件,并写入调试信息,这些文件信息我们完全可以弃之不用。方法是单击“开始/控制面板/系统/高级/启动和故障恢复”,清空“将事件写入日志文件”,在“写入调试信息”下拉框里选“无”即可。


    禁止MSN随Windows启动
    每次启动Windows时,Messenger总是自动运行,即使你不想启动它,可是它也自动运行,非常烦人,我们能不能禁止它,不让它随Windows启动呢?回答是可以的。
    第一种方法:
    1.在“开始”菜单中单击“运行”,在“打开”框中输入“msconfig”,“确定”后打开“系统配置实用程序”窗口。
    2.单击“启动”选项卡,在“启动项目”列表中,清除“MSMSGS”前的复选框,单击“确定”按钮。
    3.当系统提示“重新启动计算机”时,请单击“是”按钮。
    第二种方法:
    1.打开“注册表编辑器”窗口。
    2.依次展开“KEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun”分支,然后在右窗格中右键单击“MSMSGS”,再单击快捷菜单中的“删除”命令,当系统提示确认删除时,请单击“是”按钮。
    经过设置,MSN就再也不会随Windows XP的启动而启动了。


    优化带宽
    Windows XP专业版新增了QoSRRP(这是Quality of Service Resource Reservation Protocol的缩写,意为服务质量资源预留协议)。一般来说,试图通过可用带宽访问信息的时候,应用程序要么通过QoS应用程序接口,要么通过另一个称为TCI的应用程序接口。在网络通讯上,为了商业方面的安全性保留了一定的频宽给了管理者,这对于QoS应用程序来说无疑是件好事,但是一般使用者便不需要此功能,无形中就有部分(默认为20%)带宽白白浪费了,因此我在此提供取消此功能的方法。
    选择“开始”菜单,点击“注销”,进到登录的主画面,在登录的主画面中按下Ctrl+Alt+Del两次出现了登录窗口,在使用者名称中输入Administrator(注:要区分大小),密码栏中填入自设密码(若没有设定密码者空白即可)按确定进入Windows,单击“开始/运行”输入gpedit.msc进入到“组策略”窗口,在左边窗口中选取 “计算机配置/管理模板/网络/QoS数据包调度程序”,在右边的窗口中双击“限制可保留的带宽”,选择“已启用”并将“带宽限制(%)”设为0,单击 “应用”,然后“确定”,重新启动即可。
    注意:Windows XP家庭版的使用者不必更改这些设置。


    删除多余字体
    Windows XP中安装的字体越多,就会占用更多的内存的系统资源,减慢系统的运行速度,因此,对于不常用的字体,我们最好把它从系统中删除。字体文件存放在C:Windowsfont目录下,你完全可以根据需要选择一些字体,对于更多不用的字体,一删了之。


    更改IE临时文件夹
    上网时产生的大量临时文件都存放在IE临时文件夹中,默认情况下,临时文件夹是在系统分区上,大量的临时文件会影响硬盘读写系统文件的性能。你可以更改临时文件的位置来避免出现这种情况。方法是单击“开始/控制面板/Internet选项”,在“常规”选项卡中单击“设置”按钮,在打开的窗口中单击“移动文件夹”按钮,指定一个非系统分区上的文件夹,单击“确定”后,临时文件就会移到指定的文件夹上。


    加快“网上邻居”共享的速度
    不知道各位使用者用Windows XP开“网上邻居”里面的共享资源时,有没有发现所花的时间相当的长,这是因为它会检查其它计算机中的设定工作,有时甚至就在那边停了将近一分钟,相当讨厌,大家可以通过下面的方法将其检查的步骤取消:选择“开始/运行”,输入regedit,在弹出注册表编辑器中寻找 [HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/
    Explorer/RemoteComputer/NameSpace],按鼠标右将在此位置的{D6277990-4C6A-11CF-8D87-00AA0060F5BF}删除之即可。


    清除预读文件
    当Windows XP使用一段时间后,安装目录下的预读文件夹(C:Windowsprefetch)里的文件会变的很大,里面会有死链接文件,这会减慢系统时间,建议你定期删除这些文件。


    设置预读以提高速度
    Windows XP使用预读设置这一新技术,以提高系统速度。如果你的电脑配置不错,拥有PIII 800, 512M内存以上,你可以进行以下修改:单击“开始/运行”,输入“regedit”,打开注册表,找到 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParametersEnablePrefetcher],设置数值0,1,2,3(0-Disable,1-预读应用程序,2-启动预读,3-前两者皆预读),推荐使用“3”,这样可以减少启动时间。


    取消不需要的网络服务组件
    单击“开始/控制面板/网络连接/本地连接”打开本地连接状态窗口,单击“属性”按钮,打开属性对话框,单击“高级”选项卡,选中“通过限制或阻止来自Internet的对此计算机的访问来保护我的计算机和网络”选项,然后单击“设置”按钮,就可以看到所有已经安装的、Internet用户可以访问的、运行于你的网络上服务,除非你想架设FTP或SMTP服务器,否则不妨全部取消这些项目的选定状态。  


    启用DMA传输模式
    所谓DMA,即直接存储器存储模式,指计算机周边设备(主要指硬盘)可直接与内存交换数据,这样可加快硬盘读写速度,提高速据传输速率。由于某些原因,Windows XP有时会在IDE通道上使用PIO并行输入输出传输模式,而不是DMA模式。如果有这种情况,用户可以手动把IDE通道改为DMA模式,这样可以减少该设备占用的CPU周期。方法是:右键点击“我的电脑”,选“属性”,点选“硬件”选项卡,单击“设备管理器”按钮,打开“设备管理器”,然后点击展开 “IDE ATA/ATAPI 控制器”分支,其中“IDE控制器”有两项“主要IDE通道”及“次要IDE通”,分别选中,依次进入“属性/高级设置”,该对话框会列出目前IDE接口所连接设备的传输模式,检查“传输模式”下拉菜单,把它们全部设“DMA(若可用)”,点击“确定”。


    加快菜单显示速度
    选择“开始/运行”,输入regedit,弹出注册表编辑,寻找 [HKEY_CURRENT_USERControlPanelDesktop],在右边的窗口中选择MenuShowDelay,按鼠标右键,选择“修改”,将其数值资料改为100或更小(默认值为:400),建议不要使用0,因为如此一来只要鼠标一不小心触碰到“所有程序”,整条菜单就会跑出来,那这乱了套。


    加快关机速度
    Windows XP的开机速度的确比以前版本的操作系统快了很多,但关机速度却慢了不少。如果你在意关机速度的快慢,可以修改几个注册表键值,就可以大大减少 Windows关闭所用的时间。首先打开注册表编辑器,找到HKEY_CURRENT_USERControl PanelDesktop,里面有个名为HungAppTimeout的键,它的默认值是5000(如果不是,把它改为5000)。接下来,还有个 WaitToKillAppTimeout键,把它的值改为4000(默认值是2000)。最后,找到注册表如下位置: HKEY_LOCAL_MACHINESystemCurrentControlSetControl。同样地,把其中的 WaitToKillServiceTimeout键值改为4000。另外,把“控制面板/管理工具/服务”中的NVidia Driver Help服务设为手动,也可以加快Windows关闭时间。


    关闭计算机时自动结束任务
    在关机的时候,有时会弹出讨厌的对话框,提醒某个程序仍在运行,是否结束任务。其实完全可以通过一点点修改让Windows自动结束这些仍在运行的程序。在注册表中打开HKEY_CURRENT_USERControl PanelDesktop 目录,把里面的AugoEndTasks键值改为1。
    注意:可能会找不到AutoEndTasks键值,如果是这样的话,自己建一个串值并把它改为这个名字,值设为1就可以了。


    关闭华生医生Dr.Watson
    单击“开始/运行”,输入“drwtsn32”命令,或者“开始/所有程序/附件/系统工具/系统信息/工具/Dr Watson”,调出系统里的华生医生Dr.Watson ,只保留“转储全部线程上下文”选项,否则一旦程序出错,硬盘会读很久,并占用大量空间。如以前有此情况,请查找user.dmp文件,删除后可节省几十 MB空间。


    减少磁盘扫描等待时间
    WindowsXP虽然号称稳定,但是并不是永不死机,偶尔也会给你个蓝脸,非法操作后系统会自动扫描,出现大段大段的E文,告诉你刚才系统非正常结束,现在需要检查一下是否出错,可是还要等待一段时间才开始,所以我们可以在dos下,键入 “chkntfs/t:0”,表示等待时间为0秒。


    删除多余的帐户
    如果你的电脑只有你一个人使用,最好只建自己的一个帐户,因为你每建一个帐户,就会在Windows XP的安装目录下的documents and settings下面多一个以你所建帐户为名的文件夹,里面存放着这个帐户的一些资料,有收藏夹、文档、历史记录,系统设置信息等内容,天长日久它占用的空间也是不可小觑的,解决方法就是到“开始/控制面板/用户帐户”里依自己情况删除多余的帐户即可。


    让系统自动关闭停止响应的程序
    单击“开始/运行”,输入regedit,弹出注册表编辑器,寻找[HKEY_CURRENT_USERControlPanelDesktop],在右边的窗口中选择AutoEndTasks,按鼠标右键,选择“修改”,将其数值资料改为1(默认值为:0)。


    IE网络浏览器加速技巧
    Windows XP自带Internet Explorer6,有个小技巧,修改之后启动得飞快(在我的机子上,简直是瞬间启动)。具体做法是:右键点击Internet Explorer快捷图标(如任务栏上的快捷启动栏中那个IE图标),打开图标属性之后在“目标”后面加上“-nohome”参数即可。
    二、文件管理和操作技巧
    加密文件和文件夹
    在任何需要加密的文件和文件夹上右键单击鼠标,选择“属性”命令,单击“常规”选项卡,然后依次选择“高级加密内容以便保护数据”后确定就可以了。需要说明是 :Windows XP的加密操作只针对NTFS格式的磁盘分区,它对传统的FAT16和FAT32格式的分区不提供加密支持,如果你想使用加密操作,就需要把磁盘转换为 NTFS格式。


    自定义文件夹图片
    在Windows XP中新增了文件夹图片功能,它提供了比原来的图标内容更多丰富的图片资源供用户选择,你可以利用这一功能把自己喜欢的任意图片设为文件夹图标,方法是:在资源管理器选中任一文件夹,右键单击,选择“属性”命令,在打开的对话框中选择“自定义”选项卡,单击“选择图片”按钮选择作为文件夹图片的图形文件,单击“更改图标”按钮可以文件夹图标,然后单击“确定”即可,以后你在资源管理器中选择以“缩略图”形式查看文件时,就可以看到你定义的文件夹图片。


    快速移动和复制文件
    在资源管理器中选中你要移动或复制的文件,然后用鼠标右键将文件拖动目的文件夹后松开,会弹出一个菜单,允许你选择复制、移动文件还是创建一个快捷方式,甚至可以取消。

  • Linux常见紧急情况处理方法
    .使用急救盘组进行维护

    急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具。用它可以独立地启动和运行一
    个完整的Linux系统。实际上,急救盘组中的第2张盘上就有一个完整的Linux系统,包括root文件系
    统;而第1张盘则存放了可启动的内核。

    使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是root账户。
    为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如,用下面的命令可在/mnt目录中安装
    /dev/hda2盘上的ext2fs类型的Linux文件系统:

    # monut -t ext2/dev/hda2/mnt

    注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目录
    下。这样,如果将硬盘上文件系统安装在/mmt目录下,则硬盘上原来的/etc/passwd文件的路径就是
    /mnt/etc/passwd。

    2、文件系统被破坏时的处理方法

    当文件系统被破坏时,如果使用的是ext2fs类型的文件系统,就可从软盘运e2fsck命令来修正文件系
    统中被损坏的数据。对于其他类型的文件系统,可以使用相应的fsck命令。

    当从软盘上检查文件系统时,最好不要mount安装。

    注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的“头部”。它包含文件系统的
    状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了
    文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能安装它了,即使
    采用e2fsck命令也不能处理这个问题。

    不过,ext2fs类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)
    边界。可以用如下的命令通知e2fsck使用超级块的备份

    # e2fsck -b 8193

    是指文件系统所在的分区,-b 8193选项用于显示使用存放在文件系统中的8193块的超级块的备份数据。

    3、恢复丢失的文件

    如果不小心删除了重要的文件,那么没有办法直接恢复。但是还可以将相应的文件从急救盘复制到硬盘
    上。例如,如果删除了文件/bin/login,此时系统无法正常进到登录界面,可以用急救盘组启动系统,
    将硬盘文件系统安装到/mnt目录下,然后使用下述命令:   

    #cp -a /bin/login /mnt/bin

    “-a”选项用于告诉cp在拷贝时保持文件的访问权限。 当然如果被删除的基本文件不在“急救盘组”中,
    也就不能用这种方法了。如果以前做过系统备份的话,那么也可以用以前的备份来恢复。

    4.函数库破坏时的处理方法

    如果不小心将系统函数库文件破坏了,或者破坏了/lib目录下符号链接,那么将导致依赖这些库的命令无
    法执行。最简单的解决办法是用急救盘组启动系统,在/mnt目录中安装硬盘文件系统,然后修复/mnt/lib
    目录下的库。

    5、无法用root账号登录系统

    由于系统管理员的疏忽,或者由于系统受到黑客的入侵,系统管理员可能无法用root帐号登录系统。   

    对于第1种情况,可能是系统管理员忘记了root密码,用急救盘组就可以解决问题。

    对于第2种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系统,也就是说,Linux系统
    完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root权限后,还应检查系统被破坏的情况,
    以防被黑客再次入侵。

    需要做的最主要的工作就是重新设置root的密码,获得Linux操作系统的控制权。首先用急救盘组启动系统,
    然后将硬盘的文件系统安装到/mnt目录下,编辑/mnt/etc/passwd文件,将其对应于root账户的一行加密口
    令域置空,如下所示:

    root::0:0:root:/root:bin/bash

    注:如果系统使用 shadow工具,就需要对文件/etc/shadow进行上述的操作,使root登录系统不需要口令。

    这样,root账户就没有口令了。当重新从硬盘启动Linux系统时,就可以用root账户登录(系统不会要求输
    入密码)。进入系统后,再用命令passwd设置新的口令。

    6、Linux系统不能启动

    一般来说,如果系统管理员不能正常进入系统,就需要考虑使用急救盘组进入急救模式排除系统的故障。但
    在没有制作急救盘组的情况下,Linux系统不能启动,该怎么办?

    在个人计算机使用 Linux系统时,通常都是Linux和MS Windows 9x或MS Windows NT并存的。

    由于重新安装其他的操作系统,经常会导致原有的Linux不能启动。这主要是因为,这些操作系统默认为计算
    机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),冲掉了Linux的LILO系统引导程序。

    如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的Linux系统,重新运行LILO命令,就可以将LILO系
    统引导程序写回硬盘的主引导记录。再次开机即可。

    如果没有系统启动盘,怎样恢复硬盘上的Linux呢?在这种情况下,如果知道Linux在硬盘上的确切安装分区,
    且有loadlin程序,就可以重新返回Linux。loadlin程序是DOS下的程序,运行它可以从DOS下直接启动Linux,
    快速进入Linux环境。在 Red Hat Linux 6.0光盘的 dosutil/目录下就有这个程序。除此之外,还需要一个
    Linux启动内核的映像文件。在 Red H

    at linux 6.0光盘的 images/目录下有这个文件——vmlinuz。

    例如,在Windows 98系统下面,进入DOS的单用户模式,然后运行下述的loadlin命令,即可重新进入Linux系统:

    loadlin vmlinuz root=/dev/hda8

    /dev/hda8是Linux的root文件系统所在的硬盘分区位置。命令执行后,就引导Linux系统。用root登录后,运行
    LILO命令,则重新将LILO装入MBR,回到以前多操作系统并存使用的状态。
  • linux使用大全(9)
    名称: fdformat
    使用权限: 所有使用者
    使用方式:fdformat [-n] device

    使用说明 :
    对指定的软碟机装置进行低阶格式化。使用这个指令对软碟格式化的时候,最好指定像是下面的装置:


    /dev/fd0d360 磁碟机 A: ,磁片为 360KB 磁碟
    /dev/fd0h1440 磁碟机 A: ,磁片为 1.4MB 磁碟
    /dev/fd1h1200 磁碟机 B: ,磁片为 1.2MB 磁碟
    如果使用像是 /dev/fd0 之类的装置,如果里面的磁碟不是标准容量,格式化可能会失败。在这种情况之下,使用者可以用 setfdprm 指令先行指定必要参数。

    参数:


    -n 关闭确认功能。这个选项会关闭格式化之后的确认步骤。

    范例:

    fdformat -n /dev/fd0h1440

    将磁碟机 A 的磁片格式化成 1.4MB 的磁片。并且省略确认的步骤。



    名称: mformat

    使用权限: 所有使用者

    使用方式:

    mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:

    在已经做过低阶格式化的磁片上建立 DOS 档案系统。如果在编译 mtools 的时候把 USE_2M 的参数打开,部分与 2M 格式相关的参数就会发生作用。否则这些参数(像是 S,2,1,M)不会发生作用。

    参数:

    -t 磁柱(synlider)数
    -h 磁头(head)数
    -s 每一磁轨的磁区数
    -l 标签
    -F 将磁碟格式化为 FAT32 格式,不过这个参数还在实验中。
    -I 设定 FAT32 中的版本号。这当然也还在实验中。
    -S 磁区大小代码,计算方式为 sector = 2^(大小代码+7)
    -c 磁丛(cluster)的磁区数。如果所给定的数字会导致磁丛数超过 FAT 表的限制,mformat 会自动放大磁区数。
    -s
    -M 软体磁区大小。这个数字就是系统回报的磁区大小。通常是和实际的大小相同。
    -a 如果加上这个参数,mformat 会产生一组 Atari 系统的序号给这块软碟。
    -X 将软碟格式化成 XDF 格式。使用前必须先用 xdfcopy 指令对软碟作低阶格式化的动作。
    -C 产生一个可以安装 MS-DOS 档案系统的磁碟影像档(disk image)。当然对一个实体磁碟机下这个参数是没有意义的。
    -H 隐藏磁区的数目。这通常适用在格式化硬碟的分割区时,因为通常一个分割区的前面还有分割表。这个参数未经测试,能不用就不用。
    -n 磁碟序号
    -r 根目录的大小,单位是磁区数。这个参数只对 FAT12 和 FAT16 有效。
    -B 使用所指定的档案或是设备的开机磁区做为这片磁片或分割区的开机磁区。当然当中的硬体参数会随之更动。
    -k 尽量保持原有的开机磁区。
    -0 第 0 轨的资料传输率
    -A 第 0 轨以外的资料传输率
    -2 使用 2m 格式
    -1 不使用 2m 格式

    范例:
    mformat a:

    这样会用预设值把 a: (就是 /dev/fd0)里的磁碟片格式化。



    名称: mkdosfs

    使用权限: 所有使用者

    使用方式: mkdosfs [ -c | -l filename ]
    [ -f number_of_FATs ]
    [ -F FAT_size ]
    [ -i volume_id ]
    [ -m message_file ]
    [ -n volume_name ]
    [ -r root_dir_entry ]
    [ -s sector_per_cluster ]
    [ -v ]
    device
    [ block_count ]



    说明: 建立 DOS 档案系统。 device 指你想要建立 DOS 档案系统的装置代号。像是 /dev/hda1 等等。 block_count 则是你希望配置的区块数。如果 block_count 没有指定则系统会自动替你计算符合该装置大小的区块数。

    参数:


    -c 建立档案系统之前先检查是否有坏轨。
    -l 从得定的档案中读取坏轨记录。
    -f 指定档案配置表(FAT , File Allocation Table)的数量。预设值为 2 。目前 Linux 的 FAT 档案系统不支援超过 2 个 FAT 表。通常这个不需要改。
    -F 指定 FAT 表的大小,通常是 12 或是 16 个位元组。12 位元组通常用于磁碟片,16 位元组用于一般硬碟的分割区,也就是所谓的 FAT16 格式。这个值通常系统会自己选定适当的值。在磁碟片上用 FAT16 通常不会发生作用,反之在硬碟上用 FAT12 亦然。
    -i 指定 Volume ID。一般是一个 4 个位元组的数字,像是 2e203a47 。如果不给系统会自己产生。
    -m 当使用者试图用这片磁片或是分割区开机,而上面没有作业系统时,系统会给使用者一段警告讯息。这个参数就是用来变更这个讯息的。你可以先用档案编辑好,然后用这个参数指定,或是用
    -m -
    这样系统会要求你直接输入这段文字。要特别注意的是,档案里的字串长度不要超过 418 个字,包括展开的跳栏符号(TAB)和换行符号(换行符号在 DOS 底下算两个字元!)
    -n 指定 Volume Name,就是磁碟标签。如同在 DOS 底下的 format 指令一样,给不给都可以。没有预设值。
    -r 指定根目录底下的最大档案数。这里所谓的档案数包括目录。预设值是在软碟上是 112 或是 224 ,在硬碟上是 512。没事不要改这个数字。
    -s 每一个磁丛(cluster)的磁区数。必须是 2 的次方数。不过除非你知道你在作什么,这个值不要乱给。
    -v 提供额外的讯息

    范例:
    mkdosfs -n Tester /dev/fd0 将 A 槽里的磁碟片格式化为 DOS 格式,并将标签设为 Tester
  • linux使用大全(7)
    名称:pstree
    使用权限:所有使用者
    使用方式:
    pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
    pstree -V
    说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
    参数:
    -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
    -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
    范例:

    pstree

    init-+-amd
    |-apmd
    |-atd
    |-httpd---10*[httpd]
    %pstree -p
    init(1)-+-amd(447)
    |-apmd(105)
    |-atd(339)
    %pstree -c
    init-+-amd
    |-apmd
    |-atd
    |-httpd-+-httpd
    | |-httpd
    | |-httpd
    | |-httpd
    ....



    名称:renice
    使用权限:所有使用者

    使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

    说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)

    把计

    -p pid 重新指定行程的 id 为 pid 的行程的优先序
    -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
    -u user 重新指定行程拥有者为 user 的行程的优先序
    范例:
    将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
    renice +1 987 -u daemon root -p 32

    注意 : 每一个行程(Process)都有一个唯一的 (unique) id



    名称:top
    使用权限:所有使用者

    使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

    说明:即时显示 process 的动态

    把计

    d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
    q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
    c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
    s : 安全模式,将交谈式指令取消, 避免潜在的危机
    i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
    n : 更新的次数,完成后将会退出 top
    b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

    范例:
    显示更新十次后退出 ;
    top -n 10

    使用者将不能利用交谈式指令来对行程下命令 :
    top -s

    将更新显示二次的结果输入到名称为 top.log 的档案里 :
    top -n 2 -b < top.log

    名称:skill

    使用权限:所有使用者

    使用方式: skill [signal to send] [options] 选择程序的规则

    说明:

    送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0

    讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。

    一般参数:

    -f 快速模式/尚未完成

    -i 互动模式/ 每个动作将要被确认

    -v 详细输出/ 列出所选择程序的资讯

    -w 智能警告讯息/ 尚未完成

    -n 没有动作/ 显示程序代号

    参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。

    -t 终端机代号 ( tty 或 pty )

    -u 使用者名称

    -p 程序代号 ( pid )

    -c 命令名称 可使用的讯号:

    以下列出已知的讯号名称,讯号代号,功能。

    名称 (代号) 功能/ 描述

    ALRM 14 离开

    HUP 1 离开

    INT 2 离开

    KILL 9 离开/ 强迫关闭

    PIPE 13 离开

    POLL 离开

    PROF 离开

    TERM 15 离开

    USR1 离开

    USR2 离开

    VTALRM 离开

    STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体

    UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体

    TSTP 停止 /产生与内容相关的行为

    TTIN 停止 /产生与内容相关的行为

    TTOU 停止 /产生与内容相关的行为

    STOP 停止 /强迫关闭

    CONT 从新启动 /如果在停止状态则从新启动,否则忽略

    PWR 忽略 /在某些系统中会离开

    WINCH 忽略

    CHLD 忽略

    ABRT 6 核心

    FPE 8 核心

    ILL 4 核心

    QUIT 3 核心

    SEGV 11 核心

    TRAP 5 核心

    SYS 核心 /或许尚未实作

    EMT 核心 /或许尚未实作

    BUS 核心 /核心失败

    XCPU 核心 /核心失败

    XFSZ 核心 /核心失败

    范例:

    停止所有在 PTY 装置上的程序
    skill -KILL -v pts/*

    停止三个使用者 user1 , user2 , user3
    skill -STOP user1 user2 user3



    其他相关的命令: kill



    名称:expr

    使用权限:所有使用者
    ### 字串长度

    shell>> expr length "this is a test"
    14

    ### 数字商数

    shell>> expr 14 % 9
    5

    ### 从位置处抓取字串

    shell>> expr substr "this is a test" 3 5
    is is

    ### 数字串 only the first character

    shell>> expr index "testforthegame" e
    2

    ### 字串真实重现

    shell>> expr quote thisisatestformela
    thisisatestformela




    名称: tr

    ### 1.比方说要把目录下所有的大写档名换为小写档名?

    似乎有很多方式,"tr"是其中一种:

    #!/bin/sh

    dir="/tmp/testdir";
    files=`find $dir -type f`;
    for i in $files
    do
    dir_name=`dirname $i`;
    ori_filename=`basename $i`
    new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` > /dev/null;
    #echo $new_filename;
    mv $dir_name/$ori_filename $dir_name/$new_filename
    done
  • linux使用大全(8)
    指令:clear
    用途:清除萤幕用。

    使用方法:在 console 上输入 clear。


    名称: reset, tset
    使用方法: tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]

    使用说明:

    reset 其实和 tset 是一同个命令,它的用途是设定终端机的状态。一般而言,这个命令会自动的从环境变数、命令列或是其它的组态档决定目前终端机的型态。如果指定型态是 ? 的话,这个程式会要求使用者输入终端机的型别。

    由于这个程式会将终端机设回原始的状态,除了在 login 时使用外,当系统终端机因为程式不正常执行而进入一些奇怪的状态时,你也可以用它来重设终端机o 例如不小心把二进位档用 cat 指令进到终端机,常会有终端机不再回应键盘输入,或是回应一些奇怪字元的问题。此时就可以用 reset 将终端机回复至原始状态。选项说明:


    -p
    将终端机类别显示在萤幕上,但不做设定的动作。这个命令可以用来取得目前终端机的类别。
    -e ch
    将 erase 字元设成 ch
    -i ch
    将中断字元设成 ch
    -k ch
    将删除一行的字元设成 ch
    -I
    不要做设定的动作,如果没有使用选项 -Q 的话,erase、中断及删除字元的目前值依然会送到萤幕上。
    -Q
    不要显示 erase、中断及删除字元的值到萤幕上。
    -r
    将终端机类别印在萤幕上。
    -s
    将设定 TERM 用的命令用字串的型式送到终端机中,通常在 .login 或 .profile 中用
    范例:
    让使用者输入一个终端机型别并将终端机设到该型别的预设状态。
    # reset ?



    将 erase 字元设定 control-h
    # reset -e ^B



    将设定用的字串显示在萤幕上
    # reset -s
    Erase is control-B (^B).
    Kill is control-U (^U).
    Interrupt is control-C (^C).
    TERM=xterm;

    名称:compress

    使用权限:所有使用者


    使用方式:compress [-dfvcV] [-b maxbits] [file ...]


    说明:
    compress 是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。


    参数:
    c 输出结果至标准输出设备(一般指荧幕)
    f 强迫写入档案,若目的档已经存在,则会被覆盖 (force)
    v 将程式执行的讯息印在荧幕上 (verbose)
    b 设定共同字串数的上限,以位元计算,可以设定的值为 9 至 16 bits 。由于值越大,能使用的共同字串就 越多,压缩比例就越大,所以一般使用预设值 16 bits (bits)
    d 将压缩档解压缩
    V 列出版本讯息


    范例:


    将 source.dat 压缩成 source.dat.Z ,若 source.dat.Z 已经存在,内容则会被压缩档覆盖。



    compress -f source.dat
    将 source.dat 压缩成 source.dat.Z ,并列印出压缩比例。
    -v 与 -f 可以一起使用
    compress -vf source.dat
    将压缩后的资料输出后再导入 target.dat.Z 可以改变压缩档名。
    compress -c source.dat > target.dat.Z
    -b 的值越大,压缩比例就越大,范围是 9-16 ,预设值是 16 。
    compress -b 12 source.dat
    将 source.dat.Z 解压成 source.dat ,若档案已经存在,使用者按 y 以确定覆盖档案,若使用 -df 程式则会自动覆盖档案。由于系统会自动加入 .Z 为延伸档名,所以 source.dat 会自动当作 source.dat.Z 处理。
    compress -d source.dat
    compress -d source.dat.Z
    名称: lpd

    使用权限: 所有使用者

    使用方式:lpd [-l] [#port]
    lpd 是一个常驻的印表机管理程式,它会根据 /etc/printcap 的内容来管理本地或远端的印表机。/etc/printcap 中定义的每一个印表机必须在 /var/lpd 中有一个相对应的目录,目录中以 cf 开头的档案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生。

    lpr 和 lpd 组成了一个可以离线工作的系统,当你使用 lpr 时,印表机不需要能立即可用,甚至不用存在。lpd 会自动监视印表机的状况,当印表机上线后,便立即将档案送交处理。这个得所有的应用程式不必等待印表机完成前一工作。

    参数:
    -l: 将一些除错讯息显示在标准输出上。
    #port: 一般而言,lpd 会使用 getservbyname 取得适当的 TCP/IP port,你可以使用这个参数强迫 lpd 使用指定的 port。

    范例:
    这个程式通常是由 /etc/rc.d 中的程式在系统启始阶段执行。

    名称 lpq
    -- 显示列表机贮列中未完成的工作 用法

    lpq [l] [P] [user]

    说明
    lpq 会显示由 lpd 所管理的列表机贮列中未完成的项目。

    范例
    范例 1. 显示所有在 lp 列表机贮列中的工作
    # lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes

    相关函数
    lpr,lpc,lpd

    名称: lpr
    使用权限: 所有使用者
    使用方式:lpr [ -P printer ]
    将档案或是由标准输入送进来的资料送到印表机贮列之中,印表机管理程式 lpd 会在稍后将这个档案送给适当的程式或装置处理。lpr 可以用来将料资送给本地或是远端的主机来处理。

    参数:


    -p Printer: 将资料送至指定的印表机 Printer,预设值为 lp。

    范例:
    www.c 和 kkk.c 送到印表机 lp。
    lpr -Plp www.c kkk.c

    名称: lprm
    -- 将一个工作由印表机贮列中移除 用法

    /usr/bin/lprm [P] [file...]

    说明
    尚未完成的印表机工作会被放在印表机贮列之中,这个命令可用来将常未送到印表机的工作取消。由于每一个印表机都有一个独立的贮列,你可以用 -P 这个命令设定想要作用的印列机。如果没有设定的话,会使用系统预设的印表机。

    这个命令会检查使用者是否有足够的权限删除指定的档案,一般而言,只有档案的拥有者或是系统管理员才有这个权限。

    范例
    将印表机 hpprinter 中的第 1123 号工作移除


    lprm -Phpprinter 1123


    将第 1011 号工作由预设印表机中移除
    lprm 1011
  • linux使用大全(6)
    指令:mesg
    使用权限 : 所有使用者

    使用方式 : mesg [y|n]

    说明 : 决定是否允许其他人传讯息到自己的终端机介面

    y : 允许讯息传到终端机介面上。
    n : 不允许讯息传到终端机介面上 。
    如果没有设定,则讯息传递与否则由终端机界面目前状态而定。

    例子 :
    改变目前讯息设定,改成不允许讯息传到终端机介面上 :
    mesg n


    与 mesg 相关的指令有: talk,write,wall。


    名称:/etc/aliases
    使用权限:系统管理者
    使用方式: newaliases
    说明:
    sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。

    /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。

    参数:没有任何参数。 范例:
    # newaliases

    下面命令会做相同的事,
    # sendmail -bi

    相关命令:
    mail, mailq, newaliases, sendmail



    名称 : talk
    使用权限 : 所有使用者

    使用方式 :

    talk person [ttyname]
    说明 : 与其他使用者对谈

    把计 :

    person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入 person@machine.name
    ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息

    例子.1 :

    与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
    talk Rollaend


    接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c

    例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
    talk Rollaend@linuxfab.cx pts/2


    接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c

    注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。


    名称 : wall
    使用权限 : 所有使用者

    使用方式 :

    wall [ message ]
    使用说明:
    wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)

    例子 :

    传讯息"hi" 给每一个使用者 :
    wall hi




    名称 : write
    使用权限 : 所有使用者

    使用方式 :

    write user [ttyname]
    说明 : 传讯息给其他使用者

    把计 :

    user : 预备传讯息的使用者帐号
    ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息

    例子.1 :

    传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
    write Rollaend


    接下来就是将讯息打上去,结束请按 ctrl+c

    例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
    write Rollaend pts/2


    接下来就是将讯息打上去,结束请按 ctrl+c

    注意 : 若对方设定 mesg n,则此时讯席将无法传给对方

    名称:kill
    使用权限:所有使用者

    使用方式:

    kill [ -s signal | -p ] [ -a ] pid ...
    kill -l [ signal ]
    说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
    把计

    -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
    -p : 印出 pid , 并不送出信号
    -l (signal) : 列出所有可用的信号名称
    范例:

    将 pid 为 323 的行程砍掉 (kill) :
    kill -9 323

    将 pid 为 456 的行程重跑 (restart) :
    kill -HUP 456




    名称:nice
    使用权限:所有使用者

    使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]

    说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)


    把计

    -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
    --help 显示求助讯息
    --version 显示版本资讯
    范例:
    将 ls 的优先序加 1 并执行 :
    nice -n 1 ls

    将 ls 的优先序加 10 并执行 :
    nice ls将 ls 的优先序加 10 并执行

    注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。



    名称:ps
    使用权限:所有使用者
    使用方式:ps [options] [--help]
    说明:显示瞬间行程 (process) 的动态
    参数:
    ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
    -A 列出所有的行程
    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的行程

    au(x) 输出格式 :

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    USER: 行程拥有者
    PID: pid
    %CPU: 占用的 CPU 使用率
    %MEM: 占用的记忆体使用率
    VSZ: 占用的虚拟记忆体大小
    RSS: 占用的记忆体大小
    TTY: 终端的次要装置号码 (minor device number of tty)
    STAT: 该行程的状态:
    D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
    R: 正在执行中
    S: 静止状态
    T: 暂停执行
    Z: 不存在但暂时无法消除
    W: 没有足够的记忆体分页可分配
    <: 高优先序的行程
    N: 低优先序的行程
    L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
    START: 行程开始时间
    TIME: 执行的时间
    COMMAND:所执行的指令

    范例:

    ps
    PID TTY TIME CMD
    2791 ttyp0 00:00:00 tcsh
    3092 ttyp0 00:00:00 ps
    % ps -A
    PID TTY TIME CMD
    1 ? 00:00:03 init
    2 ? 00:00:00 kflushd
    3 ? 00:00:00 kpiod
    4 ? 00:00:00 kswapd
    5 ? 00:00:00 mdrecoveryd
    .......
    % ps -aux
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
    root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
    root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
    root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
  • linux指令大全(4)
    名称 : sleep
    使用权限 : 所有使用者

    使用方式 : sleep [--help] [--version] number[smhd]

    说明 : sleep 可以用来将目前动作延迟一段时间

    参数说明 :

    --help : 显示辅助讯息
    --version : 显示版本编号
    number : 时间长度,后面可接 s、m、h 或 d
    其中 s 为秒,m 为 分钟,h 为小时,d 为日数

    例子 :
    显示目前时间后延迟 1 分钟,之后再次显示时间 :
    date;sleep 1m;date



    名称: time
    使用权限: 所有使用者

    使用方式: time [options] COMMAND [arguments]

    说明: time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。

    把计

    -o or --output=FILE
    设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
    -a or --append
    配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
    -f FORMAT or --format=FORMAT
    以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。
    一般设定上,你可以用
    \t
    表示跳栏,或者是用
    \n
    表示换行。每一项资料要用 % 做为前导。如果要在字串中使用百分比符号,就用 。(学过 C 语言的人大概会觉得很熟悉)
    time 指令可以显示的资源有四大项,分别是:

    Time resources
    Memory resources
    IO resources
    Command info

    详细的内容如下:


    Time Resources
    E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数字并不代表实际的 CPU 时间。
    e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的 CPU 时间。
    S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
    U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
    P 执行指令时 CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的 CPU 时间除以总时间。


    Memory Resources
    M 执行时所占用的实体记忆体的最大值。单位是 KB
    t 执行时所占用的实体记忆体的平均值,单位是 KB
    K 执行程序所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
    D 执行程序的自有资料区(unshared data area)的平均大小,单位是 KB
    p 执行程序的自有堆叠(unshared stack)的平均大小,单位是 KB
    X 执行程序间共享内容(shared text)的平均值,单位是 KB
    Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数


    IO Resources
    F 此程序的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给其他程序。此时该页的内容必须从置换档里再读出来。
    R 此程序的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程序。此时该页的内容并未被破坏,不必从置换档里读出来
    W 此程序被交换到置换档的次数
    c 此程序被强迫中断(像是分配到的 CPU 时间耗尽)的次数
    w 此程序自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
    I 此程序所输入的档案数
    O 此程序所输出的档案数
    r 此程序所收到的 Socket Message
    s 此程序所送出的 Socket Message
    k 此程序所收到的信号 ( Signal )数量


    Command Info
    C 执行时的参数以及指令名称
    x 指令的结束代码 ( Exit Status )




    -p or --portability
    这个选项会自动把显示格式设定成为:
    real %e
    user %U
    sys %S
    这么做的目的是为了与 POSIX 规格相容。
    -v or --verbose
    这个选项会把所有程式中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。

    范例:
    利用下面的指令
    time -v ps -aux

    我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
    root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
    root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
    ......
    root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux

    Command being timed: "ps -aux"
    User time (seconds): 0.05
    System time (seconds): 0.06
    Percent of CPU this job got: 68%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 0
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 238
    Minor (reclaiming a frame) page faults: 46
    Voluntary context switches: 0
    Involuntary context switches: 0
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0
  • linux使用大全(5)
    名称: uptime
    使用权限: 所有使用者
    使用方式: uptime [-V]
    说明: uptime 提供使用者下面的资讯,不需其他参数:

    现在的时间
    系统开机运转到现在经过的时间
    连线的使用者数量
    最近一分钟,五分钟和十五分钟的系统负载
    参数: -V 显示版本资讯。
    范例: uptime
    其结果为:
    10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

    名称:chfn

    使用权限:所有使用者

    用法:shell>> chfn

    说明:提供使用者更改个人资讯,用于 finger and mail username

    范例:

    shell>> chfn
    Changing finger information for user
    Password: [del]
    Name[]:Johnney Huang ### 提供 finger 时的资料
    Office[]:NCCU
    Office Phone[]: [del]
    Home Phone[]: [del]


    名称:chsh

    使用权限:所有使用者

    用法:shell>> chsh

    说明:更改使用者 shell 设定

    范例:

    shell>> chsh
    Changing fihanging shell for user1
    Password: [del]
    New shell [/bin/tcsh]: ### [是目前使用的 shell]
    [del]

    shell>> chsh -l ### 展示 /etc/shells 档案内容
    /bin/bash
    /bin/sh
    /bin/ash
    /bin/bsh
    /bin/tcsh
    /bin/csh



    ” finger [返回]
    名称: finger
    使用权限: 所有使用者

    使用方式: finger [options] user[@address]

    说明:finger 可以让使用者查询一些其他使用者的资料。会列出来的资料有:

    Login Name
    User Name
    Home directory
    Shell
    Login status
    mail status
    .plan
    .project
    .forward

    其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等档案里的资料。如果没有就没有。finger 指令并不限定于在同一伺服器上查询,也可以寻找某一个远端伺服器上的使用者。只要给一个像是 E-mail address 一般的地址即可。
    把计

    -l
    多行显示。

    -s
    单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远端伺服器的使用者,这个选项无效。

    范例:下列指令可以查询本机管理员的资料:
    finger root

    其结果如下:
    Login: root Name: root
    Directory: /root Shell: /bin/bash
    Never logged in.
    No mail.
    No Plan.




    名称:last

    使用权限:所有使用者

    使用方式:shell>> last [options]

    说明:显示系统开机以来获是从每月初登入者的讯息

    把计

    -R 省略 hostname 的栏位
    -num 展示前 num 个
    username 展示 username 的登入讯息
    tty 限制登入讯息包含终端机代号

    范例:

    shell>> last -R -2
    johnney pts/1 Mon Aug 14 20:42 still logged in
    johnney pts/0 Mon Aug 14 19:59 still logged in

    wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp


    shell>> last -2 minery
    minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
    minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)

    wtmp begins Tue Aug 1 09:01:10 2000




    名称:login

    这个命令都不会就不要干算了!呵呵我也不在这里多费笔墨耽误大家美好青春了^_^



    名称:passwd

    使用权限:所有使用者

    使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

    说明:用来更改使用者的密码

    参数:
    -k

    -l

    -u

    -f

    -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用.

    -S 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用.

    [username] 指定帐号名称.



    名称 : who
    使用权线 : 所有使用者都可使用

    使用方式 : who - [husfV] [user]

    说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。

    把计 :

    -h : 不要显示标题列
    -u : 不要显示使用者的动作/工作
    -s : 使用简短的格式来显示
    -f : 不要显示使用者的上线位置
    -V : 显示程式版本
    名称:/etc/aliases
    使用权限:系统管理者
    使用方式: 请用 newaliases 更新资料库
    说明:
    sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。

    /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
    # newaliases

    下面命令会做相同的事,
    # sendmail -bi

    相关命令:
    mail, mailq, newaliases, sendmail

    ” mail [返回]
    名称:mail

    使用权限:所有使用者


    使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]


    说明:
    mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。


    参数:
    i 忽略 tty 的中断讯号。 (interrupt)
    I 强迫设成互动模式。 (Interactive)
    v 列印出讯息,例如送信的地点、状态等等。 (verbose)
    n 不读入 mail.rc 设定档。
    s 邮件标题。
    c cc 邮件地址。
    b bcc 邮件地址。


    范例:
    将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
    mail user1@email.address
    mail user1@email.address user2
    将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
    mail -s 标题 -c user1 user2 < mail.txt
  • linux指令大全(3)
    名称 : at
    使用权限 : 所有使用者
    使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
    说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。
    如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks
    另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程式,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。  
    -V : 印出版本编号
    -q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
    -m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者
    -f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
    -l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
    -d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
    -v : 列出所有已经完成但尚未删除的指定
    例子 :
    三天后的下午 5 点锺执行 /bin/ls :
    at 5pm + 3 days /bin/ls
    三个星期后的下午 5 点锺执行 /bin/ls :
    at 5pm + 2 weeks /bin/ls
    明天的 17:20 执行 /bin/date :
    at 17:20 tomorrow /bin/date
    1999 年的最后一天的最后一分钟印出 the end of world !
    at 23:59 12/31/1999 echo the end of world !

    名称:cal
    使用权限:所有使用者
    使用方式:cal [-mjy] [month [year]]
    说明:
    显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:``cal 89\ 将不会是显示 1989 年的年历。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
    1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋旧历。
    -m : 以星期一为每周的第一天方式显示。
    -j : 以凯撒历显示,即以一月一日起的天数显示。
    -y : 显示今年年历。
    名称 : crontab
    使用权限 : 所有使用者
    使用方式 :
    crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
    说明 :
    crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
    参数 :
    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
    -r : 删除目前的时程表
    -l : 列出目前的时程表
    时程表的格式如下 :
    f1 f2 f3 f4 f5 program
    其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
    当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
    当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
    当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
    当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

    使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
    例子 :

    每月每天每小时的第 0 分钟执行一次 /bin/ls :
    0 7 * * * /bin/ls

    在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
    0 6-12/3 * 12 * /usr/bin/backup

    周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
    0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

    每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
    20 0-23/2 * * * echo "haha"

    注意 :

    当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。
    名称 : date
    使用权限 : 所有使用者
    使用方式 :
    date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

    说明 :

    date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :

    时间方面 :

    % : 印出 %
    %n : 下一行
    %t : 跳格
    %H : 小时(00..23)
    %I : 小时(01..12)
    %k : 小时(0..23)
    %l : 小时(1..12)
    %M : 分钟(00..59)
    %p : 显示本地 AM 或 PM
    %r : 直接显示时间 (12 小时制,格式为 hh:mms [AP]M)
    %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
    %S : 秒(00..61)
    %T : 直接显示时间 (24 小时制)
    %X : 相当于 %H:%M:%S
    %Z : 显示时区

    日期方面 :
    %a : 星期几 (Sun..Sat)
    %A : 星期几 (Sunday..Saturday)
    %b : 月份 (Jan..Dec)
    %B : 月份 (January..December)
    %c : 直接显示日期与时间
    %d : 日 (01..31)
    %D : 直接显示日期 (mm/dd/yy)
    %h : 同 %b
    %j : 一年中的第几天 (001..366)
    %m : 月份 (01..12)
    %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
    %w : 一周中的第几天 (0..6)
    %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
    %x : 直接显示日期 (mm/dd/yy)
    %y : 年份的最后两位数字 (00.99)
    %Y : 完整年份 (0000..9999)

    若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
    把计 :

    -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
    --help : 显示辅助讯息
    -s datestr : 将系统时间设为 datestr 中所设定的时间
    -u : 显示目前的格林威治时间
    --version : 显示版本编号

    例子 :
    显示时间后跳行,再显示目前日期 :
    date +%T%n%D

    显示月份与日数 :
    date +%B %d

    显示日期与设定时间(12:34:56) :
    date --date 12:34:56

    注意 :

    当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

    当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
  • Linux指令大全(1)
    名称:cat
    使用权限:所有使用者
    使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
    说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
    参数:
    -n 或 --number 由 1 开始对所有输出的行数编号
    -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 --show-nonprinting

    范例:
    cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
    cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3

    名称 : cd
    使用权限 : 所有使用者

    使用方式 : cd [dirName]

    说明 : 变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录)。

    另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。

    范例 : 跳到 /usr/bin/ :
    cd /usr/bin

    跳到自己的 home directory :
    cd ~

    跳到目前目录的上上两层 :
    cd ../..
    指令名称 : chmod
    使用权限 : 所有使用者

    使用方式 : chmod [-cfvR] [--help] [--version] mode file...

    说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

    把计 :

    mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
    + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
    r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
    -c : 若该档案权限确实已经更改,才显示其更改动作
    -f : 若该档案权限无法被更改也不要显示错误讯息
    -v : 显示权限变更的详细资料
    -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
    --help : 显示辅助说明
    --version : 显示版本

    范例 :将档案 file1.txt 设为所有人皆可读取 :
    chmod ugo+r file1.txt

    将档案 file1.txt 设为所有人皆可读取 :
    chmod a+r file1.txt

    将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
    chmod ug+w,o-w file1.txt file2.txt

    将 ex1.py 设定为只有该档案拥有者可以执行 :
    chmod u+x ex1.py

    将目前目录下的所有档案与子目录皆设为任何人可读取 :
    chmod -R a+r *

    此外chmod也可以用数字来表示权限如 chmod 777 file
    语法为:chmod abc file

    其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
    r=4,w=2,x=1
    若要rwx属性则4+2+1=7;
    若要rw-属性则4+2=6;
    若要r-x属性则4+1=7。

    范例:
    chmod a=rwx file


    chmod 777 file

    效果相同
    chmod ug=rwx,o=x file


    chmod 771 file

    效果相同
    若用chmod 4755 filename可使此程式具有root的权限
    指令名称 : chown
    使用权限 : root

    使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

    说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

    把计 :

    user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help : 显示辅助说明--version : 显示版本

    范例 :
    将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
    chown jessie:users file1.txt

    将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
    chmod -R lamport:users *


    名称:cp
    使用权限:所有使用者

    使用方式:

    cp [options] source dest
    cp [options] source... directory

    说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

    把计

    -a 尽可能将档案状态、权限等资料都照原状予以复制。
    -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
    -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
    范例:
    将档案 aaa 复制(已存在),并命名为 bbb :
    cp aaa bbb

    将所有的C语言程式拷贝至 Finished 子目录中 :
    cp *.c Finished



    名称:cut

    使用权限:所有使用者

    用法:cut -cnum1-num2 filename

    说明:显示每行从开头算起 num1 到 num2 的文字。

    范例:

    shell>> cat example
    test2
    this is test1
    shell>> cut -c0-6 example ## print 开头算起前 6 个字元
    test2
    this i


    名称 : find
    用法 : find
    使用说明 :

    将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。

    find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression

    expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

    -mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
    -amin n : 在过去 n 分钟内被读取过
    -anewer file : 比档案 file 更晚被读取过的档案
    -atime n : 在过去 n 天过读取过的档案
    -cmin n : 在过去 n 分钟内被修改过
    -cnewer file :比档案 file 更新的档案
    -ctime n : 在过去 n 天过修改过的档案
    -empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
    -ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
    -name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
    -size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
    d: 目录
    c: 字型装置档案
    b: 区块装置档案
    p: 具名贮列
    f: 一般档案
    l: 符号连结
    s: socket
    -pid n : process id 是 n 的档案

    你可以使用 ( ) 将运算式分隔,并使用下列运算。
    exp1 -and exp2
    ! expr
    -not expr
    exp1 -or exp2
    exp1, exp2
  • linux指令大全(2)
    范例:
    将目前目录及其子目录下所有延伸档名是 c 的档案列出来。
    # find . -name "*.c"


    将目前目录其其下子目录中所有一般档案列出
    # find . -ftype f


    将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出
    # find . -ctime -20



    名称:less

    使用权限:所有使用者

    使用方式:

    less [Option] filename

    说明:
    less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动
    以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。


    范例:


    指令名称 : ln
    使用权限 : 所有使用者

    使用方式 : ln [options] source dist,其中 option 的格式为 :

    [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
    [--help] [--version] [--]
    说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
    ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。

    不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。


    -f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本
    范例 :
    将档案 yy 产生一个 symbolic link : zz
    ln -s yy zz

    将档案 yy 产生一个 hard link : zz
    ln yy xx



    名称:locate
    使用权限:所有使用者
    使用方式: locate [-q] [-d ] [--database=]
    locate [-r ] [--regexp=]
    locate [-qv] [-o ] [--output=]
    locate [-e ] [-f ] <[-l ] [-c]
    <[-U ] [-u]>
    locate [-Vh] [--version] [--help]
    说明:
    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。

    在一般的 distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用

    # locate your_file_name

    的型式就可以了。 参数:
    -u
    -U

    建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。

    -e


    排除在寻找的范围之外。

    -l
    如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。

    -f
    将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。

    -q
    安静模式,不会显示任何错误讯息。

    -n
    至多显示 个输出。

    -r
    使用正规运算式 做寻找的条件。

    -o
    指定资料库存的名称。

    -d

    指定资料库的路径

    -h
    显示辅助讯息

    -v
    显示更多的讯息

    -V
    显示程式的版本讯息 范例:

    locate chdrv : 寻找所有叫 chdrv 的档案
    locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
    locate -u : 建立资料库


    名称 : ls
    使用权限 : 所有使用者

    使用方式 : ls [-alrtAFR] [name...]

    说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。


    -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
    -l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
    -r 将档案以相反次序显示(原定依英文字母次序)
    -t 将档案依建立时间之先后次序列出
    -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
    -F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
    -R 若目录下有档案,则以下之档案亦皆依序列出

    范例:
    列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
    ls -ltr s*

    将 /bin 目录以下所有目录及档案详细资料列出 :
    ls -lR /bin

    列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
    ls -AF

    名称:more
    使用权限:所有使用者
    使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
    说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
    参数:-num 一次显示的行数
    -d 提示使用者,在画面下方显示 [Press space to continue, q to quit.] ,如果使用者按错键,则会显示 [Press h for instructions.] 而不是 哔 声
    -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
    -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
    -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
    -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
    -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
    +/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
    +num 从第 num 行开始显示
    fileNames 欲显示内容的档案,可为复数个数
    范例:
    more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
    more +20 testfile 从第 20 行开始显示 testfile 之档案内容。


    名称:mv
    使用权限:所有使用者

    使用方式:

    mv [options] source dest
    mv [options] source... directory
    说明:将一个档案移至另一档案,或将数个档案移至另一目录。
    参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。

    范例:

    将档案 aaa 更名为 bbb :
    mv aaa bbb

    将所有的C语言程式移至 Finished 子目录中 :
    mv -i *.c



    名称:rm
    使用权限:所有使用者

    使用方式:rm [options] name...

    说明:删除档案及目录。

    把计

    -i 删除前逐一询问确认。
    -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    -r 将目录及以下之档案亦逐一删除。
    范例:
    删除所有C语言程式档;删除前逐一询问确认 :
    rm -i *.c

    将 Finished 子目录及子目录中所有档案删除 :
    rm -r Finished



    名称:rmdir
    使用权限:于目前目录有适当权限的所有使用者

    使用方式: rmdir [-p] dirName

    说明: 删除空的目录。

    参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

    范例:

    将工作目录下,名为 AAA 的子目录删除 :
    rmdir AAA

    在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
    rmdir -p BBB/Test



    名称:split
    使用权限:所有使用者

    使用方式:split [OPTION] [INPUT [PREFIX]]

    说明:

    将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 `x。若没有 INPUT 档或为 `-,则从标准输入读进资料。

    匡兜

    -b, --bytes=SIZE

    SIZE 值为每一输出档案的大小,单位为 byte。
    -C, --line-bytes=SIZE

    每一输出档中,单行的最大 byte 数。
    -l, --lines=NUMBER

    NUMBER 值为每一输出档的列数大小。
    -NUMBER

    与 -l NUMBER 相同。
    --verbose

    于每个输出档被开启前,列印出侦错资讯到标准错误输出。
    --help

    显示辅助资讯然后离开。
    --version

    列出版本资讯然后离开。
    SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。

    范例:

    PostgresSQL 大型资料库备份与回存:

    因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用 split进行档案分割。


    % pg_dump dbname | split -b 1m - filename.dump.



    重新载入


    % createdb dbname
    % cat filename.dump.* | pgsql dbname



    名称:touch
    使用权限:所有使用者

    使用方式:
    touch [-acfm]
    [-r reference-file] [--file=reference-file]
    [-t MMDDhhmm[[CC]YY][.ss]]
    [-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
    [--no-create] [--help] [--version]
    file1 [file2 ...]


    说明:
    touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。


    参数:
    a 改变档案的读取时间记录。
    m 改变档案的修改时间记录。
    c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
    f 不使用,是为了与其他 unix 系统的相容性而保留。
    r 使用参考档的时间记录,与 --file 的效果一样。
    d 设定时间与日期,可以使用各种不同的格式。
    t 设定档案的时间记录,格式与 date 指令相同。
    --no-create 不会建立新档案。
    --help 列出指令格式。
    --version 列出版本讯息。


    范例:


    最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。

    touch file
    touch file1 file2

    将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm ,就是月日时与分。

    touch -c -t 05061803 file
    touch -c -t 050618032000 file

    将 file 的时间记录改变成与 referencefile 一样。

    touch -r referencefile file

    将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。

    touch -d "6:03pm" file
    touch -d "05/06/2000" file
    touch -d "6:03pm 05/06/2000" file
  •   Linux下硬盘分区基础

      什么是硬盘分区,分区用来做什么?

      分区就是硬盘的“段落”。Windows分区有自己的盘符(C:,D:等等),这些分区看起来都好像是一个独立的硬盘。  

      最简单的情况下就是将整个硬盘作为一个唯一的分区。如果您购买了一台已经预装了window的机器,基本上都是这种情况。  

      如果您希望在机器上安装更多的操作系统,将需要更多的分区。您更不能在这个单独的分区里面再安装linux。如果您要同时安装Windows ME和 Windows2000,那么您将需要两个分区。原因是不用的操作系统原则上采用不同的文件系统。如果几个操作系统都支持相同的文件系统,通常为了避免在一个分区下有相同的系统目录,也将他们安装在不同的磁盘分区。  

      在Linux下是不同的情况,它本身又有更多的分区--比如,根分区 “/” 和交换分区“swap”。

      提示:说的更清楚一点:您在安装Linux时考虑的并不是windows分区下还有多少空间,因为windows分区下的空间Linux不能使用。您需要在Windows分区外建立新的分区。

      分区类型

      硬盘分区一共有三种:主分区,扩展分区和逻辑分区。  

      在一块硬盘上最多只能有四个主分区。您可以另外建立一个扩展分区来代替四个主分区的其中一个,然后在扩展分区下您可以建立更多的逻辑分区。  

      扩展分区只不过是逻辑分区的“容器”。实际上只有主分区和逻辑分区进行数据存储。

      提示:Windows9x/ME下自带的分区程序fdisk只能定义一个主分区。也就是说,在Windows9x/ME下您只能定义最多一个主分区,一个扩展分区和扩展分区下更多的逻辑分区。如果你想要使用更多的主分区,必须在Linux下进行分区。

      分区和格式化

      每个操作系统下都有自己的用来改变硬盘分区的工Windows9x/M下是非常有名的FDISK,在Windows NT/2000/XP中带有一个非常方便的图形界面的工具,他的位置在不同的Windows版本下也稍微有所不同(比如在2000下控制面板—管理工具—计算机管理—磁盘管理)。在Linux下进行分区既可以使用FDISK,或者一个相同功能的图形界面程序。  

      每个主分区和逻辑分区都回被存储一个识别文件系统的附加信息。操作系统(Windows或者Linux等等)能通过这些信息非常容易的识别和确认,应该使用哪个分区。不能识别的操作系统分区将会被忽略。  

      通过分区当然不能产生任何文件系统。在分区之后只是对硬盘上的磁盘空间进行了保留,还不能直接使用。在此之后分区必须要进行格式化。在Windows下可以通过资源管理器下的文件菜单或者FOMATE程序来执行,在Linux下大多数情况下由mke2fs来完成。  

      提示:Linux支持不同的文件系统。应用最广泛的是ext2。ext2就是有我们上面提到的mke2fs程序来建立的。Linux当然也支持reiserfs文件系统 

      注意:进行任何磁盘分区或大小的改动工作,都会丢失以前的数据。一次在分区直前一定要对数据进行备份。

      Dos/Windows下的分区名称

      在Windows下操作系统使用的分区将用盘符来表示。A:和B:为软驱保留,其他应盘上的主分区和逻辑分区将从C:开始依次排列。(扩展分区没有任何盘符,而且是看不到的。在我indowsx下同样也看不到Linux分区)  

      如果一台机器有很多的硬盘,光驱,软驱等,磁盘分区的命名将产生混乱。在这种情况下,第一块硬盘上的主分区和逻辑分区将首先得到命名盘符;然后是第二块,第三块等等。比如您有三块硬盘,每一快硬盘上同时又有一个主分区和两个逻辑分区,那么第一块硬盘的命名将是C:,F:,G:,第二块为D:,H:, I:,第三块为E:,J:,K:。  

      在WindowsNT/2000/XP下可以改变这些系统自动命名的名称。比如你可以将一个光驱命名为X,这样在添加新的分区的时候他的名称就不会改变了。  

      陌生文件系统的分区将不会被命名,在大多数程序里面(比如资源管理器)是看不到的。、这些分区将只能在磁盘分区工具(Windows9x/ME下的FDISK,Win2000下的计算机管理-命令解释器)下面显示。

      Linux下的分区名称

      Linux下的分区命名比Windows下面将更加清晰详细,但是由此而来的名称不容易记住。不同于Windows下的盘符,Linux通常采用设备- 名称(device-name)。一般的硬盘(比如IDE硬盘)将采用/dev/hdxy来命名。X表示硬盘(a是第一块硬盘,b是第二块硬盘,依次类推),y是分区的号码(从0开始,1,2,3等等)。SCSI硬盘将用/dev/sdxy来命名。光驱(不管是IDE类型或者SCSI)将和硬盘一样来命名。  

      提示:IDE(集成电路设备)和SCSI(小型计算机系统接口)是两个目前最流行的连接计算机硬盘,光驱或者软驱的系统。SCSI比IDE速度要快,但是同样价钱也要贵一些。SCSI通常可以用于文件服务器和数据库服务器。Linux支持这两种系统(当然可以同时在一台机器上拥有IDE和SCSI设备)  

      IDE硬盘和光驱设备将由内部连接来区分区定。/dev/hda表示第一个IDE信道的第一个设备(master),/dev/hdb表示第一个IDE信道的第二个设备(slave)。按照这个原则,/dev/hdc和/dev/hdd为第二个IDE信道的master和slave设备。被命名为/dev/had和/dev/hdc的两个设备在理论上是同样可以的,在这里不使用 /dev/hdb。(这种情况下,设备被作为master连接在第一和第二个IDE信道上)  

      SCSI硬盘或者光驱设备依赖于设备的ID号码,不考虑遗漏的ID号码。比如三个SCSI设备的ID号码分别是0,2,5,设备名称分别是/dev/sda,/dev/sdb, /dev/sdc。如果现在再添加一个ID号码为3的设备,那么这个设备将被以/dev/sdc来命名,ID号码为5的设备将被称为/dev/sdd。  

      分区的号码不依赖于IDE或者SCSI设备的命名,号码1到4位主分区或者扩展分区保留,从5开始才用来为逻辑分区命名。由于这个原因,经常会有号码漏洞。(比如1,2,5,6,在这里3和4就是号码漏洞)比如:第一块硬盘的主分区为hda1,扩展分区为hda2,扩展分区下的一个逻辑分区为hda5。  

      下面还有一些例子帮助大家来理解  

      /dev/hda 表示整个IDE硬盘

      /dev/hda1 表示第一块IDE硬盘的第一个主分区

      /dev/hda2 表示第一块IDE硬盘的扩展分区

      /dev/hda5 表示第一块IDE硬盘的第一个逻辑分区

      /dev/hda8 表示第一块IDE硬盘的第四个逻辑分区

      /dev/hdb 表示第二个IDE硬盘

      /dev/hdb1 表示第二块IDE硬盘的第一个主分区

      /dev/sda 表示第一个SCSI硬盘

      /dev/sda1 表示第一个SCSI硬盘的第一个主分区

      /dev/sdd3 表示第四个SCSI硬盘的第三个主分区 
  •   计算机网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上、传输文件和执行远程命令等。
      本章介绍下列几个常用的有关网络操作的命令:

      ftp 传输文件

      telnet 登录到远程计算机上

      r - 使用各种远程命令

      netstat 查看网络的状况

      nslookup 查询域名和IP地址的对应

      finger 查询某个使用者的信息

      ping 查询某个机器是否在工作

      使用ftp命令进行远程文件传输

      ftp命令是标准的文件传输协议的用户接口。ftp是在TCP/IP网络上的计算机之间传输文件的简单有效的方法。它允许用户传输ASCII文件和二进制文件。
      在ftp会话过程中,用户可以通过使用ftp客户程序连接到另一台计算机上。从此,用户可以在目录中上下移动、列出目录内容、把文件从远程机拷贝到本地机上、把文件从本地机传输到远程系统中。需要注意的是,如果用户没有那个文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。
      为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp 会话,并用来确定用户对要传输的文件可以进行什么样的访问。另外,用户显然需要知道对其进行ftp 会话的计算机的名字或IP地址。

      Ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:

      $ ftp 主机名/IP

      其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指定主机名,ftp将给出提示符,等待用户输入命令:

      $ ftp

      ftp >

      此时在ftp>提示符后面输入open命令加主机名或IP地址,将试图连接指定的主机。

      不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过ftp使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。
      如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。
      如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。
      一旦用户使用ftp在远程站点上登录成功,将得到“ftp>”提示符。现在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清单,也可以在 help命令后面指定具体的命令名称,获得这条命令的说明。

      最常用的命令有:

      ls 列出远程机的当前目录

      cd 在远程机上改变工作目录

      lcd 在本地机上改变工作目录

      ascii 设置文件传输方式为ASCII模式

      binary 设置文件传输方式为二进制模式

      close 终止当前的ftp会话

      hash 每次传输完数据缓冲区中的数据后就显示一个#号

      get(mget) 从远程机传送指定文件到本地机

      put(mput) 从本地机传送指定文件到远程机

      open 连接远程ftp站点

      quit 断开与远程机的连接并退出ftp

      ? 显示本地帮助信息

      ! 转到Shell中

      下面简单将ftp常用命令作一简介。

      启动ftp会话

      open命令用于打开一个与远程主机的会话。该命令的一般格式是:

      open 主机名/IP

      如果在ftp 会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。

      终止ftp会话

      close、disconnect、quit和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。quit和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp 程序。

      改变目录

      “cd [目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。

      远程目录列表

      ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:

      ls [目录] [本地文件]

      如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。

      从远程系统获取文件

      get和mget命令用于从远程机上获取文件。get命令的一般格式为:

      get 文件名

      您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。

      mget命令一次获取多个远程文件。mget命令的一般格式为:

      mget 文件名列表

      使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。

      向远程系统发送文件

      put和mput命令用于向远程机发送文件。Put命令的一般格式为:

      put 文件名

      mput命令一次发送多个本地文件,mput命令的一般格式为:

      mput 文件名列表

      使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。

      改变文件传输模式

      默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。

      检查传输状态

      传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。

      ftp中的本地命令

      当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdir new_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir 的目录。

      从远程机grunthos下载二进制数据文件的典型对话过程如下:

      $ ftp grunthos
      Connected to grunthos
      220 grunthos ftp server
      Name (grunthos:pc): anonymous
      33l Guest login ok, send your complete e-mail address as password.
      Password:
      230 Guest 1ogin ok, access restrictions apply.
      Remote system type is UNIX.
      ftp > cd pub
      250 CWD command successful.
      ftp > ls
      200 PORT command successful.
      l50 opening ASCII mode data connection for /bin/1s.
      total ll4
      rog1
      rog2
      226 Transfer comp1ete .
      ftp > binary
      200 type set to I.
      ftp > hash
      Hash mark printing on (1024 bytes/hash mark).
      ftp > get rog1
      200 PORT command successfu1.
      150 opening BINARY mode data connection for rogl (l4684 bytes).
      # # # # # # # # # # # # #
      226 Transfer complete.
      14684 bytes received in 0.0473 secs (3e + 02 Kbytes/sec)
      ftp > quit
      22l Goodbye.

      使用telnet命令访问远程计算机

      用户使用telnet命令进行远程登录。该命令允许用户使用telnet协议在远程计算机之间进行通信,用户可以通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。
      为了通过telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。当允许远程用户登录时,系统通常把这些用户放在一个受限制的shell中,以防系统被怀有恶意的或不小心的用户破坏。
      用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程序,就像在本地登录一样。但是,用户只能使用基于终端的环境而不是X Wndows环境,telnet只为普通终端提供终端仿真,而不支持 X Wndow等图形环境。
      telnet命令的一般形式为:
      telnet 主机IP地址。
  •  概述

      软件本地化测试的测试对象是本地化的软件,需要在本地化的操作系统上进行。虽然本地化的软件是基于源程序软件创建的,但二者的测试内容和重点具有很大的不同。

      一般地,二者的不同在于:第一,测试顺序不同。首先要现对源程序软件进行测试,然后再创建本地化软件,测试本地化软件。第二,测试内容和重点不同。源程序软件主要测试功能和性能,结合软件界面的测试。本地化软件的测试,更注重因本地化引起的错误,例如,翻译是否正确,本地化的界面是否美观,本地化后的功能是否与源语言软件保持一致。第三,测试环境不同。源程序软件测试通常在源语言的操作系统上进行。本地化软件在本地化的操作系统上进行。

      本地化测试过程中,需要同时运行源程序软件和本地化软件,依照源程序软件结果作为本地化软件的主要参考。

      软件本地化的错误类型

      软件本地化的错误主要分为两大类:第一、由于源程序软件编码错误引起的;第二,由于软件本地化引起的。其中由于软件本地化产生的错误类型包括语句没有翻译、翻译错误、控件布局错误。对于东亚语系软件,可能存在双字节字符显示错误等。

      综合分析本地化软件的错误类别,可以归结为四种类型:翻译错误,功能错误,界面错误,双字节错误。

      每种类型的错误的数量不同,这与源程序软件和本地化软件的质量有密切关系。如果源程序软件没有经过完整的测试,包括功能测试和本地化性能测试,那么本地化软件中就将存在很多功能错误、界面错误、双字节错误。如果本地化软件没有经过良好的本地化处理,将会产生很多翻译错误和界面错误。

      揭密软件本地化错误

      下面对本地化软件的错误的四种典型类型进行分类讨论,探讨错误的表现特征,产生的原因,测试要求,发现错误的方法。

      翻译错误:

      (1) 产生原因:

        1) 翻译人员不熟悉翻译要求。

        2) 翻译人员工作疏漏。

        3) 用户界面的翻译与标准词汇表不一致。

      (2) 表现特征:

        1) 应该翻译而没有翻译的英文字符。

        2) 不应该翻译而翻译的中文字词。

        3) 错误翻译的字词。

        4) 只在本地化版本中存在该类型错误。

        5) 较多隐含在对话框各控件以及帮助文档中。

      (3) 测试要求:

        1) 明确需要翻译和不需要翻译的内容。

        2) 明确正确的翻译方式。

        3) 根据术语表,确认术语翻译的正确性与一致性。

      (4) 测试方法:

        1) 主要同时打开中英文版本,执行相同的操作。

        2) 结合标准界面词汇翻译表,参照对比。

      (5) 说明:

        1) 对于对话框,如果含有下拉列表框,要打开列表框查看全部项。

        2) 特别要注意选项中开关类翻译错误。

      功能错误:

      (1) 产生原因:

        1) 软件编码错误。

        2) 错误本地化,如将程序中的变量进行了翻译等。

      (2) 表现特征:

        1) 不能实现设计要求的功能。

        2) 产生与设计要求不符合的结果。

        3) 英文和中文都存在同样的错误。

        4) 可能隐含在软件的任何位置或任何操作步骤中。

      (3) 测试要求:

        1) 保证输入数据正确,或者打开了正确的测试用例。

        2) 明确正确的输出结果和中间数据数值及格式。

      (4) 测试方法:

        1) 对于菜单项或工具栏按钮,通过全面测试各个选项,认真观察每一步是否正确执行,输出结果(包括格式和数值)是否正确。

        2) 对于一个命令中的多个并列选项,采用路径跟踪法,按分支顺序测试嵌套的全部子项。

        3) 对于对话框,可以逐个执行各按钮,各个列表选项等观察执行结果。

      (5) 说明:

        1) 特别注意不同选项、不同按钮相互操作的影响。

        2) 注意检查快捷键是否遗漏,是否多余,是否不同,是否起作用。

    布局错误:

      (1) 产生原因:

        1) 软件本地化后,由于源语言和本地化语言的表达方式不同,本地化后的字符数与源语言不同,每个字符所占空间尺寸不同,使得在英文版本正确显示的控件字符,可能在本地化版本显示不正确。

        2) 本地化人员调整程序资源不当引起,例如,对话框及其控件高度或宽度的不正确调整。

      (2) 表现特征:

        1) 控件相互重叠或排列不均匀。

        2) 控件中字符显示不完整。

        3) 主要出现在本地化版本的对话框中。

      (3) 测试要求:

        1) 对话框中控件布局均匀,字符显示完整正确。

        2) 对话框中控件数量相等,没有多余或丢失的控件

      (4) 测试方法:

        1) 执行将要打开对话框的菜单或工具栏按钮,观察打开对话框中的控件布局。

        2) 对比检查源语言软件和本地化软件对应的对话框中控件的数量

      (5) 说明:

        1) 可能在执行不同的操作后,如选择了不同单选或复选按钮后,编辑框显示重叠等。

        2) 执行后带省略号的菜单或命令按钮,将会显示对话框。

      双字节错误:

      (1) 产生原因:

        1) 源程序在设计时没有考虑双字节语言的支持。

        2) 软件本地化后,单字节字符向双字节字符转化过程中,由于单字节和双字节之间的差别,可能使得某些本地化后的双字节字符的显示乱码。

        3) 软件本地化后,对程序中控制符号如换行键“\n”的处理错误而引起乱码。

      (2) 表现特征:

        1) 控件或对话框中显示不可辩识的字符。

        2) 控件或对话框中显示无意义的明显错误的字符。

        3) 不支持双字节字符的输入,包括双字节的文件名和路径名。

        4) 仅出现在本地化后的版本中。

      (3) 测试要求:

        1) 本地化后的软件字符显示正确完整,无乱码或明显错别字。

      (4) 测试方法:

        1) 执行菜单或按钮,检查对话框中的字符。

        2) 打开帮助文档,检查所有需要翻译的字符。

      (5) 说明:

        1) 注意检查对话框下拉列表中需要拖动滚动条才能显示的内容。

      总结

      以上仅列出了本地化软件测试经常遇到的四种错误类型,在实际测试中可能某些错误的现象(如列表框中有多余项或缺少项),既可以认为是布局错误,也可以属于功能错误,应该认真思考该错误表现的实质,将其划分为正确的错误类型。

      实际测试是一个动态的过程,不能孤立静态地对待发现的错误,因为一个错误可能包含着其他的不同类型的错误。比如在对话框中,选择某个按钮,产生一个错误提示对话框,这可能是一个按钮功能错误,如果对话框中存在需要翻译而没有翻译的英文,则又是一个翻译错误,如果对话框中存在无法辨识的字符,则又是一个双字节错误,如果对话框中按钮排列重叠,则还是一个布局错误。

      总之,本地化软件的错误的产生是多方面的,不能仅仅归结为软件本地化过程带来的错误,实际上,良好的国际化设计的源程序是减少软件本地化错误的根本保证。当然,提高软件本地化过程能力,提高翻译和检查,优化本地化软件编译流程,能够减少很多因本地化产生的错误。
  • 由于性能测试与功能测试有很大的区别,所以讨论出的结果可能与预先的设想有一定的区别。
    性能测试的目的:
    为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。

    性能测试指标的来源:
    用户对各项指标提出的明确需求;如果用户没有提出性能指标则根据用户需求、测试设计人员的经验来设计各项测试指标。(需求+经验)

    主要的性能指标:
    服务器的各项指标(CPU、内存占用率等)、后台数据库的各项指标、网络流量、响应时间。

    BUG观点:
    1、性能测试就象人在无风情况下跑步(正常情况下的性能指标);
    2、压力测试就象人在微风中跑步(在正常的基础上加大多少百分比压力的性能指标);
    3、负载测试就象人在强风中跑步(不断加压,直到系统崩溃)。

    HTTP观点:
    1、 负载测试是正常情况下持续的加压;
    2、 压力测试是直接加压达到一个极限值。

    大家统一的观点:
    性能测试、压力测试、负载测试密不可分,可统称为性能测试。

    性能测试要点:
    1、 性能测试是在功能测试完成之后进行。
    2、 性能测试计划、方案一般与测试用例统一在一个文档里。
    3、 测试环境应尽量与用户环境保持一致。
    4、 性能测试一般使用测试工具和测试人员编制测试脚本来完成,性能测试的环境应单独运行尽量避免与其他软件同时使用。
    5、 性能测试的重点在于前期数据的设计与后期数据的分析。
    6、性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高。(说明:当系统中出现的某个功能点需要修改,它一般只会影响到功能测试的设计用例,而对于性能测试,很少影响到性能测试的设计用例。但是如果某个功能有较大的修改,性能测试也应该进行重新测试。)

  • 2006-02-20

    边界值法

    边界值分析也是一种黑盒测试方法,适度等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误。

    选择测试用例的原则:

    一、如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据;


    二、如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1格、比最小个数少1个的数做为测试数据;

    三、根据规格说明的每一个输出条件,使用规则一;


    四、根据规格说明的每一个输出条件,使用规则二;

    五、如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例;


    六、如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例;


    七、分析规格说明,找出其他可能的边界条件。

     


    边界值法举例

    找零钱最佳组合

    假 设 商 店 货 品 价 格 (R) 皆 不 大 於 100 元 ( 且 为 整 数 ) , 若 顾 客 付 款 在 100 元 内 (P) , 求 找 给 顾 客 之 最 少 货币 个(张) 数 ? ( 货 币 面 值 50 元 (N50) , 10 元 (N10) , 5 元 (N5) , 1 元 (N1) 四 种 )


    一、 分 析 输 入 的 情 形 。

    R > 100

    0 < R < = 100


    R <= 0


    P > 100


    R<= P <= 100


    P < R

    二、 分 析 输 出 情 形 。

    N50 = 1

    N50 = 0


    4 > N10 >= 1


    N10 = 0


    N5 = 1


    N5 = 0


    4 > N1 >= 1


    N1 = 0

    三、 分 析 规 格 中 每 一 决 策 点 之 情 形 , 以 RR1, RR2, RR3 表 示 计 算 要 找 50, 10, 5 元 货 币 数 时 之 剩 余 金 额 。 R > 100R <= 0
    P > 100
    P < R
    RR1 >= 50
    RR2 >= 10
    RR3 >= 5

    四、 由 上 述 之 输 入 / 输 出 条 件 组 合 出 可 能 的 情 形 。

    R > 100

    R <= 0


    0 < R <= 100, P > 100
    0 < R <= 100, P < R
    0 < R <= 100, R <= P <= 100, RR = 50
    0 < R <= 100, R <= P <= 100, RR = 49
    0 < R <= 100, R <= P <= 100, RR = 10
    0 < R <= 100, R <= P <= 100, RR = 9
    0 < R <= 100, R <= P <= 100, RR = 5
    0 < R <= 100, R <= P <= 100, RR = 4
    0 < R <= 100, R <= P <= 100, RR = 1
    0 < R <= 100, R <= P <= 100, RR = 0

    五、 为 满 足 以 上 之 各 种 情 形 , 测 试 资 料 设 计 如 下 :

    1. 货品价格 = 101

    2. 货品价格 = 0

    3.货品价格 = -1

    4. 货品价格 = 100, 付款金额 = 101

    5. 货品价格 = 100, 付款金额 = 99

    6. 货品价格 = 50, 付款金额 = 100

    7. 货品价格 = 51, 付款金额 = 100

    8. 货品价格 = 90, 付款金额 = 100

    9. 货品价格 = 91, 付款金额 = 100

    10. 货品价格 = 95, 付款金额 = 100

    11. 货品价格 = 96, 付款金额 = 100

    12. 货品价格 = 99, 付款金额 = 100

    13. 货品价格 = 100, 付款金额 = 100

  • 1.最基本,最常用的,测试物理网络的
      ping 192.168.0.8 -t ,参数-t是等待用户去中断测试
    2.查看DNS、IP、Mac等
      A.Win98:winipcfg
      B.Win2000以上:Ipconfig/all
      C.NSLOOKUP:如查看河北的DNS
      C:\>nslookup
      Default Server: ns.hesjptt.net.cn
      Address: 202.99.160.68
      >server 202.99.41.2 则将DNS改为了41.2
      > pop.pcpop.com
      Server: ns.hesjptt.net.cn
      Address: 202.99.160.68
      Non-authoritative answer:
      Name: pop.pcpop.com
      Address: 202.99.160.212
    3.网络信使
      Net send 计算机名/IP * (广播) 传送内容,注意不能跨网段
      net stop messenger 停止信使服务,也可以在面板-服务修改
      net start messenger 开始信使服务
    4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)
      ping -a IP -t ,只显示NetBios名
      nbtstat -a 192.168.10.146 比较全的
    5.netstat -a 显示出你的计算机当前所开放的所有端口
      netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等
    6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址
      arp -a
    7.在代理服务器端
      捆绑IP和MAC地址,解决局域网内盗用IP!:
      ARP -s 192.168.10.59 00 -50-ff-6c-08-75
      解除网卡的IP与MAC地址的绑定:
      arp -d 网卡IP
    8.在网络邻居上隐藏你的计算机
      net config server /hidden:yes
      net config server /hidden:no 则为开启
    9.几个net命令
      A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
      比如:查看这个IP上的共享资源,就可以
      C:\>net view 192.168.10.8
      在 192.168.10.8 的共享资源
      资源共享名 类型 用途 注释
      --------------------------------------
      网站服务 Disk
      命令成功完成。
      B.查看计算机上的用户帐号列表 net user
      C.查看网络链接 net use
      例如:net use z: \192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘
      D.记录链接 net session
      例如: C:\>net session
      计算机 用户名 客户类型 打开空闲时间
      -------------------------------------------------------------------------------
      \192.168.10.110 ROME Windows 2000 2195 0 00:03:12
      \192.168.10.51 ROME Windows 2000 2195 0 00:00:39
      命令成功完成。
    10.路由跟踪命令
      A.tracert pop.pcpop.com
      B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%
    11.关于共享安全的几个命令
      A.查看你机器的共享资源 net share
      B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)
      net share c$ /d
      net share d$ /d
      net share ipc$ /d
      net share admin$ /d
      注意$后有空格。
      C.增加一个共享:
      c:\net share mymovie=e:\downloads\movie /users:1
      mymovie 共享成功。
      同时限制链接用户数为1人。
    12.在DOS行下设置静态IP
      A.设置静态IP
      CMD
      netsh
      netsh>int
      interface>ip
      interface ip>set add "本地链接" static IP地址 mask gateway
      B.查看IP设置
      interface ip>show address
      Arp
      显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
      语法
      arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
      参数
      -a [InetAddr] [-N IfaceAddr]
      显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
      -g [InetAddr] [-N IfaceAddr]
      与 -a 相同。
      -d InetAddr [IfaceAddr]
      删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。
      -s InetAddr EtherAddr [IfaceAddr]
      向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
       在命令提示符显示帮助。
      注释
      InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
      物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2 A-9C)。
      通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
      只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
      范例
      要显示所有接口的 ARP 缓存表,可键入:
      arp -a
      对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:
      arp -a -N 10.0.0.99
      要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2 A-9C 的静态 ARP 缓存项,可键入:
      arp -s 10.0.0.80 00-AA-00-4F-2 A-9C
      At
      计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。
      语法
      at [\ComputerName] [{[ID] [/delete] /delete [/yes]}]
      at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,...] /next:date[,...]}] command]
      参数
       \computername
      指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。
      ID
      指定指派给已计划命令的识别码。
      /delete
      取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。
      /yes
      删除已计划的事件时,对来自系统的所有询问都回答“是”。
      hours:minutes
      指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。
      /interactive
      对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。
      /every:
      在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。
      date
      指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。
      /next:
      在下一个指定日期(比如,下一个星期四)到来时运行 command。
      command
      指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。
      /?
      在命令提示符显示帮助。
      注释
      Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。
      使用 at
      使用 at 命令时,要求您必须是本地 Administrators 组的成员。
  • 题记:测试是交付成功的优质的产品的保证

     我们每个人,不会都是软件测试人员,但都是某些软件的用户。缺省或默认情况下,用户都会觉得买到的软件是没有问题的,一般不会去想这样的软件可能会有问题,用户只要使用这些软件来解决他们需要解决的问题就可以了。当他们发现问题的时候,甚至会感到震惊。存在的问题很多都和测试的成效有关系,一般的软件产品存在的问题确实比较少,但我觉得即使是以前买的正版的金山快译2000都有着一些显而易见的bug。如果测试不充分,那么这些问题会潜伏在软件中,等到用户发现以后,再有开发人员进行维护,改正错误的费用一般是开发阶段的
    40倍到60倍。

     人们对测试存在着一些误区,例如:

      1 测试是想象到可能出现的问题,然后试图验证这些问题。实际上能想象到的只是一部分的情况,随意性太大,还要取决于开发人员的经验,对业务的熟悉程度和他想象到的程度。
      2 让时间有富裕的员工去做一些测试表面上看这体现了管理的效率和灵活性,但实际上也体现了管理者对测试的轻视。测试和测试的人有很大关系。测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题,细心有条理,总结问题,如果具备这样的优点,做其它工作同样也会很出色,因此这里还有一个要求,就是要喜欢测试这项工作。如果他是专职的,那么肯定更有经验和信心。国内的小伙子好象都喜欢做程序员,两者工作性质不同,待遇不同,地位不同,对自我实现的价值的认识也不同,这是行业的一个需要改善的问题。如果只是为了完成任务而完成任务,或者发现了几个问题就觉得满意了,这在任何其它工作中都是不行的。
      3 测试是相对简单的工作。实际上并非如此,要真正做好一件事都不容易。测试也有很多相关技术和工具。而对测试的轻视问题,也许要通过痛苦的经历和结果才可能确切体会到。很多专家都在对测试的理论进行深入的探讨和研究。

    测试的基本知识

     让我们一起快速过一遍:

     什么是软件测试:在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。测试的目标:以较少的用例、时间和人力找出软件中潜在的各种错误和缺陷,以确保系统的质量。从测试的类型来看,测试分为2种:黑盒测试和白盒测试。黑盒测试又称为功能测试或数据驱动测试,把系统看成一个黑盒子,不考虑程序的内在逻辑,只根据需求规格说明书的要求来检查程序的功能是否符合它的功能说明。白盒测试又称为结构测试和逻辑驱动测试,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。测试用例由测试输入数据以及与之对应的输出结果组成。测试用例设计的好坏直接决定了测试的效果和结果。从测试实际的前后过程来看,软件测试上是由一系列的不同测试所组成,这些软件测试的步骤分为:单元测试、组装测试(集成测试)、确认测试和系统测试。软件开发的过程是自顶向下的,测试则正好相反,以上这些过程就是自底向上,逐步集成的。

     单元测试(模块测试):针对每个模块进行的测试,可从程序的内部结构出发设计测试用例,多个模块可以平行地对立地测试。通常在编码阶段进行,必要的时候要制作驱动模块和桩模块。集成测试:在单元测试的基础上,将所有模块按照设计要求组装成为系统,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。
    确认测试:验证软件的功能和性能及其它特性是否与用户的要求一致。
    系统测试:将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试。

     测试工作的文档主要有:测试计划、测试模型和用例设计或规格说明、测试分析报告等。从软件工程上说,这是属于软件配置的一部分。(我不知道,如果什么报告都没有,只是不断地摆弄执行程序,看到错误和问题就记下来,算不算真正的测试?)

     测试需要一定的技术和工具

     在用例设计过程中,可以考虑到很多方面,并且也有很多的指导方法和技术。

     黑盒测试用例设计包括:

     等价类划分:划分等价类--确立测试用例--设计用例边界值分析:通过分析,考虑如何确立边界情况错误推测法:靠经验和直觉来推测程序中可能存在的各种错误,从而有针对性地编写用例。可以列举出可能的错误和可能发生错误的地方,然后选择用例。因果图:通过画因果图,在图上标明约束和限制,转换成判定表,然后设计测试
    用例。这适合于检查程序输入条件的各种组合情况。

     功能图FD:通过形式化地表示程序的功能说明,并机械地生成功能图的测试用例。

     白盒测试用例设计包括:

     1 逻辑覆盖,以程序内在逻辑结构为基础的测试,包括以下5种类型:
     
      1.1 语句覆盖:每一条可执行语句至少覆盖一次;
      1.2 判定覆盖(分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次;
      1.3 条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
      1.4 判定-条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次;
      1.5 条件组合测试:设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值至少执行一次;
      1.6 路径测试:设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径

     2 基本路径测试

     在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下5个方面:
      2.1 程序的控制流图:描述程序控制流的一种图示方法。
      2.2 程序环境复杂性:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行依次所必须的测试用例数目的上界。
      2.3 导出测试用例
      2.4 准备测试用例,确保基本路径集中的每一条路径的执行
      2.5 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

     程序的静态分析方法:

     1 生成各种引用表、静态错误分析

     2 人工测试:桌前检查、代码评审等

     3 软件测试工具:包括静态分析工具、动态测试工具、测试数据自动化生成工具、模块测试台、测试合成环境

     3.1 静态分析工具:语言程序的预处理器、数据库工具、错误分析器和报告生成器。直接扫描所测试的正文,对程序的数据流和控制流进行分析,然后送出测试报告。

     3.2 动态测试工具:通过选择适当的测试用例,实际运行所测程序,比较实际运行结果和预期结果,发现错误。

     3.3 测试数据自动化生成工具:包括路径测试数据生成程序、随机测试数据生成程序以及根据数据规格说明生成测试数据

     3.4 模块测试台是一种专门的测试用例描述语言,负责将输入数据传送到所测试模块中,然后将实际输出结果与在描述测试用例的语言中所表述的期望结果进行比较,发现错误。另外,也包括其它的功能:语句跟踪、动态断句、覆盖度量、用户自定义符号表、内容表和输出格式。

     3.5 测试合成环境:包括环境模拟程序,代码检查程序,测试文档生成程序,测试执行严整程序,输出比较程序,程序正确性证明程序等,以及各种调试工具。而且还有集成系统,集成了多种工具,如SADAT、Microsoft Test for Windows和PureArtria等。

     测试的管理

     作为项目或产品开发的一个必要的组成部分,需要良好的组织和管理。使用软件质量规范,编写和实现测试用例和模型,可以有效地组织测试。

     一般的测试工作过程也可以是:计划-->配置(必要的软硬件资源下)-->开发(构造或配置测试工具、创建测试套件和测试方案库、准备适当的报告工具并记录测试系统如何运转)-->测试执行(进行测试、记录测试条件和问题,报告结果)。

     测试管理也可以从测试经理和测试小组2个方面去看:

     测试经理要管理好团队,很多人认为测试是枯燥乏味的事情,而且似乎低级的事情,所以测试经理应该不断地激励小组成员,为他们争取利益。在时间进度上保证稳步前进。就象赛跑,一开始就加班加点,只会导致极限的过早到来。作为测试经理,应该有足够的质量意识。评价质量风险的方法是“失败模式和效果分析” (Failure Mode and Effect Analysis, FMEA)。这种方法可以允许您在特定的质量风险和结果上映射需求、规范,以及项目小组假设。然后,按照风险级别进行分类,并按序排列。实际上如果能得到充分的资源已是很困难的了,能用好临时的测试人员也已经不错了。一般企业的主管和技术经理都并不怎么真正重视测试工作的意义和价值。也许他们认为临时的投入一次性的强力测试足以发现绝大部分问题,而实际上这对产品的长远发展,以及质量改进都没有太大好处。

     测试过程中软件功能可能进行调整和变化,测试发现问题也会导致变化,需要重新的测试。对这些变更也需要进行管理。另外,由于上层管理部门的不重视,必须想办法与之进行清楚而有效的沟通;同开发部门的沟通也非常重要,因为开发和测试在性质上是有些对立的,很容易在相互之间产生一些不必要的矛盾。和开发部门不同的是,一般质量或测试部门和市场或销售部门的立场倒是比较一致的,如果双方都认为高质量的产品是市场战略中重要的品牌战略,彻底的测试对于达到这样的目标来说意义重大。因此,有必要和市场部门保持协作和交流。

     测试经理可以经常问自己一些问题:

     计划做哪些测试?实际完成了哪些测试?使用了多少用例?其中多少没有通过?管理部门是否有足够的支持?他们是否向你要过测试报告?开发部门的联络是否及时?等等。如果你是测试管理人员,应该可以想到更多的问题。

     测试小组:

     测试小组有多大的规模,一般取决于项目规模、测试人员与开发人员的比例、项目经理对质量保证的认识和期望等,也取决于你的准确的测试计划。对一些项目来说,最好是在开始阶段就有测试人员有所介入。

     如本文一开始所提到的,在测试小组中测试人员必须具备的素质包括:有效的坦率真诚的交流的能力、清晰简明的表达能力、一定的好奇心(但不至于太强,以至于花太多精力去探究一个微小的问题),不应害怕提出尖锐问题引起麻烦,一定的责任心,注意力能够高度集中,是职业悲观主义者(但不是抱怨和憎恶)。

     以下是一些测试的方法和基本工具:

     测试方案、测试模型和测试用例

     测试就象是做实验一样,实验对于象我这样的理工科毕业生来说真是太熟悉不过了。做实验之前必然有实验的方案、内容和步骤,测试似乎也是同样的。另外,基于测试用例的测试和常见的随机性的测来测去也是完全不同的,尽管习惯于随机性测试的人,如果注意力集中的话,他的头脑里也是有一些测试用例的。

     关于测试实验室,进行测试工作首先要争取到尽可能好的环境。如果可能,应该建立测试实验室,实验室包括必要的装备、工具软件(包括测试工具)和各种操作系统平台,保持实验室的实用、整洁,避免他人干扰甚至破坏测试环境。

     关于测试跟踪软件,制作一个简单的测试问题跟踪软件,记录测试的结果,将测试发现的问题分类,并对测试发现的问题和模块、开发人员进行关联,有助于分析问题,并可有效记录测试的结果,形成测试报告,并从中找出一些规律性的东西来。因此测试问题跟踪软件还是有一定的价值的。

     关于测试自动化,有一定的风险。对一个稳定的系统,甚至可以自己开发自动化软件,而对于正处于快速变形中的软件开发过程,接口、主要功能和支持环境在发展变化中。为测试配置环境也要付出很多的时间。

     以下是关于测试的一些技巧和经验:

     在制定测试计划的时候,就要考虑到测试的风险,并抉择要执行哪些测试,并放弃哪些测试;测试计划的评审应该让开发人员参与;测试模型的制作应该尽可能贴近用户,或者站在用户的使用立场上来观测软件,此时应该能发现更多的问题。

     由于测试发现问题,在解决问题后还要重新测试,因此测试的时间可能会比实际更长一些

     识别和注意少数重要的方面,而忽略多数次要的方面,有时候少数的问题足以致命,这些问题将是软件测试结果中重要性最高的错误。

     错误的定位有时是很难的,要找出必然发生的前因后果,而不至于因为描述错误而误导开发人员。有时候确实存在错误不能重建的问题。解决办法之一是在错误报告中给予说明。

     对错误的描述,应该是准确、完整而简练。因为描述的问题或者不完整的描述会引起开发人员的误解,其后果是可以想见的。

     有时有经验的测试人员凭借直觉就可以发现一些问题,这可称为“错误猜测”。

     测试人员容易犯2种错误:一是测试人员发生判断错误,将本没有错误的系统行为报告为错误,或者将错误指定了过高的严重级别,或者过高估计了问题的严重性,这样会引起开发人员的不信任,产生一种象“狼来了”一样的效果;二是测试人员将错误的严重性或优先级定得过低,从而产生“测试逃逸”,这样会造成产品质量的风险。以上两种错误应该尽量避免。

  • http://ppyeer.itpub.net/get/1752/software_manage.pdf
  • Linux的目录结构与Windows不同,而且在Windows下看不到Linux的目录,反过来,Linux也看不到Windows下的目录。Linux下各目录的含义如下:

    "目录名称" "意义"

    /vmlinuz
    该目录中存放的是系统内核

    /bin
    该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。

    /boot
    该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息

    /dev
    该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。

    /cdrom
    该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如“mount /dev/cdrom /cdrom”

    /etc
    该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。

    /sbin
    该目录用来存放系统管理员的系统管理程序。

    /home
    如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。

    /lib
    该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库

    /lost
    found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。

    /mnt
    该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。

    /proc
    可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的

    /root
    如果你是以超级用户的身份登录的,这个就是超级用户的主目录

    /tmp
    用来存放不同程序执行时产生的临时文件

    /usr
    用户的很多应用程序和文件都存放在该目录下

  • 2006-02-17

    Linux快速入门

    [一、初步知识]
    1[系统安装]
    Linux
    的安装时,使用Tab、箭头、空格、回车等键做出选择。Linux一般须安装在单独的分区下,为避免Windows系统中的注册表、快捷方式路径出错,最好安装在硬盘的最后一个分区。即将最后的一个分区删除后,用分区软件(建议用Pqmagic)分为Linux Native(根分区)Linux Swap(数据交换区),如果您的硬盘大于8G,您的Linux root分区应安装在前8G之内(linux 根分区终止扇区 <1023 柱面)。Native分区一般要大于240MB,具体大小视安装的Linux组件决定,建议不要大于2GSwap分区必须有60MB以上。安装前要搜集好您的硬件信息如:CPU、内存、显示器、显卡、鼠标、键盘等。Linux的版本有很多,而且不断更新,根据提示安装一般都可顺利完成。

    2[登陆进入]
    默认安装,启动后在出现的Lilo boot:之后输入Linux(或回车),Linux便开始启动,当出现登陆提示符Login:时,输入用户名,然后出现口令提示符password:输入口令。可进入相应的用户环境。如输入:root,及其密码,可进入超级用户环境#,输入其他用户名及口令,可进入该用户环境$(当然由于版本的不同还可能是%等)。

    3[关闭系统]
    在超级用户提示符#下输入halt(立即关机)或shutdown [time](延迟time分后关机,给各用户每隔一段时间发出还有多长时间将关机的警告)后,计算机将进行一系列的关机工作,最后出现System halt时,表示可以关闭电源了。非超级用户则需用exit命令退出操作环境,再用超级用户:root登陆,才能执行关闭操作。

    4[注意事项]
    DOS不完全相同的地方:

    命令行字母 不区分大小写 区分大小写在Linux中,超级用户的系统提示符是#,一般普通用户的系统提示符是$,普通用户的系统提示符也同DOS一样可以更改。通配符中*?DOS中的含义相同,[]是仅包括括号内的符号,连续的符号可用“-”连接首尾的符号代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用 [a-fi-k ]表示。
    路径分隔符 /
    提示符 > #$
    通配符 *? *?[]

    5[文件类型]
    DOSWindows不同,在Linux系统中,目录和设备都被视为文件,共有四种文件类型,它们是:普通文件,即我们通常所说的文件,在长列目录方式时行首前用一符号“-”表示。目录文件,即我们通常所说的目录,在长列目录方式时行用首前用一字母“d”表示。字符设备文件,如显示器、打印机、终端等,在长列目录方式时行首前用一字母 “c”表示。块设备文件,如硬盘、软盘、光盘在长列目录方式时行首前用一字母“b”表示。在Linux中用长格式列目录命令ls -l时,例如:

    -rwxrw-r-- 5 user group 1089 Nov 18 1998 filename
    存取权限 用户 组名 字节数 最后修改时间 文件名

    DOS下的文件名是8.3格式的,Windows95以后开始支持长文件名,Linux支持长文件名。在DOS下扩展名是comexebat的文件为可执行文件,但在Linux中文件类型只能通过文件属性得知,用命令ls –F可区分目录和文件,后有“/”符号的为目录,后有“*”符号的为可执行文件,用ls –aF可列出所有的文件和目录,包括隐藏的文件和目录,文件名以点号“.”开头的为隐藏文件。

    6[读取权限]
    Linux中,文件的主人称所有者,其他使用者分别称为同组者、其他人,为保证各用户文件的安全,Linux继承了 UNIX的作法,通过设定存取权限,限制某些用户对文件的随意存取。共有三个级别的存取权:读权r、写权w、执行权x。在存取权中共有九个字符的位置其顺序是:所有者、同组人、其他人。在上例中分别表示:主人对文件拥有读写权和执行权,同组人对文件拥有读写权、其他人对文件只拥有读权。

    7[使用帮助]
    Linux中,您只要在命令行中打上man command(您要看帮助的命令),就可以得到该命令的在线帮助。man有一套它自己的命令,通常由单个键组成,按空格键和F键将翻到下一页,按B键翻到上一页,按Q键退出man,回到命令行。

    [二、文件管理和目录操作]
    1
    [文件管理]

    功能 DOS Linux 备注
    显示文件内容 typemore catmore typecat是全部显示,more是分页显示
    拷贝文件 copy cp
    移动文件及改名 move mv
    删除文件 delerase rm
    打印文件 print lpr

    2[目录操作]

    功能 DOS Linux 备注
    列目录及文件 dir/选项 ls –选项 在Linuxcd/是直接返回登录时的目录而不是根目录
    显示当前目录 cd pwd
    变更工作目录 cd目录 cd/目录
    建立目录 mdmkdir mkdir
    删除目录 rdrmdir rmdir
    目录更名 move mv
    拷贝目录 xcopy copy

    据说很多DOS命令都是借鉴UNIX的,而Linux又是从UNIX发展起来,故DOSLinux命令的格式很相似,只是Linux的命令的功能更加强大,各选项、参数有较大区别,具体运用时可使用帮助命令。

    [三、外存储器的使用]
    Linux中一般不能直接访问软盘、其他硬盘逻辑分区、光盘等,在Linux中它们都被视为文件,在使用前必须使用装载命令mount将它们装载到系统的/mnt目录中,使用结束后还须卸载。命令格式如下:

    mount –t 文件系统类型 设备名 装载目录

    常用的文件类型有:
    msdos dos
    分区文件
    vfat
    支持长文件名的dos分区

    ext2 Linux
    的文件系统

    swap Linux swap
    分区或swap文件

    iso9660
    安装CD-ROM的文件系统

    hpfs OS/2
    分区文件系统

    设备名是指要装载的设备的名称,如软盘、硬盘、光盘等,软盘一般为/dev/fd0 fd1,硬盘一般为/dev/hda hdb ,硬盘逻辑分区一般为期hda1 hda2…等等,光盘一般为/dev/hdc。在装载前一般要在/dev/mnt目录下建立一个空的目录(名字自拟),如软盘可为floppy,硬盘分区可为其盘符如cd等等,光盘可为cd-rom,个体使用例子:

    装载一个mddos格式的软盘:mount –t msdos /dev/fd0 /mnt/floppy

    装载一个Linux格式的软盘:mount –t ext2 /dev/fd0 /mnt/floppy

    装载Windows98格式的硬盘分区(C盘):mount –t vfat /dev/hda1 /mnt/c

    装载一个光盘:mount –t iso9660 /dev/hdc /mnt/cd-rom

    装载完成后便可对该目录进行操作,在使用新的软盘及光盘前必须退出该目录,使用卸载命令umount卸载,才可以使用新的软盘及光盘,否则系统会不承认的,光盘在卸载前是不能用光驱面板前的弹出键退出的。
  • 【摘要】我们对自动化测试充满了希望,然而,自动化测试却经常带给我们沮丧和失望。虽然,自动化测试可以把我们从困难的环境中解放出来,在实施自动化测试解决问题的同时,又带来同样多的问题。在开展自动化测试的工作中,关键问题是遵循软件开发的基本规则。本文介绍自动化测试的7个步骤:改进自动化测试过程,定义需求,验证概念,支持产品的可测试性,具有可延续性的设计(design for sustainability),有计划的部署和面对成功的挑战。按照以上7个步骤,安排你的人员、工具和制定你的自动化测试项目计划,你将会通往一条成功之路。

    一个故事:

    我在很多软件公司工作过,公司规模有大有小,也和来自其他公司的人员交流,因此经历过或者听说过影响自动化测试效果的各种各样的的问题。本文将提供若干方法规避可能在自动化测试中出现的问题。我先给大家讲一个故事,以便各位了解自动化测试会出现哪些问题。

    以前,我们有一个软件项目,开发小组内所有的人都认为应该在项目中采用自动化测试。软件项目的经理是Anita Delegate。她评估了所有可能采用的自动化测试工具,最后选择了一种,并且购买了几份拷贝。她委派一位员工——Jerry Overworked负责自动化测试工作。Jerry除了负责自动化测试工作,还有其他的很多任务。他尝试使用刚刚购买的自动化测试工具。当把测试工具应用到软件产品测试中的时候,遇到了问题。这个测试工具太复杂,难于配置。他不得不给测试工具的客户支持热线打了几个电话。最后,Jerry认识到,他需要测试工具的技术支持人员到现场帮助安装测试工具,并找出其中的问题。在打过几个电话后,测试工具厂商派过来一位技术专家。技术专家到达后,找出问题所在,测试工具可以正常工作了。这还算是顺利了。但是,几个月后,他们还是没有真正实现测试自动化,Jerry拒绝继续从事这个项目的工作,他害怕自动化测试会一事无成,只是浪费时间而已。

    项目经理Anita把项目重新指派给Kevin Shorttimer,一位刚刚被雇佣来做软件测试的人员。Kevin刚刚获得计算机科学的学位,希望通过这份工作迈向更有挑战性的、值得去做的工作。AnitaKevin参加工具培训,避免KevinJerry的后尘——由于使用测试工具遇到困难而变得沮丧,导致放弃负责的项目。Kevin非常兴奋。这个项目的测试需要重复测试,有点令人讨厌,因此,他非常愿意采用自动化测试。一个主要的版本发布后,Kevin准备开始全天的自动化测试,他非常渴望得到一个机会证明自己可以写非常复杂的,有难度的代码。他建立了一个测试库,使用了一些技巧的方法,可以支持大部分的测试,这比原计划多花费了很多时间,不过,Kevin使整个测试工作开展的很顺利。他用已有的测试套测试新的产品版本,并且确实发现了bug。接下来,Kevin得到一个从事软件开发职位的机会,离开了自动化的岗位。

    Ahmed Hardluck接手Kevin的工作,从事自动化测试执行工作。他发现Kevin留下的文档不仅少,并且没有太多的价值。Ahmed花费不少时间去弄清楚已有的测试设计和研究如何开展测试执行工作。这个过程中,Ahmed经历了很多失败,并且不能确信测试执行的方法是否正确。测试执行中,执行失败后的错误的提示信息也没有太多的参考价值,他不得不更深的钻研。一些测试执行看起来仿佛永远没有结束。另外一些测试执行需要一些特定的测试环境搭建要求,他更新测试环境搭建文档,坚持不懈地工作。后来,在自动化测试执行中,它发现几个执行失败的结果,经过分析,是回归测试的软件版本中有BUG,导致测试执行失败,发现产品的BUG后,每个人都很高兴。接下来,他仔细分析测试套中的内容,希望通过优化测试套使测试变得更可靠,但是,这个工作一直没有完成,预期的优化结果也没有达到。按照计划,产品的下一个发布版本有几个主要的改动,Ahmed立刻意识到产品的改动会破坏已有的自动化测试设计。接下来,在测试产品的新版本中,绝大多数测试用例执行失败了,Ahmed对执行失败的测试研究了很长时间,然后,从其他人那里寻求帮助。经过商讨,自动化测试应该根据产品的新接口做修改,自动化测试才能运转起来。最后,大家根据新接口修改自动化测试,测试都通过了。产品发布到了市场上。接下来,用户立刻打来投诉电话,投诉软件无法工作。大家才发现自己改写了一些自动化测试脚本,导致一些错误提示信息被忽略了。虽然,实际上测试执行是失败的,但是,由于改写脚本时的一个编程错误导致失败的测试执行结果被忽略了。这个产品终于失败了。

    这是我的故事。或许您曾经亲身经历了故事当中某些情节。不过,我希望你没有这样的相似结局。本文将给出一些建议,避免出现这样的结局。

    问题

    这个故事阐明了几个使自动化测试项目陷入困境的原因:

    自动化测试时间不充足:根据项目计划的安排,测试人员往往被安排利用自己的个人时间或者项目后期介入自动化测试。这使得自动化测试无法得到充分的时间,无法得到真正的关注。

    缺乏清晰的目标:有很多好的理由去开展自动化测试工作,诸如自动化测试可以节省时间,使测试更加简单,提高测试的覆盖率,可以让测试人员保持更好的测试主动性。但是,自动化测试不可能同时满足上述的目标。不同的人员对自动化测试有不同的希望,这些希望应该提出来,否则很可能面对的是失望。

    缺乏经验:尝试测试自己的程序的初级的程序员经常采用自动化自动化测试。由于缺乏经验,很难保证自动化测试的顺利开展。

    更新换代频繁(High turnover):测试自动化往往需要花费很多时间学习的,当自动化测试更新换代频繁的时候,你就丧失了刚刚学习到的自动化测试经验。

    对于绝望的反应:在测试还远没有开始的时候,问题就已经潜伏在软件中了。软件测试不过是发现了这些潜伏的问题而已。就测试本身而言,测试是一件很困难的工作。当在修改过的软件上一遍接一遍的测试时,测试人员变得疲劳起来。测试什么时候后结束?当按照计划的安排,软件应该交付的时候,测试人员的绝望变得尤其强烈。如果不需要测试,那该有多好呀!在这种环境中,自动化测试可能是个可以选择的解决方法。但是,自动化测试却未必是最好的选择,他不是一个现实的解决方法,更像是一个希望。

    不愿思考软件测试:很多人发现实现产品的自动化测试比测试本身更有趣。在很多软件项目发生这样的情况,自动化工程师不参与到软件测试的具体活动中。由于测试的自动化与测试的人为割裂,导致很多自动化对软件测试并没有太大的帮助。

    关注于技术:如何实现软件的自动化测试是一个很吸引人的技术问题。不过,过多的关注如何实现自动化测试,导致忽略了自动化测试方案是否符合测试需要。

    遵守软件开发的规则

    你可能了解SEI(软件工程研究所)提出的CMM(能力成熟度模型)。CMM分为5个界别,该模型用来对软件开发组织划分等级。Jerry Weinberg(美国著名软件工程专家)也创建了自己的一套软件组织模型,在他的组织模型中增加了一个额外的级别,他称之为零级别。很显然,一个零模式的组织实际上也是开发软件;零模式组织中,在开发人员和用户之间没有差别[Weinberg 1992]。恰恰在这类组织环境中,经常采用自动化测试方法。因此,把资源用于自动化测试,并且把自动化测试当作一个软件开发活动对待,把软件测试自动化提升到一级。这是解决测试自动化的核心的方案。我们应该像运作其他的开发项目一样来运作软件自动化测试项目。

    像其他软件开发项目一样,我们需要软件开发人员专注于测试自动化的开发任务;像其他软件开发项目一样,自动化测试可以自动完成具体的测试任务,对于具体的测试任务来说,自动化开发人员可能不是这方面的专家,因此,软件测试专家应该提供具体测试任务相关的咨询,并且提供测试自动化的需求;像其他软件开发项目一样,如果在开发编码之前,对测试自动化作了整体设计有助于测试自动化开发的顺利开展。像其他软件开发项目一样,自动化测试代码需要跟踪和维护,因此,需要采用源代码管理。像其他软件开发项目一样,测试自动化也会出现BUG,因此,需要有计划的跟踪BUG,并且对修改后的BUG进行测试。像其他软件开发项目一样,用户需要知道如何使用软件,因此,需要提供用户使用手册。

    本文中不对软件开发做过多讲述。我假定您属于某个软件组织,该组织已经知道采用何种合理的、有效的方法开发软件。我仅仅是推动您在自动化测试开发过程中遵守已经建立的软件开发规则而已。本文按照在软件开发项目中采用的标准步骤组织的,重点关注测试自动化相关的事宜和挑战。

    1. 改进软件测试过程

    2. 定义需求

    3. 验证概念

    4. 支持产品的可测试性

    5. 可延续性的设计(design for sustainability

    6. 有计划的部署

    7. 面对成功的挑战

     

    步骤一:改进软件测试过程

    如果你负责提高一个商业交易操作的效率,首先,你应该确认已经很好的定义了这个操作的具体过程。然后,在你投入时间和金钱采用计算机提供一套自动化的商业交易操作系统之前,你想知道是否可以采用更简单、成本更低的的方法。同样的,上述过程也是用于自动化测试。我更愿意把测试自动化这个词解释成能够使测试过程简单并有效率,使测试过程更为快捷,没有延误。运行在计算机上的自动化测试脚本只是自动化测试的一个方面而已。

    例如,很多测试小组都是在回归测试环节开始采用测试自动化的方法。回归测试需要频繁的执行,再执行,去检查曾经执行过的有效的测试用例没有因为软件的变动而执行失败。回归测试需要反复执行,并且单调乏味。怎样才能做好回归测试文档化的工作呢?通常的做法是采用列有产品特性的列表,然后对照列表检查。这是个很好的开始,回归测试检查列表可以告诉你应该测试哪些方面。不过,回归测试检查列表只是合于那些了解产品,并且知道需要采用哪种测试方法的人。

    在你开始测试自动化之前,你需要完善上面提到的回归测试检查表,并且,确保你已经采用了确定的的测试方法,指明测试中需要什么样的数据,并给出设计数据的完整方法。如果测试掌握了基本的产品知识,这会更好。确认可以提供上面提到的文档后,需要明确测试设计的细节描述,还应该描述测试的预期结果,这些通常被忽略,建议测试人员知道。太多的测试人员没有意识到他们缺少什么,并且由于害怕尴尬而不敢去求助。这样一份详细的文档给测试小组带来立竿见影的效果,因为,现在任何一个具有基本产品知识的人根据文档可以开展测试执行工作了。在开始更为完全意义上的测试自动化之前,必须已经完成了测试设计文档。测试设计是测试自动化最主要的测试需求说明。不过,这时候千万不要走极端去过分细致地说明测试执行的每一个步骤,只要确保那些有软件基本操作常识的人员可以根据文档完成测试执行工作既可。但是,不要假定他们理解那些存留在你头脑中的软件测试执行的想法,把这些测试设计的思路描述清楚就可以了。

    我以前负责过一个软件模块的自动化测试工作。这个模块的一些特性导致实现自动化非常困难。当我了解到这项工作无需在很短的时间内完成后,决定制定一个详细回归测试设计方案。我仔细地检查了缺陷跟踪库中与该模块相关的每个已经关闭的缺陷,针对每个缺陷,我写了一个能够发现该问题的测试执行操作。我计划采用这种方法提供一个详细的自动化需求列表,这可以告诉我模块的那一部分最适合自动化测试。在完成上述工作后,我没有机会完成测试自动化的实现工作。不过,当我们需要对这个模块做完整回归测试的时候,我将上面提到的文档提供给若干只了解被测试产品但是没有测试经验的测试人员。依照文档的指导,几乎不需要任何指导的情况下,各自完成了回归测试,并且发现了BUG。从某种角度看,这实际上是一次很成功的自动化测试。在这个项目中,我们与其开发自动化测试脚本,还不如把测试执行步骤文档化。后来,在其它项目中,我们开发了自动化测试脚本,发现相关人员只有接受相关培训才能理解并执行自动化测试脚本,如果测试自动化设计的很好,可能会好一些。不过,经过实践我们总结出完成一份设计的比较好的测试文档,比完成一份设计良好的测试脚本简单的多。

    另外一个提高测试效率的简单方法是采用更多的计算机。很多测试人员动辄动用几台计算机,这一点显而易见。我之所以强调采用更多的计算机是因为,我曾经看到一些测试人员被误导在单机上努力的完成某些大容量的自动化测试执行工作,这种情况下由于错误的使用了测试设备、测试环境,导致测试没有效果。因此,自动化测试需要集中考虑所需要的支撑设备。

    针对改进软件测试过程,我的最后一个建议是改进被测试的产品,使它更容易被测试,有很多改进措施既可以帮助用户更好的使用产品,也可以帮助测试人员更好的测试产品。稍后,我将讨论自动化测试的可测试需求。这里,我只是建议给出产品的改进点,这样对手工测试大有帮助。

    一些产品非常难安装,测试人员在安装和卸载软件上花费大量的时间。这种情况下,与其实现产品安装的自动化测试,还不如改进产品的安装功能。采用这种解决办法,最终的用户会受益的。另外的一个处理方法是考虑开发一套自动安装程序,该程序可以和产品一同发布。事实上,现在有很多专门制作安装程序的商用工具。

    另一些产品改进需要利用工具在测试执行的日志中查找错误。采用人工方法,在日志中一页一页的查询报错信息很容易会让人感到乏味。那么,赶快采用自动化方法吧。如果你了解日志中记录的错误信息格式,写出一个错误扫描程序是很容易的事情。如果,你不能确定日志中的错误信息格式,就开始动手写错误扫描程序,很可能面临的是一场灾难。不要忘记本文开篇讲的那个故事中提到的测试套无法判断测试用例是否执行失败的例子。最终用户也不愿意采用通过搜索日志的方法查找错误信息。修改错误信息的格式,使其适合日志扫描程序,便于扫描工具能够准确的扫描到所有的错误信息。这样,在测试中就可以使用扫描工具了。

    通过改进产品的性能对测试也是大有帮助的。很显然的,如果产品的性能影响了测试速度,鉴别出性能比较差的产品功能,并度量该产品功能的性能,把它作为影响测试进度的缺陷,提交缺陷报告。

    上面所述的几个方面可以在无需构建自动化测试系统的情况下,大幅度的提高测试效率。改进软件测试过程会花费你构建自动化测试系统的时间,不过改进测试过程无疑可以使你的自动化测试项目更为顺利开展起来。

    步骤二:定义需求

    在前面的故事中,自动化工程师和自动化测试的发起者的目标存在偏差。为了避免这种情况,需要在自动化测试需求上保持一致。应该有一份自动化测试需求,用来描述需要测试什么。测试需求应该在测试设计阶段详细描述出来,自动化测试需求描述了自动化测试的目标。很多人认为自动化测试显然是一件好事情,但是,他们不愿意对自动化测试的目标给出清晰的描述。下面是人们选用自动化测试的几个原因: