﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-相信自己是对的，朋友多多才是走向成功的开始……-文章分类-系统</title><link>http://www.cnitblog.com/yang55xiaoguang/category/6972.html</link><description>自己的事自己办！</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 19:01:39 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 19:01:39 GMT</pubDate><ttl>60</ttl><item><title>TCP/IP基础:DNS协议</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/60674.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 09 Aug 2009 03:39:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/60674.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/60674.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/60674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/60674.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/60674.html</trackback:ping><description><![CDATA[　DNS 的来由<br><br>　　如果您为您的机器设定过 internet 连线╋那么您一定接触过 DNS 了╋但 DNS 又是什么东东呢?说穿了╋DNS 是用来帮助记忆网路位址的╋完全是为了迁就人类的记忆思维而设的。<br><br>　　DNS 的全称是 Domain Name System(或 Service) ╋当您连上一个网址╋在URL打上?www.google.com 的时候╋可以说就是使用了 DNS 的服务了。但如果您知道这个 www.google.com 的 IP 位址╋直接输入 216.239.53.101 也同样可以到达这个网址。其实╋电脑使用的只是 IP 位址而已(最终也是 0 和 1 啦)╋这个 www.google.com 只是让人们容易记忆而设的。因为我们人类╋对一些比较有意义的文字记忆(如?www.google.com)╋比记忆那些毫无头绪的号码(如?216.239.53.101)╋往往容易得多。DNS 的作用就是为我们在文字和 IP 之间担当了翻译╋而免除了强记号码的痛苦。<br><br>　　假如您的电话有名字记忆功能╋您只需知道对方的名字╋就可以拨号给友人了╋我们可以说╋这电话也具备如 DNS 的功能了呢?但是╋我们在网路中使用的 DNS 系统╋就是这么简单吗?非也╋复杂得很呢?下面╋就让我们一起去探索一下 DNS 的奥秘?<br><br>　　在早期的 IP 网路世界里面╋每台电脑都只用 IP 位址来表示╋不久人们就发现这样很难记忆╋于是╋一些 UNIX 的管理者╋就建立一个 HOSTS 对应表╋将 IP 和主机名字对应起来╋这样╋用户只需输入电脑名字╋就可以代替 IP 来进行沟通了。如果你安装了 Linux 系统╋在 /etc 下面就可以找到这个 hosts 档案?在 NT 的系统里╋你也可以在 winntsystem32driversetc 下面找到它。不过这个 HOSTS 档是要由管理者手工维护的╋最大的问题是无法适用于大型网路╋而且更新也是件非常头痛的事情。这就是 DNS 大派用场的时候了。<br><br>　　DNS 的结构<br><br>　　DNS 是一个分层级的分散式名称对应系统╋有点像电脑的目录树结构?在最顶端的是一个&#8220;root&#8221;╋然后其下分为好几个基本类别名称╋如?com?org?edu 等?再下面是组织名称╋如?ibm?microsoft?intel 等?继而是主机名称╋如?www?mail?ftp 等。因为当初 internet 是从美国发展起的╋所以当时并没有国域名称╋但随着后来 internet 的蓬勃发展╋DNS 也加进了诸如 tw?hk?cn 等国域名称。所以一个完整的 dns 名称就好象是这样的?www.xyz.com.tw╋而整个名称对应的就是一个(或多个) IP 位址了。<br><br>　　在早期的设计下╋root 下面只有六个组织类别?<br><br>　　<img src="http://doc.linuxpk.com/imgfiles/2002.12.24.19.44.44.1.jpg"><br><br>　　不过╋自从组织类别名称开放以后╋各种各样五花八门的名称也相继涌现出来了╋但无论如何╋取名的规则最好尽量适合网站性质。除了原来的类别资料由美国本土的 NIC(Network Information Center) 管理之外╋其它在国域以下的类别分别由该国的 NIC 管理(比方说台湾的 DNS 将授权给 twnic 来管理)。这样的结构看起来就像这样?<br><br>　　<img src="http://doc.linuxpk.com/imgfiles/2002.12.24.19.44.53.2.jpg"><br><br>　　在结构中╋各组织的 DNS 经过申请后由该组织或其委托主机管理(通常当您申请注册一个 domain 域名称的时候╋都要指定两台 DNS 主机负责该域名的 DNS 管理)。<br><br>　　DNS 的运作<br><br>　　在我们设定 IP 网路环境的时候╋都要告诉每台主机关于 DNS 伺服器的位址(我们可以手动的在每一台主机上面设置╋也可以使用 DHCP 来指定)。但这设定的义意何在呢？从前面的介绍我们或可知道：其目的就是请 DNS 帮忙解析主机名称与 IP 位址啦。在这个设定过程中，DNS 被称为 resolver (也就是负责解析的 DNS Server)，而被设定主机，则只是单纯的 DNS Client 了，也就是提出解析请求的主机。<br><br>　　下面让我们看看 DNS 是怎样运作的?<br><br>　　1. 当被询问到有关本域名之内的主机名称的时候╋DNS 伺服器会直接做出回答?<br><br>　　2. 客户端向伺服器提出查询项目?<br><br>　　3. 当被询问到有关本域名之内的主机名称的时候╋DNS 伺服器会直接做出回答?<br><br>　　4. 如果所查询的主机名称属于其它域名的话╋会检查快取记忆体(Cache)╋看看有没有相关资料?<br><br>　　5. 如果没有发现╋则会转向 root 伺服器查询?<br><br>　　6. 然后 root 伺服器会将该域名之下一层授权(authoritative)伺服器的位址告知(可能会超过一台)?<br><br>　　7. 本地伺服器然后会向其中的一台伺服器查询╋并将这些伺服器名单存到记忆体中╋以备将来之需(省却再向 root 查询的步骤)?<br><br>　　8. 远方伺服器回应查询?<br><br>　　9. 若该回应并非最后一层的答案，则继续往下一层查询，直到获的客户端所查询的结果为止?<br><br>　　10. 将查询结果回应给客户端╋并同时将结果储存一个备份在自己的快取记忆里面?<br><br>　　11. 如果在存放时间尚未过时之前再接到相同的查询╋则以存放于快取记忆里面的资料来做回应。<br><br>　　从这个过程我们可以看出╋没有任何一台 DNS 主机会包含所有域名的 DNS 资料╋资料都是分散在全部的 DNS 伺服器中╋而 NIC 只需知道各 DNS 伺服器位址就可以了。<br><br>　　为了更好地理解一下 DNS 的运作╋让我们用下图看看查询 www.home.netman.com.tw 这台主机位址的过程?<br><br>　　<img src="http://doc.linuxpk.com/imgfiles/2002.12.24.19.45.3.3.jpg"><br><br>　　在这个例子中╋www.home.netman.com.tw 台主机的 DNS 对应资料╋是由负责 home.netman.com.tw 这个域名的 DNS 伺服器管理的。(在 DNS 术语中╋我们称一个域名为&#8220;zone&#8221;╋这个 zone 可以是您从 NIC 申请回来的域名╋也可以是从该域名之下延伸出来的&#8220;sub-zone&#8221;)。在这台 DNS 伺服器上面╋必须有一?龉赜? home.netman.com.tw 这个 zone 的档案╋而这档案里面必须有一笔关于 www 的记录(任何主机都是以&#8220;记录&#8221;来表示，称为 Resource Record)。这个记录可以为一个 IP 位址╋也可以以别名形式来对应一台主机名称╋但无论如何╋所对应的主机名称最终是要被一个 IP 位址所对应着就是了。<br><br>　　同时╋DNS 还能提供&#8220;反查询&#8221;(reverse lookup) 功能╋也就是以 IP 来查询主机名称。网路上面的许多服务╋如?FTP, SMTP?等等╋都需要到这个功能。其实╋DNS 服务本身就必须要使用反查询功能╋而且在设定上╋也必须要为每个网路建立起 reverse zone。虽然有些人发觉即使没有 reverse zone 也可以使用到 DNS 服务╋但其中弊端却不容易被察觉到╋在这个(中文)网页?http://dnsrd.nctu.edu.tw/Basic/WhenToUse-Rev.html 上面╋您可以看到忽略 revers zone 所致一些问题。<br><br>　　DNS 的名称记录<br><br>　　事实上╋DNS 不仅仅是用来解释位址用的╋而且还可以回答更多关于网路和主机的其它信息╋其中很重要的一个功能就是可以供邮件系统进行路由。这些资料╋通常会以不同的&#8220;记录&#8221;名称出现在DNS的资料档案中。下面让我们参考一个 Linux 的 DNS 档案╋看看这些记录是如何表示的?<br><br>　　;<br><br>　　; Zone file for siyongc.domain<br><br>　　;<br><br>　　; Then full zone file<br><br>　　;<br><br>　　$TTL 86400<br><br>　　@<br><br>　　IN SOA redhat52.siyongc.domain. netman.siyongc.domain. (<br><br>　　 1999092801 ; serial<br><br>　　 8H ; refresh<br><br>　　 2H ; retry<br><br>　　 1W ; expire<br><br>　　 1D ) ; minimun<br><br>　　;<br><br>　　 IN TXT "A test domain, created by Netman"<br><br>　　 IN NS redhat52<br><br>　　 IN NS debian.home<br><br>　　 IN MX 10 redhat52.siyongc.domain.<br><br>　　 IN MX 20 debian.home<br><br>　　;<br><br>　　localhost IN A 127.0.0.1<br><br>　　?<br><br>　　gw IN A 192.168.0.17<br><br>　　 IN HINFO "Redhat" "MASQ"<br><br>　　 IN TXT "The masquerade gateway to internet"<br><br>　　?<br><br>　　redhat52 IN A 192.168.0.17<br><br>　　 IN MX 10 redhat52<br><br>　　 IN MX 20 debian.home<br><br>　　 IN HINFO "Dell PII 266" "Linux RedHat"<br><br>　　www IN CNAME redhat52<br><br>　　mail IN CNAME redhat52<br><br>　　ftp IN CNAME redhat52<br><br>　　news IN CNAME redhat52<br><br>　　smtp IN CNAME redhat52<br><br>　　?<br><br>　　pii266 IN A 192.168.0.15<br><br>　　 IN MX 10 redhat52.siyongc.domain.<br><br>　　 IN MX 20 debian.home.<br><br>　　?<br><br>　　slware36 IN A 192.168.0.18<br><br>　　 IN MX 10 redhat52.siyongc.domain.<br><br>　　 IN MX 20 debian.home.<br><br>　　?<br><br>　　rhroute IN A 192.168.0.4<br><br>　　 IN MX 10 redhat52.siyongc.domain.<br><br>　　 IN MX 20 debian.home.<br><br>　　?<br><br>　　home IN ns debian.home.siyongc.domain.<br><br>　　debian.home IN A 10.0.2.101<br><br>　　我们姑且不理会开头那几行的意思╋那是给 DNS 系统本身使用的(我将会在&#8220;学习 Linux&#8221;文章里面再详细讨论)╋这里我们只是看看几个记录名称而已?<br><br>　　<img src="http://doc.linuxpk.com/imgfiles/2002.12.24.19.45.13.4.jpg"><br><br>　　分? DNS 工作<br><br>　　由於 DNS 的重要性日益锢著，?提高其容邋能力及查?效能，我?在架韵某一?一 zone 的?侯，常以多台伺服器???? zone 的服?。其中，我?必需指定一台 Primary(master) DNS 伺服器，它是架韵在某一?咀域下被主要授??控制所有名费??的主控伺服器╋管?著?咀域的所有??儋料╋呃些??儋料只有 primary(master) 可以修改。<br><br>　　但如果在一?比蒉大型的咀路中╋DNS 伺服器就??得很繁忙╋所以您可以韵定多? DNS ?分? master 的工作╋但您或杂不?意到每一? DNS 伺服器去更新儋料吧?而且就算您?意呃?做╋也容易出?邋锗或儋料不同步的情形。呃?您可以韵定其它的伺服器? secondary (slave) DNS ?妖氧 master 上面的??儋料╋呃?╋其它的?呢可以被分派到不同的 DNS 做查?╋既可以分? master 的工作╋而且儋料也可以自?咄行同步工作。?催保儋料的一致性，master 每次更新咿儋料後?以 notify ?制主?通知 slave 前?同步。此外，您可以韵定 DNS 儋料同步的?殓殓隔╋在 dns ?案中的 Refresh 韵定就是了。在?案中，您??看到 Serial ╋? slave 的上面的 serial<br>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/60674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-08-09 11:39 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/60674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样用mdadm管理软RAID</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/60631.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sat, 08 Aug 2009 02:15:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/60631.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/60631.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/60631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/60631.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/60631.html</trackback:ping><description><![CDATA[安装程式实现软件RAID代替硬件RAID的方法，今天再进一步谈谈手动创建软RAID和日常维护的方法。<br>mdadm使用的也是md驱动，由于其拥有多种模式，而且单一工具，不依赖所有设置文件，是替代raidtools的好工具。目前几乎所有发行版本使用的都是该工具。<br>一、安装和编译<br>源码下载：<br><font color=#3f68a6>http://www.cse.unsw.edu.au/~neilb/source/mdadm/</font><br>编译：<br>tar xzvf ./mdadm-1.6.0.tgz<br>cd mdadm-1.6.0<br>make install<br>rpm安装：<br>rpm -ivh mdadm-1.6.0-3.rpm<br><strong>※源码最新版本是2.5，由于我使用的1.6.0的rpm包，所以还是以该版本为例。</strong><br>二、模式<br>mdadm有6种模式，前两种模式：Create、Assemble用于设置和激活阵列；Manage模式用于操作在活动阵列中的设备；Follow或Monitor模式允许管理员对活动阵列设置事件提醒和动作；Build模式用于对旧阵列使用旧版本的md驱动；更有Grow模式能扩展阵列；剩下的是Misc模式，他包括对多种内部的任务和没有指定特别模式的一些操作。<br><strong>系统平台： 红旗 DC Server for x86<br>硬件平台： Intel Xeon 3.0G DP、1个系统硬盘，3个组成阵列磁盘</strong><br>三、部署<br><strong>1、准备磁盘</strong><br>只能使用Sofware RAID格式的磁盘才能组成阵列，所以，首先我们要把做好磁盘格式。正如上面提到的，除了系统盘sda外，我们需要对sdb、sdc、sdd进行操作<br>a）对sdb进行分区<br>fdisk /dev/sdb<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0000-1150260323.jpg"><br>分区前状态：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0001-1150260371.jpg"><br>n，划分区：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0002-1150260436.jpg"><br>t，修改分区格式为fd：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0003-1150260485.jpg"><br>w，保存：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0004-1150260539.jpg"><br>b）同样的方法，对sdc、sdd进行分区和保存<br>最后状态如下：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0005-1150260649.jpg"><br><strong>2、创建阵列<br></strong>mdadm能支持LINEAR、RAID0&nbsp;&nbsp; (striping)、 RAID1(mirroring)、 RAID4、RAID5、RAID6和MULTIPATH的阵列模式。<br>创建命令格式如下：<br>mdadm [mode]&nbsp;&nbsp; [options] <br>例如：创建一个RAID 0设备：<br>mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1<br>--level表示创建的阵列模式，--raid-devices表示参和阵列的磁盘数量。<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0006-1150261391.jpg"><br><strong>也能这样表达，意思是相同的：</strong><br>mdadm -Cv /dev/md0 -l0 -n3 /dev/sd[bcd]1<br>还能增加-c128参数，指定chunk size为128K（默认64K）<br><strong>3、设置文件</strong><br>mdadm不采用/etc/mdadm.conf作为主要设置文件，他能完全不依赖该文件而不会影响阵列的正常工作。<br>该设置文件的主要作用是方便跟踪软RAID的设置。对该设置文件进行设置是有好处的，但不是必须的。<strong>推荐对该文件进行设置。</strong><br><font color=#000000>通常能这样来建立：<br></font><br><strong>echo DEVICE /dev/sd[bcd]1 &gt; /etc/mdadm.conf</strong><br><strong>mdadm -Ds &gt;&gt; /etc/mdadm.conf<br>mdadm --detail --scan &gt;&gt; /etc/mdadm.conf</strong><br><font color=#560459><strong>4、格式化阵列<br></strong>后续，只要你把/dev/md0作为一个独立的设备来进行操作即可：<br></font><br>mkfs.ext3 /dev/md0<br>mkdir /mnt/test<br>mount /dev/md0 /mnt/test<br><strong>5、若要开机自动挂载，请加入/etc/fstab中：</strong><br>/dev/md0 &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; /mnt/tes &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; auto defaults &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 0 0<br>四、监视和管理<br>mdadm能非常方便的对阵列进行监视和管理的操作，也包括了停止和启动阵列等常用维护。<br><strong>1、查看</strong><br>cat /proc/mdstat<br>能查看所有使用md驱动的阵列的状态：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0008-1150262787.jpg"><br>mdadm --detail /dev/md0<br>查看指定阵列的周详信息（-D）：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0009-1150262864.jpg"><br><strong>2、停止</strong><br>mdadm -S /dev/md0<br>停止指定阵列，并释放磁盘（--stop）：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0010-1150262982.jpg"><br><strong>※注意：停止后，原组成阵列的磁盘将处于空闲状态，一旦吾操作这些磁盘，将不能再重启激活原阵列。</strong><br><strong>3、启动</strong><br>mdadm -A /dev/md0 /dev/sd[bcd]1<br>启动指定的阵列，也可理解为讲一个新阵列装配到系统中（--assemble）：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0011-1150263271.jpg"><br>若你已在上面设置了/etc/mdadm.conf文件，也可用-s查找：<br>mdadm -As /dev/md0<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0012-1150263421.jpg"><br><strong>4、测试</strong><br>如果你没有设置/etc/mdadm.conf文件，而且又忘了某磁盘属于那个阵列，则你能使用检测：（--examine）<br>mdadm -E /dev/sdb1<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0013-1150263638.jpg"><br>获得UUID后，也能这样激活阵列：<br>mdadm -Av /dev/md0 --uuid=8ba81579:e20fb0e8:e040da0e:f0b3fec8 /dev/sd*<br>能看到，只要磁盘没有损坏，这样装配是非常方便的：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0014-1150263872.jpg"><br><strong>5、添加及删除磁盘</strong><br>mdadm能在Manage模式下，对运行中的阵列进行添加及删除磁盘。常用于标识failed磁盘，增加spare（冗余）磁盘，及替换磁盘等。<br>例如：原来状态是：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0019-1150266851.jpg"><br>则能使用--fail指定坏磁盘，并--remove走：<br>mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0020-1150267197.jpg"><br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0021-1150267277.jpg"><br>等待同步完成后，结果：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0022-1150267349.jpg"><br><strong>※需要注意的是，对于某些阵列模式，如RAID0等，是不能用--fail和--remove的。</strong><br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0016-1150264626.jpg"><br>增加一个新的阵列用磁盘<br>mdadm /dev/md0 --add /dev/sdc1<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0023-1150267539.jpg"><br><strong>※需要注意的是，对于某些阵列模式，如RAID0等，是不能用--add的。</strong><br><strong>6、监视</strong><br>在Follow或Monitor状态下，能使用mdadm对阵列进行监视，例如当阵列出现问题的时候，发送邮件给管理员；或当磁盘出现问题的时候进行自动的磁盘替换。<br>nohup mdadm --monitor --mail=sysadmin --delay=300 /dev/md0 &amp;<br>上述定义：没300秒监视一次，当阵列出现错误，会发送邮件给sysadmin用户。由于monitor启动后是不会自动退出的，所以需要加上nohup和&amp;，使之持续在后台运行。<br>在Follow模式下，是允许共享冗余磁盘的。<br>例如，我们有两个阵列：/dev/md0、/dev/md1，而/dev/md0里面有一个spare磁盘。当我们在/etc/mdadm.conf中定义类似：<br>DEVICE&nbsp;&nbsp; /dev/sd*<br>ARRAY /dev/md0 level=raid1 num-devices=3 spare-group=database&nbsp;&nbsp;<br>&nbsp;&nbsp; UUID=410a299e:4cdd535e:169d3df4:48b7144a<br>ARRAY&nbsp;&nbsp; /dev/md1 level=raid1 num-device=2 spare-group=database&nbsp;&nbsp;<br>&nbsp;&nbsp; UUID=59b6e564:739d4d28:ae0aa308:71147fe7<br>也就是定义一个spare-group组。并运行上面的monitor模式命令。这样，当组成/dev/md1的其中一个磁盘出现问题的时候，mdadm会自动从/dev/md0上移走spare磁盘，并加入/dev/md1中，而不必人工干预<strong>。（请注意，能实现这样工作的，只有在该阵列支持冗余的情况下才能实现，如raid1、raid5等。而对于raid0等阵列模式，是无效的）</strong><br>五、其他<br><strong>1、增加spare磁盘</strong><br>能通过在创建的时候指定冗余磁盘：<br>mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd[bcd]1<br>-x（--spare-devices）参数用于指定冗余磁盘的数量，结果：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0019-1150266851.jpg"><br><strong>另外，对于full的阵列（例如已有2个磁盘的RAID1），则直接使用-add参数，mdadm会自动把冗余的磁盘作为spare disk。</strong><br><strong>2、删除阵列</strong><br>mdadm -S /dev/md0<br>或<br>rm /dev/md0<br>修改/etc/mdadm.conf、/etc/fstab等设置文件，把相关的地方去掉；<br>最后，用fdisk对磁盘进行重新分区即可。<br><strong>3、重建阵列</strong><br>我们也能在没有fdisk的情况下把使用过，但目前没有属于所有阵列的磁盘划分到新阵列中：<br><img border=0 src="http://www.linuxfly.org/upload/SNAG-0018-1150266700.jpg"><br>确认后即可。
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/60631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-08-08 10:15 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/60631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POSIX</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/60377.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 26 Jul 2009 04:16:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/60377.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/60377.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/60377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/60377.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/60377.html</trackback:ping><description><![CDATA[<p><strong>POSIX</strong>是<a class=mw-redirect title=IEEE href="http://zh.wikipedia.org/wiki/IEEE"><u><font color=#0000ff>IEEE</font></u></a>为要在各种<a title=UNIX href="http://zh.wikipedia.org/wiki/UNIX"><u><font color=#0000ff>UNIX</font></u></a><a title=操作系统 href="http://zh.wikipedia.org/wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F"><u><font color=#0000ff>操作系统</font></u></a>上运行的软件，而定义<a class=mw-redirect title=API href="http://zh.wikipedia.org/wiki/API"><u><font color=#0000ff>API</font></u></a>的一系列互相关联的标准的总称，其正式称呼为IEEE 1003，而国际标准名称为<a class=mw-redirect title=ISO href="http://zh.wikipedia.org/wiki/ISO"><u><font color=#0000ff>ISO</font></u></a>／<a class=mw-redirect title=IEC href="http://zh.wikipedia.org/wiki/IEC"><u><font color=#0000ff>IEC</font></u></a> 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由<a class=mw-redirect title="Richard Stallman" href="http://zh.wikipedia.org/wiki/Richard_Stallman"><u><font color=#0000ff>Richard Stallman</font></u></a>应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface（可移植操作系统界面）的缩写，而<strong>X</strong>则表明其对Unix API的传承。</p>
<p><a title=Linux href="http://zh.wikipedia.org/wiki/Linux"><u><font color=#0000ff>Linux</font></u></a>基本上逐步实现了POSIX兼容，但并没有参加正式的POSIX认证。</p>
<p><a title=微软 href="http://zh.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AF"><u><font color=#0000ff>微软</font></u></a>的<a title="Windows NT" href="http://zh.wikipedia.org/wiki/Windows_NT"><u><font color=#0000ff>Windows NT</font></u></a>至少部分实现了POSIX兼容。</p>
<p>当前的POSIX文档分为三个部分：POSIX Kernel API，POSIX命令和工具集，及POSIX一致性测试。</p>
<strong>术语解释：</strong>POSIX是Portable Operating System Interface of Unix的缩写。由IEEE（Institute of Electrical and Electronic Engineering）开发，由ANSI和ISO标准化。<br>
<div class=spctrl></div>
　　<strong>由来：</strong>POSIX的诞生和Unix的发展是密不可分的，Unix于70年代诞生于Bell lab，并于80年代向美各大高校分发V7版的源码以做研究。UC Berkeley在V7的基础上开发了BSD Unix。后来很多商业厂家意识到Unix的价值也纷纷以Bell Lab的System V或BSD为基础来开发自己的Unix，较著名的有Sun OS，AIX，VMS。由于各厂家对Unix的开发各自为政，造成了Unix的版本相当混乱，给软件的可移植性带来很大困难，对Unix的发展极为不利。为结束这种局面，IEEE开发了POSIX，POSIX在源代码级别上定义了一组最小的Unix(类Unix)操作系统接口。<br>
<div class=spctrl></div>
　　POSIX 表示可移植操作系统接口（Portable Operating System Interface ，缩写为 POSIX 是为了读音更像 UNIX）。电气和电子工程师协会（Institute of Electrical and Electronics Engineers，IEEE）最初开发 POSIX 标准，是为了提高 UNIX 环境下应用程序的可移植性。然而，POSIX 并不局限于 UNIX。许多其它的操作系统，例如 DEC OpenVMS 和 Microsoft Windows NT，都支持 POSIX 标准，尤其是 IEEE Std. 1003.1-1990（1995 年修订）或 POSIX.1，POSIX.1 提供了源代码级别的 C 语言应用编程接口（API）给操作系统的服务程序，例如读写文件。POSIX.1 已经被国际标准化组织（International Standards Organization，ISO）所接受，被命名为 ISO/IEC 9945-1:1990 标准。 <br>
<div class=spctrl></div>
　　POSIX 现在已经发展成为一个非常庞大的标准族，某些部分正处在开发过程中。表 1-1 给出了 POSIX 标准的几个重要组成部分。POSIX 与 IEEE 1003 和 2003 家族的标准是可互换的。除 1003.1 之外，1003 和 2003 家族也包括在表中。<br><span class=mw-headline><br>POSIX 1.1标准</span>
<p><a class=new title=1003.0 href="http://zh.wikipedia.org/w/index.php?title=1003.0&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.0</font></u></a></p>
<p>　　管理 POSIX 开放式系统环境（OSE）。IEEE 在 1995 年通过了这项标准。 ISO 的版本是 ISO/IEC 14252:1996。</p>
<p><a class=new title=1003.1 href="http://zh.wikipedia.org/w/index.php?title=1003.1&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.1</font></u></a></p>
<p>　　被广泛接受、用于源代码级别的可移植性标准。1003.1 提供一个操作系统的 C 语言应用编程接口（API）。IEEE 和 ISO 已经在 1990 年通过了这个标准，IEEE 在 1995 年重新修订了该标准。</p>
<p><a class=new title=1003.1b href="http://zh.wikipedia.org/w/index.php?title=1003.1b&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.1b</font></u></a></p>
<p>　　一个用于实时编程的标准（以前的 P1003.4 或 POSIX.4）。这个标准在 1993 年被 IEEE 通过，被合并进 ISO/IEC 9945-1。</p>
<p><a class=new title=1003.1c href="http://zh.wikipedia.org/w/index.php?title=1003.1c&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.1c</font></u></a></p>
<p>　　一个用于线程（在一个程序中当前被执行的代码段）的标准。以前是 P1993.4 或 POSIX.4 的一部分，这个标准已经在 1995 年被 IEEE 通过，归入 ISO/IEC 9945-1:1996。</p>
<p><a class=new title=1003.1g href="http://zh.wikipedia.org/w/index.php?title=1003.1g&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.1g</font></u></a></p>
<p>　　一个关于协议独立接口的标准，该接口可以使一个应用程序通过网络与另一个应用程序通讯。 1996 年，IEEE 通过了这个标准。</p>
<p><a class=new title=1003.2 href="http://zh.wikipedia.org/w/index.php?title=1003.2&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.2</font></u></a></p>
<p>　　一个应用于 shell 和 工具软件的标准，它们分别是操作系统所必须提供的命令处理器和工具程序。 1992 年 IEEE 通过了这个标准。ISO 也已经通过了这个标准（ISO/IEC 9945-2:1993）。</p>
<p><a class=new title=1003.2d href="http://zh.wikipedia.org/w/index.php?title=1003.2d&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.2d</font></u></a></p>
<p>　　改进的 1003.2 标准。</p>
<p><a class=new title=1003.5 href="http://zh.wikipedia.org/w/index.php?title=1003.5&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.5</font></u></a></p>
<p>　　一个相当于 1003.1 的 Ada 语言的 API。在 1992 年，IEEE 通过了这个标准。并在 1997 年对其进行了修订。ISO 也通过了该标准。</p>
<p><a class=new title=1003.5b href="http://zh.wikipedia.org/w/index.php?title=1003.5b&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.5b</font></u></a></p>
<p>　　一个相当于 1003.1b（实时扩展）的 Ada 语言的 API。IEEE 和 ISO 都已经通过了这个标准。ISO 的标准是 ISO/IEC 14519:1999。</p>
<p><a class=new title=1003.5c href="http://zh.wikipedia.org/w/index.php?title=1003.5c&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.5c</font></u></a></p>
<p>　　一个相当于 1003.1q（协议独立接口）的 Ada 语言的 API。在 1998 年， IEEE 通过了这个标准。ISO 也通过了这个标准。</p>
<p><a class=new title=1003.9 href="http://zh.wikipedia.org/w/index.php?title=1003.9&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.9</font></u></a></p>
<p>　　一个相当于 1003.1 的 FORTRAN 语言的 API。在 1992 年，IEEE 通过了这个标准，并于 1997 年对其再次确认。ISO 也已经通过了这个标准。</p>
<p><a class=new title=1003.10 href="http://zh.wikipedia.org/w/index.php?title=1003.10&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.10</font></u></a></p>
<p>　　一个应用于超级计算应用环境框架（Application Environment Profile，AEP）的标准。在 1995 年，IEEE 通过了这个标准。</p>
<p><a class=new title=1003.13 href="http://zh.wikipedia.org/w/index.php?title=1003.13&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.13</font></u></a></p>
<p>　　一个关于应用环境框架的标准，主要针对使用 POSIX 接口的实时应用程序。在 1998 年，IEEE 通过了这个标准。</p>
<p><a class=new title=1003.22 href="http://zh.wikipedia.org/w/index.php?title=1003.22&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.22</font></u></a></p>
<p>　　一个针对 POSIX 的关于安全性框架的指南。</p>
<p><a class=new title=1003.23 href="http://zh.wikipedia.org/w/index.php?title=1003.23&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003.23</font></u></a></p>
<p>　　一个针对用户组织的指南，主要是为了指导用户开发和使用支持操作需求的开放式系统环境（OSE）框架</p>
<p><a title=2003 href="http://zh.wikipedia.org/wiki/2003"><u><font color=#0000ff>2003</font></u></a></p>
<p>　　针对指定和使用是否符合 POSIX 标准的测试方法，有关其定义、一般需求和指导方针的一个标准。在 1997 年，IEEE 通过了这个标准。</p>
<p><a class=new title=2003.1 href="http://zh.wikipedia.org/w/index.php?title=2003.1&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>2003.1</font></u></a></p>
<p>　　这个标准规定了针对 1003.1 的 POSIX 测试方法的提供商要提供的一些条件。在 1992 年，IEEE 通过了这个标准。</p>
<p><a class=new title=2003.2 href="http://zh.wikipedia.org/w/index.php?title=2003.2&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>2003.2</font></u></a></p>
<p>　　一个定义了被用来检查与 IEEE 1003.2（shell 和 工具 API）是否符合的测试方法的标准。在 1996 年，IEEE 通过了这个标准。</p>
<p>　　除了 <a class=new title=1003 href="http://zh.wikipedia.org/w/index.php?title=1003&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1003</font></u></a> 和 <a title=2003 href="http://zh.wikipedia.org/wiki/2003"><u><font color=#0000ff>2003</font></u></a> 家族以外，还有几个其它的 <a class=mw-redirect title=IEEE href="http://zh.wikipedia.org/wiki/IEEE"><u><font color=#0000ff>IEEE</font></u></a> 标准，例如 <a class=new title=1224 href="http://zh.wikipedia.org/w/index.php?title=1224&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1224</font></u></a> 和 <a class=new title=1228 href="http://zh.wikipedia.org/w/index.php?title=1228&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>1228</font></u></a>，它们也提供开发可移植应用程序的 <a class=mw-redirect title=API href="http://zh.wikipedia.org/wiki/API"><u><font color=#0000ff>API</font></u></a>。要想得到关于 <a class=mw-redirect title=IEEE href="http://zh.wikipedia.org/wiki/IEEE"><u><font color=#0000ff>IEEE</font></u></a> <a title=标准 href="http://zh.wikipedia.org/wiki/%E6%A0%87%E5%87%86"><u><font color=#0000ff>标准</font></u></a>的最新信息，可以访问 <a class=mw-redirect title=IEEE href="http://zh.wikipedia.org/wiki/IEEE"><u><font color=#0000ff>IEEE</font></u></a> <a title=标准 href="http://zh.wikipedia.org/wiki/%E6%A0%87%E5%87%86"><u><font color=#0000ff>标准</font></u></a>的主页，网址是<a class="external autonumber" title=http://standards.ieee.org/ href="http://standards.ieee.org/" rel=nofollow><u><font color=#0000ff>[1]</font></u></a>。有关 POSIX 标准的概述信息，请访问 <a class=mw-redirect title=Web href="http://zh.wikipedia.org/wiki/Web"><u><font color=#0000ff>Web</font></u></a> <a class=new title=站点 href="http://zh.wikipedia.org/w/index.php?title=%E7%AB%99%E7%82%B9&amp;action=edit&amp;redlink=1"><u><font color=#0000ff>站点</font></u></a> <a class="external autonumber" title=http://standards.ieee.org/reading/ieee/stad_public/description/posix/。 href="http://standards.ieee.org/reading/ieee/stad_public/description/posix/。" rel=nofollow><u><font color=#0000ff>[2]</font></u></a></p>
<p><a id=.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5 name=.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5><u><font color=#0000ff></font></u></a></p>
<h2><span class=editsection>[<a title=编辑段落：外部链接 href="http://zh.wikipedia.org/w/index.php?title=POSIX&amp;action=edit&amp;section=2"><u><font color=#0000ff>编辑</font></u></a>]</span> <span class=mw-headline>外部链接</span></h2>
<ul>
    <li><a class="external text" title=http://www.pasc.org/ href="http://www.pasc.org/" rel=nofollow><u><font color=#0000ff>The Portable Application Standards Committee</font></u></a>
    <li><a class="external text" title=http://standards.ieee.org/regauth/posix/ href="http://standards.ieee.org/regauth/posix/" rel=nofollow><u><font color=#0000ff>IEEE POSIX&#174; Certification Authority</font></u></a> </li>
</ul>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/60377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-07-26 12:16 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/60377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux内核对内存的管理</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59895.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 06 Jul 2009 15:40:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59895.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59895.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59895.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59895.html</trackback:ping><description><![CDATA[<div class=tit>linux内核对内存的管理</div>
<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div id=blog_text class=cnt><font style="LINE-HEIGHT: 18px" color=#333333>内存是Linux内核所管理的最重要的资源之一，内存管理系统是操作系统中最为重要的部分。对于Linux的初学者来说，熟悉Linux的内存管理非常重要。<br><br>进程是运行于虚拟地址空间的一个程序。可以说，任何在Linux系统下运行的程序都是进程。Linux系统中包括交互进程和批处理进程。交互进程是由 Shell控制和运行的，既可以在前台运行，也可以在后台运行。批处理进程不属于某个终端，被提交到一个队列中以便顺序执行。大多数的进程都需要虚拟内 存。<br><br>一般需要多少内存<br><br>对于典型的Linux应用系统，128MB内存是合理的选择。如果不运行X-Window系统，那么在一台特殊用途的机器(比如用于调试设备驱动程序的&#8220;崩溃和烧毁&#8221;系统)上仅用8MB内存就可以工作。<br><br>笔者曾经做过实验，在128MB和256MB下编译内核所需的时间几乎一样，都少于3分半钟（笔者的Linux发行版本是 Mandrake Linux 9.1,内核2.4.21）。在一个只有8MB内存的系统上，编译需要的时间会更长一些。类似Web浏览器这样的多媒体应用软件，在内存充足时会运行得更 流畅，特别是在一边编译程序，一边上网浏览的时候更是如此。因此，如果只有128MB内存，则预期的性能会有所降低。类似地，如果要开发消耗大量内存的应 用程序，可能会要求更多的内存。所以，需要多少内存由工作需求来决定。<br><br>实时监控内存使用情况<br><br>1.在命令行使用&#8220;Free&#8221;命令监控内存使用情况<br><br>＃free<br>total used free shared buffers cached<br>Mem: 256024 192284 63740 0 10676 101004<br>-/+ buffers/cache: 80604 75420<br>Swap: 522072 0 522072<br><br><br><br>上面代码给出了一个256MB的RAM和512MB交换空间的系统情况。第三行输出(Mem:)显示物理内存。Total列不显示核心使用的物理内存(通 常大约1MB)。Used列显示被使用的内存总额(第二行不计缓冲)。Free列显示全部没有使用的内存。Shared列显示多个进程共享的内存总额。 Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对换空间，显示的信息类似上面。如果这行为全0，那么就没有使用对换空间。在缺省的状态 下，free命令以千字节(也就是1024字节为单位)来显示内存使用情况。使用-h参数，以字节为单位显内存使用情况；或者使用-m参数，以兆字节为单 位显示内存使用情况。还可以通过-s参数，使用命令来不间断地监视内存使用情况：<br>＃free -b -s5<br>这个命令将会在终端窗口中连续不断地报告内存的使用情况，每5秒钟更新一次。<br><br>2.使甩vmstat命令监视虚拟内存使用情况<br><br>＃ vmstat<br>procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----<br>r b swpd free buff cache si so bi bo in cs us sy id wa<br>1 0 0 63692 10704 101008 0 0 239 42 126 105 48 45 7 0<br><br><br><br>vmstat（）命令是一个通用监控程序，是Virtual Meomory Statistics（虚拟内存统计）的缩写。如果使用vmstat命令的时候没有使用任何命令行参数，将会得到一个一次性的报告。vmstat命令报告 主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区(以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发 生的次数)，以及中央处理单元(CPU)分配给用户、系统和空闲时分别占用的比例。<br><br>虚拟内存实现的机制<br><br>存储管理子系统是操作系统中最重要的组成部分之一。在早期计算时代，由于人们所需要的内存数目远远大于物理内存，因此设计出了各种各样的策略来解决此问 题，其中最成功的就是虚拟内存技术，它使得系统中有限的物理内存竞争进程所需内存空间得到满足。虚拟内存通过在各个进程之间共享内存，而使系统看起来有多 于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展，使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘，腾出内存给其它目的。当原来的内容又要使用时，再读回内存。 运行于Linux的程序只看到大量的可用内存，而不关心哪部分在磁盘上。当然，读写硬盘比真的内存慢(大约慢千倍)，所以程序运行较慢。用做虚拟内存的这 部分硬盘叫对换空间。<br><br>虚拟内存技术不仅仅让我们可以使用更多的内存，它还提供了下面这些功能：　<br><br>1.巨大的寻址空间<br>操作系统让系统看上去有比实际内存大得多的内存空间。虚拟内存可以是系统中实际物理空间的许多倍。每个进程运行在其独立的虚拟地址空间中，这些虚拟空间相 互之间都完全隔离开来，所以进程间不会互相影响。同时，硬件虚拟内存机构可以将内存的某些区域设置成不可写，这样可以保护代码与数据不会受恶意程序的干 扰。　<br><br>2.公平的物理内存分配<br>内存管理子系统允许系统中每个运行的进程公平地共享系统中的物理内存。　<br><br>3.共享虚拟内存<br>尽管虚拟内存允许进程有其独立的虚拟地址空间，但有时也需要在进程之间共享内存。例如，有可能系统中有几个进程同时运行BASH命令外壳程序。为了避免在 每个进程的虚拟内存空间内都存在BASH程序的拷贝，较好的解决办法是系统物理内存中只存在一份BASH的拷贝，并在多个进程间共享。动态库则是另外一种 进程间共享执行代码的方式。共享内存可用来作为进程间通信(IPC)的手段，多个进程通过共享内存来交换信息。Linux支持SYSTEM V的共享内存IPC机制。　<br><br>4.进程的保护<br>系统中的每一个进程都有自己的虚拟地址空间。这些虚拟地址空间是完全分开的，这样一个进程的运行不会影响其它进程，并且硬件上的虚拟内存机制是被保护的，内存不能被写入。这样可以防止迷失的应用程序覆盖代码的数据。<br><br>5.Linux虚拟内存实现机制<br>Linux虚拟内存的实现需要6种机制的支持：地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。<br><br>内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时，如果发现程序中要用的虚地址没有对应的物理内存，就发出了请求页要求。 如果有空闲的内存可供分配，就请求分配内存(于是用到了内存的分配和回收)，并把正在使用的物理页记录在缓存中(使用了缓存机制)。如果没有足够的内存可 供分配，那么就调用交换机制；腾出一部分内存。另外，在地址映射中要通过TLB(翻译后援存储器)来寻找物理页；交换机制中也要用到交换缓存，并且把物理 页内容交换到交换文件中，也要修改页表来映射文件地址。Linux虚拟内存实现原理见图1。<br><br><br>图1 Linux虚拟内存实现原理<br><br>6.虚拟内存容量设定<br>也许有人说，虚拟内存容量的设定应该分配2倍于物理内存，但这只是个规律。如果物理内存比较小，可以这样设定。如果有256MB物理内存或更多的话，就可 以缩小虚拟内存。Linux会把大量的内存用做Cache，但在资源紧张时会收回。只要看到swap为0，或者该数很小就可以放心了，内存放着不用才是最 大的浪费。<br><br>内存泄露和回收内存的方法<br><br>1.内存泄漏的定义<br>一般常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的（内存块的大小可以在程序运行期决定）、使用完后必须显示释放的内存。应用 程序一般使用malloc、realloc、new等函数从堆中分配到一块内存，使用完后，程序必须负责相应的调用free或delete释放该内存块。 否则，这块内存就不能被再次使用，我们就说这块内存泄漏了。<br><br>2.内存泄露的危害<br>从用户使用程序的角度来看，内存泄漏本身不会产生什么危害。作为一般的用户，根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积，这会最终消耗尽 系统所有的内存。从这个角度来说，一次性内存泄漏并没有什么危害，因为它不会堆积。而隐式内存泄漏危害性则非常大，因为较之于常发性和偶发性内存泄漏它更 难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外，还会使程序的性能急剧下降。对于服务器而言，如果出现这种情况，即使系统不崩溃，也会严重影 响使用。<br><br>3.内存泄露的检测和回收<br>对于内存溢出之类的麻烦，大家可能在编写指针比较多的复杂程序时就会遇到。在Linux或Unix 下，C和C++语言是最常使用的工具。但是C++程序缺乏相应的手段来检测内存信息，只能使用top指令观察进程的动态内存总额。而且程序退出时，我们无 法获知任何内存泄漏信息。<br><br>(1)使用Linux命令回收内存，可以使用ps、kill两个命令检测内存使用情况和进行回收。在使用超级用户权限时使用命令 &#8220;ps&#8221;，它会列出所有正在运行的程序名称和对应的进程号（PID）。kill命令的工作原理是向Linux操作系统的内核送出一个系统操作信号和程序的 进程号（PID）。<br><br>下面举例说明，为了高效率回收内存可以使用命令ps参数v：<br><br>＃ps v<br>PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND<br>2530 vc/1 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty1<br>2531 vc/2 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty2<br>2532 vc/3 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty3<br>2533 vc/4 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty4<br>2534 vc/5 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty5<br>2535 vc/6 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty6<br>2639 pts/1 S 0:00 545 16 2643 968 0.3 [su]<br>2684 pts/1 S 0:00 361 586 2501 1592 0.6 bash<br>2711 pts/0 S 0:00 545 16 2643 968 0.3 [su]<br>2714 pts/0 S 0:00 361 586 2501 1592 0.6 bash<br>2754 pts/2 S 0:00 545 16 2643 968 0.3 [su]<br>2757 pts/2 S 0:00 361 586 2501 1592 0.6 bash<br>2818 pts/1 S 0:00 120 29 1478 480 0.1 ping 192.168.1.7<br>2939 pts/2 R 0:00 156 58 2469 644 0.2 ps -v<br><br><br><br>如果想回收ping命令的内存的话，可以使用下面命令：<br>＃ kill －9 2818<br><br>(2)使用工具软件<br>Memprof是一个非常具有吸引力且易于使用的软件，它由Red Hat的Owen Talyor创立。这个工具用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。这个工具直接就可以执行，并且其工作起来无需对源代 码进行任何修改。在程序执行时，这个工具会以图形化的方式显示内存的使用情况，工作界面见图2。<br><br><br>图2 内存回收工具Memprof<br><br>但是，该工具目前只能运行于x86和PPC体系结构的Linux系统之中，需要一个完整的GNOME环境。这样就使得其不能灵活用于所有的地方。此外，该工具的开发工作进展得也比较缓慢，现在是0.5.1版。<br><br>上面讲述了Linux内存的概念、需要多少内存、实时监控内存使用情况、虚拟内存实现的机制，以及内存泄露和回收方法等五个方面内容，希望能对Linux初学者高效率使用内存系统有所帮助。</font></div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-07-06 23:40 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于编写静态函数库，共享函数库和动态函数库的问题</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59682.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 28 Jun 2009 02:34:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59682.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59682.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59682.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59682.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59682.html</trackback:ping><description><![CDATA[这两天一直在琢磨scim-bridge的机制，也想自己编出个类似的东西来。可是最近一直被immodule的加载机制所困惑，下面这篇文章很好的解答了我最近的问题。呵呵，看来还是自己的知识面太窄了，对于有些概念是模糊的。<br>-----------------------------------<br><span style="FONT-SIZE: 12pt"><strong>Linux下创建库函数<br>--------------------------<br></strong>1. 介绍<br>使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个&#8220;程序函数库&#8221;简单的说就是一个文件包含了一些编译好的代码和数据，这些编 译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化，更容易重新编译，而且更方便升级。程序函数库可分为3种类型：静态函 数库（static libraries）、共享函数库（shared libraries）和动态加载函数库（dynamically loaded libraries）。<br>静态函数库是在程序执行前就加入到目标程序中去了；而共享函数库则是在程序启动的时候加载到程序中，它可以被不同的程序共享；动态加载函数库则可以在程序运行的任何时候动态的加载。实际上，动态函数库并非另外一种库函数格式，区别是动态加载函数库是如何被程序员使用的。后面我们将举例说明。<br>本文档主要参考Program Library HOWTO，作者是luster（hwang@ustc.edu），任何非商业目的的再次发行本文档都是允许的，但是请保留作者信息和本版权声明。本文档首先在www.linuxaid.com.cn发布。<br>2. 静态函数库<br>静态函数库实际上就是简单的一个普通的目标文件的集合，一般来说习惯用&#8220;.a&#8221;作为文件的后缀。可以用ar这个程序来产生静态函数库文件。Ar 是archiver的缩写。静态函数库现在已经不在像以前用得那么多了，主要是共享函数库与之相比较有很多的优势的原因。慢慢地，大家都喜欢使用共享函数库了。不过，在一些场所静态函数库仍然在使用，一来是保持一些与以前某些程序的兼容，二来它描述起来也比较简单。<br>静态库函数允许程序员把程序link起来而不用重新编译代码，节省了重新编译代码的时间。不过，在今天这么快速的计算机面前，一般的程序的重新编译也花费不了多少时间，所以这个优势已经不是像它以前那么明显了。静态函数库对开发者来说还是很有用的，例如你想把自己提供的函数给别人使用，但是又想对函数的源代码进行保密，你就可以给别人提供一个静态函数库文件。理论上说，使用ELF格式的静态库函数生成的代码可以比使用共享函数库（或者动态函数库）的程序运行速度上快一些，大概1－5％。<br>创建一个静态函数库文件，或者往一个已经存在地静态函数库文件添加新的目标代码，可以用下面的命令：<br><br>ar rcs my_library.a file1.o file2.o<br>这个例子中是把目标代码file1.o和 file2.o加入到my_library.a这个函数库文件中，如果my_library.a不存在则创建一个新的文件。在用ar命令创建静态库函数的时候，还有其他一些可以选择的参数，可以参加ar的使用帮助。这里不再赘述。<br>一旦你创建了一个静态函数库，你可以使用它了。你可以把它作为你编译和连接过程中的一部分用来生成你的可执行代码。如果你用gcc来编译产生可执行代码的话，你可以用&#8220;-l&#8221;参数来指定这个库函数。你也可以用ld来做，使用它的&#8220;-l&#8221;和&#8220;-L&#8221;参数选项。具体用法，可以参考info:gcc。<br>3. 共享函数库<br>共享函数库中的函数是在当一个可执行程序在启动的时候被加载。如果一个共享函数库正常安装，所有的程序在重新运行的时候都可以自动加载最新的函数库中的函数。对于Linux系统还有更多的可以实现的功能：<br>o 升级了函数库但是仍然允许程序使用老版本的函数库。 o 当执行某个特定程序的时候可以覆盖某个特定的库或者库中指定的函数。 o 可以在库函数被使用的过程中修改这些函数库。<br>3.1. 一些约定<br>如果你要编写的共享函数库支持所有有用的特性，你在编写的过程中必须遵循一系列约定。你必须理解库的不同的名字间的区别，例如它的 &#8220;soname&#8221;和&#8220;real name&#8221;之间的区别和它们是如何相互作用的。你同样还要知道你应该把这些库函数放在你文件系统的什么位置等等。下面我们具体看看这些问题。<br>3.1.1. 共享库的命名<br>每个共享函数库都有个特殊的名字，称作&#8220;soname&#8221;。Soname名字命名必须以&#8220;lib&#8221;作为前缀，然后是函数库的名字，然后是&#8220;.so&#8221;，最后是版本号信息。不过有个特例，就是非常底层的C库函数都不是以lib开头这样命名的。<br>每个共享函数库都有一个真正的名字（&#8220;real name&#8221;），它是包含真正库函数代码的文件。真名有一个主版本号，和一个发行版本号。最后一个发行版本号是可选的，可以没有。主版本号和发行版本号使你可以知道你到底是安装了什么版本的库函数。<br>另外，还有一个名字是编译器编译的时候需要的函数库的名字，这个名字就是简单的soname名字，而不包含任何版本号信息。<br>管理共享函数库的关键是区分好这些名字。当可执行程序需要在自己的程序中列出这些他们需要的共享库函数的时候，它只要用soname就可以了；反过来，当你要创建一个新的共享函数库的时候，你要指定一个特定的文件名，其中包含很细节的版本信息。当你安装一个新版本的函数库的时候，你只要先将这些函数库文件拷贝到一些特定的目录中，运行ldconfig这个实用就可以。Ldconfig检查已经存在的库文件，然后创建soname的符号链接到真正的函数库，同时设置/etc/ld.so.cache这个缓冲文件。这个我们稍后再讨论。<br>Ldconfig并不设置链接的名字，通常的做法是在安装过程中完成这个链接名字的建立，一般来说这个符号链接就简单的指向最新的soname 或者最新版本的函数库文件。最好把这个符号链接指向soname，因为通常当你升级你的库函数的后，你就可以自动使用新版本的函数库勒。<br>我们来举例看看：<br>/usr/lib/libreadline.so.3 是一个完全的完整的soname，ldconfig可以设置一个符号链接到其他某个真正的函数库文件，例如是 /usr/lib/libreadline.so.3.0。同时还必须有一个链接名字，例如/usr/lib/libreadline.so 就是一个符号链接指向/usr/lib/libreadline.so.3。<br>3.1.2. 文件系统中函数库文件的位置<br>共享函数库文件必须放在一些特定的目录里，这样通过系统的环境变量设置，应用程序才能正确的使用这些函数库。大部分的源码开发的程序都遵循 GNU的一些标准，我们可以看info帮助文件获得相信的说明，info信息的位置是：info: standards#Directory_Variables。GNU标准建议所有的函数库文件都放在/usr/local/lib目录下，而且建议命令可执行程序都放在/usr/local/bin目录下。这都是一些习惯问题，可以改变的。<br>文件系统层次化标准FHS（Filesystem Hierarchy Standard）（http://www.pathname.com/fhs）规定了在一个发行包中大部分的函数库文件应该安装到/usr/lib目录下，但是如果某些库是在系统启动的时候要加载的，则放到/lib目录下，而那些不是系统本身一部分的库则放到/usr/local/lib下面。<br>上面两个路径的不同并没有本质的冲突。GNU提出的标准主要对于开发者开发源码的，而FHS的建议则是针对发行版本的路径的。具体的位置信息可以看/etc/ld.so.conf里面的配置信息。<br>3.2. 这些函数库如何使用<br>在基于GNU glibc的系统里，包括所有的linux系统，启动一个ELF格式的二进制可执行文件会自动启动和运行一个program loader。对于Linux系统，这个loader的名字是/lib/ld-linux.so.X（X是版本号）。这个loader启动后，反过来就会 load所有的其他本程序要使用的共享函数库。<br>到底在哪些目录里查找共享函数库呢？这些定义缺省的是放在/etc/ld.so.conf文件里面，我们可以修改这个文件，加入我们自己的一些特殊的路径要求。大多数RedHat系列的发行包的/etc/ld.so.conf文件里面不包括/usr/local/lib这个目录，如果没有这个目录的话，我们可以修改/etc/ld.so.conf，自己手动加上这个条目。<br>如果你想覆盖某个库中的一些函数，用自己的函数替换它们，同时保留该库中其他的函数的话，你可以在/etc/ld.so.preload中加入你想要替换的库（.o结尾的文件），这些preloading的库函数将有优先加载的权利。<br>当程序启动的时候搜索所有的目录显然会效率很低，于是Linux系统实际上用的是一个高速缓冲的做法。Ldconfig缺省情况下读出 /etc/ld.so.conf相关信息，然后设置适当地符号链接，然后写一个cache到/etc/ld.so.cache这个文件中，而这个 /etc/ld.so.cache则可以被其他程序有效的使用了。这样的做法可以大大提高访问函数库的速度。这就要求每次新增加一个动态加载的函数库的时候，就要运行ldconfig来更新这个cache，如果要删除某个函数库，或者某个函数库的路径修改了，都要重新运行ldconfig来更新这个 cache。通常的一些包管理器在安装一个新的函数库的时候就要运行ldconfig。<br>另外，FreeBSD使用cache的文件不一样。FreeBSD的ELF cache是/var/run/ld-elf.so.hints，而a.out的cache责是/var/run/ld.so.hints。它们同样是通过ldconfig来更新。<br>3.3. 环境变量<br>各种各样的环境变量控制着一些关键的过程。例如你可以临时为你特定的程序的一次执行指定一个不同的函数库。Linux系统中，通常变量 LD_LIBRARY_PATH就是可以用来指定函数库查找路径的，而且这个路径通常是在查找标准的路径之前查找。这个是很有用的，特别是在调试一个新的函数库的时候，或者在特殊的场合使用一个肥标准的函数库的时候。环境变量LD_PRELOAD列出了所有共享函数库中需要优先加载的库文件，功能和 /etc/ld.so.preload类似。这些都是有/lib/ld-linux.so这个loader来实现的。值得一提的是， LD_LIBRARY_PATH可以在大部分的UNIX-linke系统下正常起作用，但是并非所有的系统下都可以使用，例如HP－UX系统下，就是用 SHLIB_PATH这个变量，而在AIX下则使用LIBPATH这个变量。<br>LD_LIBRARY_PATH在开发和调试过程中经常大量使用，但是不应该被一个普通用户在安装过程中被安装程序修改，大家可以去参考 http://www.visi.com/~barr/ldpath.html,这里有一个文档专门介绍为什么不使用LD_LIBRARY_PATH这个变量。<br>事实上还有更多的环境变量影响着程序的调入过程，它们的名字通常就是以LD_或者RTLD_打头。大部分这些环境变量的使用的文档都是不全，通常搞得人头昏眼花的，如果要真正弄清楚它们的用法，最好去读loader的源码（也就是gcc的一部分）。<br>允许用户控制动态链接函数库将涉及到setuid/setgid这个函数如果特殊的功能需要的话。因此，GNU loader通常限制或者忽略用户对这些变量使用setuid和setgid。如果loader通过判断程序的相关环境变量判断程序的是否使用了 setuid或者setgid，如果uid和euid不同，或者gid和egid部一样，那么loader就假定程序已经使用了setuid或者 setgid，然后就大大的限制器控制这个老链接的权限。如果阅读GNU glibc的库函数源码，就可以清楚地看到这一点，特别的我们可以看elf/rtld.c和sysdeps/generic/dl-sysdep.c这两个文件。这就意味着如果你使得uid和gid与euid和egid分别相等，然后调用一个程序，那么这些变量就可以完全起效。<br>3.4. 创建一个共享函数库<br>现在我们开始学习如何创建一个共享函数库。其实创建一个共享函数库非常容易。首先创建object文件，这个文件将加入通过gcc &#8211;fPIC 参数命令加入到共享函数库里面。PIC的意思是&#8220;位置无关代码&#8221;（Position Independent Code）。下面是一个标准的格式：<br><br>gcc -shared -Wl,-soname,your_soname -o library_name file_list library_list<br>下面再给一个例子，它创建两个object文件（a.o和b.o），然后创建一个包含a.o和b.o的共享函数库。例子中&#8221;-g&#8221;和&#8220;－Wall&#8221;参数不是必须的。<br><br>gcc -fPIC -g -c -Wall a.cgcc -fPIC -g -c -Wall b.cgcc -shared -Wl,<br>-soname,liblusterstuff.so.1 -o liblusterstuff.so.1.0.1 a.o b.o -lc<br>下面是一些需要注意的地方：<br>&#183; 不用使用-fomit-frame-pointer这个编译参数除非你不得不这样。虽然使用了这个参数获得的函数库仍然可以使用，但是这使得调试程序几乎没有用，无法跟踪调试。 &#183; 使用-fPIC来产生代码，而不是-fpic。 &#183; 某些情况下，使用gcc 来生成object文件，需要使用&#8220;-Wl,-export-dynamic&#8221;这个选项参数。通常，动态函数库的符号表里面包含了这些动态的对象的符号。这个选项在创建ELF格式的文件时候，会将所有的符号加入到动态符号表中。可以参考ld的帮助获得更详细的说明。<br>3.5. 安装和使用共享函数库<br>一旦你了一个共享函数库，你还需要安装它。其实简单的方法就是拷贝你的库文件到指定的标准的目录（例如/usr/lib），然后运行ldconfig。<br>如果你没有权限去做这件事情，例如你不能修改 /usr/lib目录，那么你就只好通过修改你的环境变量来实现这些函数库的使用了。首先，你需要创建这些共享函数库；然后，设置一些必须得符号链接，特别是从soname到真正的函数库文件的符号链接，简单的方法就是运行ldconfig：<br><br>ldconfig -n directory_with_shared_libraries<br>然后你就可以设置你的LD_LIBRARY_PATH这个环境变量，它是一个以逗号分隔的路径的集合，这个可以用来指明共享函数库的搜索路径。例如，使用bash，就可以这样来启动一个程序my_program:<br><br>LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program<br>如果你需要的是重载部分函数，则你就需要创建一个包含需要重载的函数的object文件，然后设置LD_PRELOAD环境变量。通常你可以很方便的升级你的函数库，如果某个API改变了，创建库的程序会改变soname。然而，如果一个函数升级了某个函数库而保持了原来的soname，你可以强行将老版本的函数库拷贝到某个位置，然后重新命名这个文件（例如使用原来的名字，然后后面加.orig后缀），然后创建一个小的&#8220;wrapper&#8221;脚本来设置这个库函数和相关的东西。例如下面的例子：<br><br>#!/bin/sh export LD_LIBRARY_PATH=/usr/local/my_lib:$LD_LIBRARY_PATH exec<br>/usr/bin/my_program.orig $*<br>我们可以通过运行ldd来看某个程序使用的共享函数库。例如你可以看ls这个实用工具使用的函数库：<br><br>ldd /bin/ls<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libtermcap.so.2 =&gt; /lib/libtermcap.so.2 (0x4001c000)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libc.so.6 =&gt; /lib/libc.so.6 (0x40020000)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)<br>通常我么可以看到一个soname的列表，包括路径。在所有的情况下，你都至少可以看到两个库：<br><br>&#183; /lib/ld-linux.so.N（N是1或者更大，一般至少2）。<br>这是这个用力加载其他所有的共享库的库。<br>&#183; libc.so.N(N应该大于或者等于6)。这是C语言函数库。<br>值得一提的是，不要在对你不信任的程序运行 ldd命令。在ldd的manual里面写得很清楚，ldd是通过设置某些特殊的环境变量（例如，对于ELF对象，设置LD_TRACE_LOADED_OBJECTS），然后运行这个程序。这样就有可能使得某地程序可能使得ldd来执行某些意想不到的代码，而产生不安全的隐患。<br>3.6. 不兼容的函数库<br>如果一个新版的函数库要和老版本的二进制的库不兼容，则soname需要改变。对于C语言，一共有4个基本的理由使得它们在二进制代码上很难兼容：<br>o. 一个函数的行文改变了，这样它就可能与最开始的定义不相符合。<br>o. 输出的数据项改变了。<br>o. 某些输出的函数删除了。<br>o. 某些输出函数的接口改变了。<br>如果你能避免这些地方，你就可以保持你的函数库在二进制代码上的兼容，或者说，你可以使得你的程序的应用二进制接口（ABI：Application Binary Interface）上兼容。<br>4. 动态加载的函数库Dynamically Loaded (DL) Libraries<br>动态加载的函数库Dynamically loaded (DL) libraries是一类函数库，它可以在程序运行过程中的任何时间加载。它们特别适合在函数中加载一些模块和plugin扩展模块的场合，因为它可以在 当程序需要某个plugin模块时才动态的加载。例如，Pluggable Authentication Modules(PAM)系统就是用动态加载函数库来使得管理员可以配置和重新配置身份验证信息。<br>Linux系统下，DL函数库与其他函数库在格式上没有特殊的区别，我们前面提到过，它们创建的时候是标准的object格式。主要的区别就是这些函数库不是在程序链接的时候或者启动的时候加载，而是通过一个API来打开一个函数库，寻找符号表，处理错误和关闭函数库。通常C语言环境下，需要包含这个头文件。<br>Linux中使用的函数和Solaris中一样，都是dlpoen（） API。当时不是所有的平台都使用同样的接口，例如HP-UX使用shl_load()机制，而Windows平台用另外的其他的调用接口。如果你的目的是使得你的代码有很强的移植性，你应该使用一些wrapping函数库，这样的wrapping函数库隐藏不同的平台的接口区别。一种方法是使用 glibc函数库中的对动态加载模块的支持，它使用一些潜在的动态加载函数库界面使得它们可以夸平台使用。具体可以参考http: //developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-modules.html. 另外一个方法是使用libltdl，是GNU libtool的一部分，可以进一步参考CORBA相关资料。<br>4.1. dlopen()<br>dlopen函数打开一个函数库然后为后面的使用做准备。C语言原形是：<br><br>void * dlopen(const char *filename, int flag);<br>如果文件名filename是以&#8220;/&#8221;开头，也就是使用绝对路径，那么dlopne就直接使用它，而不去查找某些环境变量或者系统设置的函数库所在的目录了。否则dlopen（）<br>就会按照下面的次序查找函数库文件：<br>1. 环境变量LD_LIBRARY指明的路径。 2. /etc/ld.so.cache中的函数库列表。 3. /lib目录，然后/usr/lib。不过一些很老的a.out的loader则是采用相反的次序，也就是先查/usr/lib，然后是/lib。<br>Dlopen()函数中，参数flag的值必须是RTLD_LAZY或者RTLD_NOW，RTLD_LAZY的意思是resolve undefined symbols as code from the dynamic library is executed，而RTLD_NOW的含义是resolve all undefined symbols before dlopen() returns and fail if this cannot be done'。<br>如果有好几个函数库，它们之间有一些依赖关系的话，例如X依赖Y，那么你就要先加载那些被依赖的函数。例如先加载Y，然后加载X。<br>dlopen（）函数的返回值是一个句柄，然后后面的函数就通过使用这个句柄来做进一步的操作。如果打开失败dlopen()就返回一个NULL。如果一个函数库被多次打开，它会返回同样的句柄。<br>如果一个函数库里面有一个输出的函数名字为_init,那么_init就会在dlopen（）这个函数返回前被执行。我们可以利用这个函数在我的函数库里面做一些初始化的工作。我们后面会继续讨论这个问题的。<br>4.2. dlerror()<br>通过调用dlerror()函数，我们可以获得最后一次调用dlopen()，dlsym()，或者dlclose（）的错误信息。<br>4.3. dlsym()<br>如果你加载了一个DL函数库而不去使用当然是不可能的了，使用一个DL函数库的最主要的一个函数就是dlsym()，这个函数在一个已经打开的函数库里面查找给定的符号。这个函数如下定义：<br><br>void * dlsym(void *handle, char *symbol);<br>函数中的参数handle就是由dlopen打开后返回的句柄，symbol是一个以NIL结尾的字符串。<br>如果dlsym()函数没有找到需要查找的 symbol，则返回NULL。如果你知道某个symbol的值不可能是NULL或者0，那么就很好，你就可以根据这个返回结果判断查找的symbol是否存在了；不过，如果某个symbol的值就是NULL，那么这个判断就有问题了。标准的判断方法是先调用dlerror()，清除以前可能存在的错误，然后调用dlsym（）来访问一个symbol，然后再调用dlerror（）来判断是否出现了错误。一个典型的过程如下：<br><br>dlerror(); /* clear error code */<br>s = (actual_type) dlsym(handle, symbol_being_searched_for);<br>if ((err = dlerror()) != NULL)<br>{<br>/* handle error, the symbol wasn't found */<br>}<br>else<br>{<br>/* symbol found, its value is in s */<br>}<br>4.4. dlclose()<br>dlopen()函数的反过程就是 dlclose（）函数，dlclose（）函数用力关闭一个DL函数库。Dl函数库维持一个资源利用的计数器，当调用dlclose的时候，就把这个计数器的计数减一，如果计数器为0，则真正的释放掉。真正释放的时候，如果函数库里面有_fini()这个函数，则自动调用_fini（）这个函数，做一些必要的处理。Dlclose（）返回0表示成功，其他非0值表示错误。<br>4.5. DL Library Example<br>下面是一个例子。例子中调入math函数库，然后打印2.0的余弦函数值。例子中每次都检查是否出错。应该是个不错的范例：<br><br>&nbsp;&nbsp;&nbsp; #include<br>&nbsp;&nbsp;&nbsp; #include<br>&nbsp;&nbsp;&nbsp; #include<br>&nbsp;&nbsp;&nbsp; int main(int argc, char **argv)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void *handle;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double (*cosine)(double);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *error;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handle = dlopen ("/lib/libm.so.6", RTLD_LAZY);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!handle) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fputs (dlerror(), stderr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cosine = dlsym(handle, "cos");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((error = dlerror()) != NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fputs(error, stderr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf ("%f ", (*cosine)(2.0));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dlclose(handle);<br>}<br>如果这个程序名字叫foo.c,那么用下面的命令来编译：<br><br>&nbsp;&nbsp;&nbsp; gcc -o foo foo.c -ldl<br><br>5. 其他<br>5.1. nm命令<br>nm命令可以列出一个函数库文件中的符号表。它对于静态的函数库和共享的函数库都起作用。对于一个给定的函数库，nm命令可以列出函数库中定义的所有符号，包括每个符号的值和类型。还可以给出在原程序中这个函数（符号）是在多少行定义的，不过这必须要求编译该函数库的时候加&#8220;-l&#8221;选项。<br>关于符号的类型，这里我们再多讨论一下。符号的类型是以一个字母的形式显示的，小写字母表示这个符号是本地（local）的，而大写字母则表示这个符号是全局的（global,externel）。一般来说，类型有一下几种：T、D、B、U、W。各自的含义如下：T表示在代码段中定义的一般变量符号；D表示时初始化过的数据段；B表示初始化的数据段；U表示没有定义的，在这个库里面使用了，但是在其他库中定义的符号；W，weak的缩写，表示如果其他函数库中也有对这个符号的定义，则其他符号的定义可以覆盖这个定义。<br>如果你知道一个函数的名字，但是你不知道这个函数在什么库中定义的，那么可以用mn的&#8220;-o&#8221;选项和grep命令来查找库的名字。-o选项使得显示的每一行都有这个函数库文件名。例如，你要查找&#8220;cos&#8221;这个是在什么地方定义的，大致可以用下面的命令：<br><br>nm -o /lib/* /usr/lib/* /usr/lib/*/* /usr/local/lib/* 2&gt; /dev/null<br>| grep 'cos$'<br>关于nm的更详细的用法我们可以参考info文档，位置是info:binutils#nm。<br>5.2. 特殊函数_init和_fini<br>函数库里面有两个特殊的函数，_init和 _fini，这个我们在前面已经说过了。主要是分别用来初始化函数库和关闭的时候做一些必要的处理，我们可以把自己认为需要的代码放到这两个函数里面，它们分别在函数库被加载和释放的时候被执行。具体说，如果一个函数库里面有一个名字为&#8220;_init&#8221;的函数输出，那么在第一次通过dlopen()函数打开这个函数库，或者只是简单的作为共享函数库被打开的时候，_init函数被自动调用执行。与之相对应的就是_fini函数，当一个程序调用dlclose()去释放对这个函数库的引用的时候，如果该函数库的被引用计数器为0了，或者这个函数库是作为一般的共享函数库被使用而使用它的程序正常退出的时候，_fini就会被调用执行。C语言定义它们的原型如下：<br><br>void _init(void); void _fini(void);<br>当用gcc编译源程序为&#8220;.o&#8221;文件的时候，需要加一个&#8220;-nostartfiles&#8221;选项。这个选项使得C编译器不链接系统的启动函数库里面的启动函数。否则，就会得到一个&#8220;multiple-definition&#8221;的错误。<br>5.3. 共享函数库也可以使脚本（Scripts）<br>GNU的loader允许使用特殊格式的脚本语言来写一个函数库。这对于那些需要间接包含其他函数库的情况还是有用的。例如，下面是一个/usr/lib/libc.so的例子：<br><br>/* GNU ld script Use the shared library, but some functions are only in<br>the static library, so try that secondarily. */GROUP ( /lib/libc.so.6<br>/usr/lib/libc_nonshared.a )<br>更多的信息可以参考texinfo文档中关于ld链接的脚本部分。一般的信息还可以参考: info:ld#Options 和info:ld#Commands，也可以参考info:ld#Option Commands。<br>5.4. GNU libtool<br>如果你正在编译的系统相很方便的移植到其他操作系统下，你可以使用GNU libtool来创建和安装这个函数库。GNU libtool是一个函数库支持的典型的脚本。Libtool隐藏了使用一个可移植的函数库的负责性。Libtool提供了一个可以移植的界面来创建 object文件，链接函数库（静态或者共享的），并且安装这些库。它还包含了libltdl，一个可移植的动态函数库调入程序的wrapper。更多的 详细讨论，可以在http://www.gnu.org/software/libtool/manual.html看到。<br>5.5. 删除一些符号<br>在一个生产的文件中很多符号都是为了debug而包含的，占用了不少空间。如果空间不够，而且这些符号也许不再需要，就可以将其中一些删除。<br>最好的方法就是先正常的生成你需要的 object文件，然后debug和测试你需要的一些东西。一旦你完全测试完毕了，就可以用strip去删除一些不需要的符号了。Strip命令可以使你很方便的控制删除什么符号，而保留什么符号。Strip的具体用法可以参考其帮助文件。<br>另外的方法就是使用GNU ld的选项&#8220;-S&#8221;和&#8220;-s&#8221;;&#8220;-S&#8221;会删除一些debugger的符号，而&#8220;-s&#8221;则是将所有的符号信息都删除。通常我们可以在gcc中加这样的参数&#8220;-Wl,-S&#8221;和&#8220;-Wl,-s&#8221;来达到这个目的。<br>摘要<br>下面是一些例子，例子中我们会使用三种函数库（静态的、共享的和动态加载的函数库）。文件libhello.c是一个函数库，libhello.h 是它的头文件；demo_use.c则是一个使用了libhello函数库的。Script_static和script_dynamic分别演示如何以静态和共享方式使用函数库，而后面的demo_dynamic.c和script_dynamic则表示演示如何以动态加载函数库的方式来使用它。<br>(2002-08-25 17:38:37)<br>By Wing<br>6. 更多的例子<br>下面是一些例子，例子中我们会使用三种函数库（静态的、共享的和动态加载的函数库）。文件libhello.c是一个函数库， libhello.h是它的头文件；demo_use.c则是一个使用了libhello函数库的。Script_static和 script_dynamic分别演示如何以静态和共享方式使用函数库，而后面的demo_dynamic.c和script_dynamic则表示演示如何以动态加载函数库的方式来使用它。<br>6.1. File libhello.c<br><br>/* libhello.c - demonstrate library use. */<br>#include<br>void hello(void)<br>{<br>printf("Hello, library world.<br>");<br>}<br>6.2. File libhello.h<br><br>/* libhello.h - demonstrate library use. */<br>void hello(void);<br>6.3. File demo_use.c<br><br>/* demo_use.c -- demonstrate direct use of the "hello" routine */<br>#include "libhello.h"<br>int main(void)<br>{<br>hello();<br>return 0;<br>}<br>6.4. File script_static<br><br>#!/bin/sh<br># Static library demo<br># Create static library's object file, libhello-static.o.<br># I'm using the name libhello-static to clearly<br># differentiate the static library from the<br># dynamic library examples, but you don't need to use<br># "-static" in the names of your<br># object files or static libraries.gcc -Wall -g -c -o libhello-static.o<br>libhello.c<br># Create static library.ar rcs libhello-static.a libhello-static.o<br># At this point we could just copy libhello-static.a<br># somewhere else to use it.<br># For demo purposes, we'll just keep the library<br># in the current directory.<br># Compile demo_use program file.gcc -Wall -g -c demo_use.c -o demo_use.o<br># Create demo_use program; -L. causes "." to be searched during<br># creation of the program. Note that this command causes<br># the relevant object file in libhello-static.a to be<br># incorporated into file demo_use_static.gcc -g -o demo_use_static<br>demo_use.o -L. -lhello-static<br># Execute the program../demo_use_static<br>6.5. File script_shared<br><br>#!/bin/sh<br># Shared library demo<br># Create shared library's object file, libhello.o.gcc -fPIC -Wall<br>-g -c libhello.c<br># Create shared library.<br># Use -lc to link it against C library, since libhello<br># depends on the C library.gcc -g -shared -Wl,-soname,libhello.so.0 -o<br>libhello.so.0.0 libhello.o -lc# At this point we could just copy<br>libhello.so.0.0 into<br># some directory, say /usr/local/lib.<br># Now we need to call ldconfig to fix up the symbolic links.<br># Set up the soname. We could just execute:<br># ln -sf libhello.so.0.0 libhello.so.0<br># but let's let ldconfig figure it out./sbin/ldconfig -n .<br># Set up the linker name.<br># In a more sophisticated setting, we'd need to make<br># sure that if there was an existing linker name,<br># and if so, check if it should stay or not.ln -sf libhello.so.0<br>libhello.so<br># Compile demo_use program file.gcc -Wall -g -c demo_use.c -o<br>demo_use.o<br># Create program demo_use.<br># The -L. causes "." to be searched during creation<br># of the program; note that this does NOT mean that "."<br># will be searched when the program is executed.gcc -g -o demo_use<br>demo_use.o -L. -lhello<br># Execute the program. Note that we need to tell the program<br># where the shared library is,<br>using LD_LIBRARY_PATH.LD_LIBRARY_PATH="." ./demo_use<br>6.6. File demo_dynamic.c<br><br>/* demo_dynamic.c -- demonstrate dynamic loading and<br>use of the "hello" routine */<br>/* Need dlfcn.h for the routines to<br>dynamically load libraries */<br>#include<br>#include<br>#include<br>/* Note that we don't have to include "libhello.h".<br>&nbsp;&nbsp; However, we do need to specify something related;<br>&nbsp;&nbsp; we need to specify a type that will hold the value<br>&nbsp;&nbsp; we're going to get from dlsym(). */<br>/* The type "simple_demo_function" describes a function that<br>&nbsp;&nbsp; takes no arguments, and returns no value: */<br>typedef void (*simple_demo_function)(void);<br>int main(void)<br>{<br>const char *error;<br>void *module;<br>simple_demo_function demo_function;<br>/* Load dynamically loaded library */<br>module = dlopen("libhello.so", RTLD_LAZY);<br>if (!module)<br>{<br>&nbsp;&nbsp; fprintf(stderr, "Couldn't open libhello.so: %s<br>",dlerror());<br>&nbsp;&nbsp; exit(1);<br>}<br>/* Get symbol */<br>dlerror();<br>demo_function = dlsym(module, "hello");<br>if ((error = dlerror()))<br>{<br>&nbsp;&nbsp; fprintf(stderr, "Couldn't find hello: %s<br>", error);<br>&nbsp;&nbsp; exit(1);<br>}<br>/* Now call the function in the DL library */<br>(*demo_function)();<br>/* All done, close things cleanly */<br>dlclose(module);<br>return 0;<br>}<br>6.7. File script_dynamic<br><br>#!/bin/sh<br># Dynamically loaded library demo<br># Presume that libhello.so and friends have<br># been created (see dynamic example).<br># Compile demo_dynamic program file into an object file.gcc<br>-Wall -g -c demo_dynamic.c<br># Create program demo_use.<br># Note that we don't have to tell it where to search<br>for DL libraries,<br># since the only special library this program uses won't be<br># loaded until after the program starts up.<br># However, we DO need the option -ldl to include the library<br># that loads the DL libraries.gcc -g -o demo_dynamic<br>demo_dynamic.o -ldl<br># Execute the program. Note that we need to tell the<br># program where get the dynamically loaded library,<br># using LD_LIBRARY_PATH.LD_LIBRARY_PATH="." ./demo_dynamic</span>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-28 10:34 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下DNS服务器的设置</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59625.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Thu, 25 Jun 2009 03:39:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59625.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59625.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59625.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59625.html</trackback:ping><description><![CDATA[<p>环境：要设的DNS机子的 IP 34.0.188.99<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网关 34.0.188.250<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 子网掩码 255.255.255.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主机名为 linux.zzw.com<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 域名为 zzw.com</p>
<p>==================================================================</p>
<p>设置本子的IP地址、DNS、主机名</p>
<p>(1)IP地址：修改下面的文件/etc/sysconfig/network-scripts/ifcfg-eth0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEVICE=eth0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ONBOOT=yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOTPROTO=startic<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPADDR=34.0.188.99<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETMASK=255.255.255.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GATEWAY=34.0.188.250</p>
<p>(2)修改本机DNS设置：修改/etc/resolv.conf文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameserver&nbsp;&nbsp;&nbsp; 34.0.188.99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #把本机的DNS设成34.0.188.99</p>
<p>(3)修改本机的主机名：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a、打开/etc/hosts 文件 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入下面一行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34.0.188.99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux.zzw.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b、修改/etc/sysconfig/network&nbsp;&nbsp; 文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HOSTNAME = linux.zzw.com</p>
<p>====================================================================</p>
<p>对DNS进行设置</p>
<p>(1)修改/etc/named.config 这个文件<br>##############################################################<br>// generated by named-bootconf.pl</p>
<p>options {<br>directory "/var/named";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义了named要读写文件的路径<br>// query-source address * port 53;<br>};</p>
<p>controls {<br>inet 127.0.0.1 allow { localhost; } keys { rndckey; };<br>};</p>
<p>zone "." IN {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在这个文件中是用zone关键字来定义域区的，一个zone关键字定义一个域区<br>type hint;<br>/*在这里type类型有三种，它们分别是master,slave和hint它们的含义分别是： <br>master:表示定义的是主域名服务器 <br>slave :表示定义的是辅助域名服务器 <br>hint:表示是互联网中根域名服务器 <br>*/ <br>file "named.ca";&nbsp;&nbsp;&nbsp;&nbsp; //用来指定具体存放DNS记录的文件<br>};</p>
<p>zone "localhost" IN {&nbsp;&nbsp;&nbsp;&nbsp; //定义一具域名为localhost的正向区域<br>type master;<br>file "localhost.zone";<br>allow-update { none; };<br>};</p>
<p>zone "0.0.127.in-addr.arpa" IN {&nbsp;&nbsp; //定义一个IP为127.0.0.*的反向域区<br>type master;<br>file "named.local";<br>allow-update { none; };<br>};</p>
<p>zone "zzw.com" IN {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //指定一个域名为zzw.com的正向区域<br>type master;<br>file "zzw.com.db";<br>};</p>
<p>zone "188.0.34.in-addr.arpa" IN {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义一个IP为34.0.188.*反向域区<br>type master;<br>file "34.0.188.db";<br>};</p>
<p>include "/etc/rndc.key";<br>##############################################################<br>红色部分是加上去的，zzw.com设置的是zzw.com这个域的正向搜索文件为zzw.com.db而99.188.0.34.in-addr.arpa设置的是IP地址搜索的反向文件34.0.188.db，这些文件都从directory "/var/named";这里这里设置的/var/named目录调取</p>
<p>&#160;</p>
<p><br>(2)建立正向搜索文件 /var/named/zzw.com.db <br>##############################################################<br>$TTL 83600<br>@ IN SOA linux.zzw.com. root.linux.zzw.com. (<br>/*SOA表示授权开始,上面的IN表示后面的数据使用的是INTERNET标准。而@则代表相应的域名，如在这里代表zzw.com,即表示一个域名记录定义的开始。而linux.zzw.com则是这个域的主域名服务器，而root.linux.zzw.com则是管理员的邮件地址。注意这是邮件地址中用.来代替常见的邮件地址中的@.而SOA表示授权的开始 <br>*/ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2004071601 ; Serial<br>/*本行前面的数字表示配置文件的修改版本，格式是年月日当日修改的修改的次数，每次修改这个配置文件时都应该修改这个数字，要不然你所作的修改不会更新到网上的其它DNS服务器的数据库上，即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就不会反映出你的更新，也就对他们来说你更新是没有意义的。 <br>*/ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Refresh<br>/*定义的是以为单位的刷新频率 即规定从域名服务器多长时间查询一个主服务器，以保证从服务器的数据是最新的 */ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Retry<br>/*上面的这个值是规定了以秒为单位的重试的时间间隔，即当从服务试图在主服务器上查询更时，而连接失败了，则这个值规定了从服务多长时间后再试 */ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3600000&nbsp;&nbsp;&nbsp; ; Expire<br>/*上面这个用来规定从服务器在向主服务更新失败后多长时间后清除对应的记录，上述的数值是以分钟为单位的 */ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 86400 )&nbsp;&nbsp;&nbsp; ; Minimum<br>/*上面这个数据用来规定缓冲服务器不能与主服务联系上后多长时间清除相应的记 <br>录 */</p>
<p>@ IN&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux.zzw.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //指定的是NS记录指向<br>@ IN&nbsp;&nbsp; MX 10 linux.zzw.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //指定的是MX记录提向</p>
<p>linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 34.0.188.99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //把linux主机指到34.0.188.99<br>my&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 34.0.188.39<br>hq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34.0.188.98<br>www&nbsp;&nbsp; IN&nbsp;&nbsp; CNAME&nbsp;&nbsp; linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //www主机对应linux</p>
<p>/*上面的第一列表示是主机的名字，省去了后面的域。 <br>NS：表示是这个主机是一个域名服务器， <br>A：定义了一条A记录，即主机名到IP地址的对应记录 <br>MX 定义了一邮件记录 <br>CNAME：定义了对应主机的一个别名 */<br>//注：在文件的最后一定要空一行，不然好像会出错<br>##############################################################</p>
<p>&#160;</p>
<p>&#160;</p>
<p>(3)建立反向搜索文件 /var/named/34.0.188.db<br>##############################################################<br>$TTL 83600<br>@ IN SOA linux.zzw.com. root.linux.zzw.com. (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2004071601 ; Serial<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Refresh<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Retry<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3600000&nbsp;&nbsp;&nbsp; ; Expire<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 86400 )&nbsp;&nbsp;&nbsp; ; Minimum<br>@&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp; linux.zzw.com.<br>@&nbsp;&nbsp; IN&nbsp;&nbsp; MX 10 linux.zzw.com.</p>
<p>&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp; linux.zzw.com.<br>&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.zzw.com/"><u><font color=#0000ff>www.zzw.com</font></u></a>.<br>&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp; my.zzw.com.<br>&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp; hq.zzw.com.<br>//注域后面一定要加上是"."<br>##############################################################</p>
<p>&#160;</p>
<p>(4)named.ca、localhost.zone、named.local这三个文件基本不用改</p>
<p>&#160;</p>
<p>&#160;</p>
<p>(5)修改 /etc/hosts 文件<br>　　作用：实现与网上其他主要计算机的映射，它通常是当作DNS的备份出现的，也就是说，当DNS系统出现问题的时候才使用Hosts表。</p>
<p>　　实例：</p>
<p>　　 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost localhost.localdomain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost</p>
<p>　　 34.0.188.99　　linux.zzw.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux</p>
<p>　　//由于每台服务器都会有几个域名与IP的对应关系是永久的， 所以Hosts表中存放的应该是它们。</p>
<p>&#160;</p>
<p>&#160;</p>
<p>(6)修改 /etc/resolv.conf 文件<br>　　作用：指定域名服务器的IP和搜索顺序。</p>
<p>　　实例：</p>
<p>　　domain zzw.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义本地域名。</p>
<p>　　search zzw.com</p>
<p>/*简化用户输入的主机名，即当用户输入thj时，使得DNS可以把它成功地解析为linux.zzw.com。它与domain是互斥的，无论谁出现都是用来定义search列表的。*/</p>
<p>　　nameserver 192.168.10.1 <br>　　//定义域名服务器的IP,最多三个，建议一般使用两个。</p>
<p><br></p>
<p>(7) 修改 /etc/hosts.conf 文件<br>　　作用：如何实现hosts表与DNS的关系和接口。</p>
<p>　　实例：</p>
<p>　　 order hosts,bind //解析域名的顺序</p>
<p>　　 multi on //允许一台计算机拥有多个IP</p>
<p>&#160;</p>
<p>完成设置</p>
<p>===================================================================<br>进行测试</p>
<p>[root@linux /]# /etc/rc.d/init.d/named restart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>执行两次来更改生效</p>
<p>[root@linux /]# tail -f /var/log/messages<br>来查看DNS启动日志</p>
<p>[root@linux /]# nslookup<br>用来测试正向和反向<br>&gt;linux.zzw.com&nbsp;&nbsp;&nbsp; 正向测试<br>&gt;34.0.188.99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 反向测试</p>
<p><br>[root@linux /]# iptables -F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 去掉防火墙</p>
<p><br>[root@linux /]# chkconfig named on&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就可以下次自动起动服务了</p>
<p>&#160;</p>
<p><br>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/zzw45/archive/2004/07/17/43591.aspx"><u><font color=#0000ff>http://blog.csdn.net/zzw45/archive/2004/07/17/43591.aspx</font></u></a></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-25 11:39 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 基于红旗Linux系统的DNS的配置与实现</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59624.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Thu, 25 Jun 2009 03:38:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59624.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59624.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59624.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59624.html</trackback:ping><description><![CDATA[<strong>1．DNS简介<br><br></strong>&nbsp;&nbsp;&nbsp; 随着互联网在世界范围的快速发展，网络已经日益走进人们的生活。在TCP/IP网络上，每个设备必须分配一个唯一的地址，计算机在网络上通讯时只能识别如"202.96.134.163"之类的数字地址，而人们在使用网络资源的时候，为了便于记忆和理解，更倾向于使用有代表意义的名称，即域名系统DNS，如www.szptt.net.cn代表深圳之窗网站的域名，这就是为什么当我们打开浏览器，在地址栏中输入如"www.szptt.net.cn"的域名后，就能看到我们所需要的页面。这是因为在我们输入域名后，有一台称为"DNS服务器"的计算机自动把我们的域名"翻译"成了相应的IP地址，然后调出那个IP地址所对应的网页，最后再传回给我们的浏览器，我们才能得到结果。<br>&nbsp;&nbsp;&nbsp; DNS是域名系统(DomainNameSystem)的缩写，在一个TCP/IP架构的网络（例如Internet）环境中，DNS是一个非常重要而且常用的系统，主要的功能就是将人易于记忆的DomainName与人不容易记忆的IPAddress作转换。而上面执行DNS服务的这台网络主机，就可以称之为DNS Server。DNS最常见的版本是BIND--伯克利Internet域名服务器，该服务器称为named。<br><br><strong>&nbsp;&nbsp;&nbsp; 2．资源记录</strong><br><br>&nbsp;&nbsp;&nbsp; 每个DNS数据库都由资源记录构成，资源记录包含与特定主机有关的信息。而每个资源记录通常包含5项，大多数情况下用ACSII文本显示，每条记录一行，格式如下：<br>Domain Time to live Record type Class Record data<br>各项的含义如下：<br>(1)域名（Domain）：该项给出要定义的资源记录的域名，该域通常用来作为域名查询时的关键字。<br>(2)存活期（Timeolive）：在该存活期过后，该记录不在有效。<br>(3)类别（Class）：该项说明网络类型。目前大部分的资源记录都采用"IN"，表明Internet，该域的缺省值为"IN"。<br>(4)记录数据（Record data）：说明和该资源记录相关的信息，通常由资源记录类型来决定。<br>(5)记录类型（Record type）：该项说明资源记录的类型。<br><br><strong>&nbsp;&nbsp;&nbsp; 3．DNS配置步骤<br></strong><br>&nbsp;&nbsp;&nbsp; 我们假定用户建立的DNS服务器所管辖的域名为redflag.com，对应的子网IP地址是10.1.14.0，域名服务器的IP地址为10.1.14.61。配置过程如下：<br>（1）配置启动文件/etc/named.conf<br>&nbsp;&nbsp;&nbsp; 该文件是域名服务器守护进程named启动时读取到内存的第一个文件。在该文件中定义了域名服务器的类型、所授权管理的域以及相应数据库文件和其所在的目录。该文件的内容如下：<br><br><font color=#0000c0>options {<br>directory "/var/named";<br>notify no;<br>forwarders{<br>&nbsp;&nbsp;202.96.134.133;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>};<br>zone "." IN {<br>type hint;<br>file "named.ca";<br>};<br>zone "0.0.127.in-addr.arpa" IN {<br>type master;<br>file "named.local";<br>allow-update { none; };<br>};<br>zone "redflag.com" IN {<br>type master;<br>file " named.hosts";<br>allow-update { none; };<br>};<br>zone "14.1.10.in-addr.arpa" IN {<br>type master;<br>file "named.10.1.14 ";<br>allow-update { none; };<br>};<br>&nbsp;</font>
<p>&nbsp;&nbsp;&nbsp; 【说明】<br>（a）"directory"指定了dns记录文件的存放目录是/var/named。<br>（b）第一个"zone"语句定义了dns服务器的根域名服务器的信息是从 "name.ca"获得。这个记录文件是系统自带的，不用去改动它。<br>（c）第二个"zone"语句是"回送地址"的数据库文件，文件名是"named.local"。这个记录文件也是系统自带的，不用去改动它。<br>（d）forwarders {202.96.134.133;}，其中202.96.134.133是我这里电信的dns服务器的地址，forwarders参数指明了其后的IP所在的服务器作为备选的dns服务器。也就是说，把本机的dns不能解析的主机发送到这个备选的dns服务器上，让它来进行解析。<br>（e）第三个"zone"和第四个"zone"定义了"redflag.com"这个域和对应的反向查询域。<br>（f）"named.hosts"和"named.10.1.14"是域的记录文件。这两个文件也是自己创建的。<br>（g）在named.conf文件中涉及到的文件名当然也可以自己命名，但是要和/var/named目录下的文件名保持一致。<br>（h）在行"zone "14.1.10.in-addr.arpa" IN {"行中，网络号一定反序写出。<br>（2）创建或保留/var/named/named.ca<br>&nbsp;&nbsp;&nbsp; 在Linux系统上通常在/var/named目录下已经提供了一个named.ca，该文件中包含了Internet的顶层域名服务器，但这个文件通常会有变化，所以建议最好从Inter NIC下载最新的版本。该文件可以通过匿名ftp下载。<br>（3）创建/var/named/named.hosts<br>&nbsp;&nbsp;&nbsp; 该文件指定了域中主机域名同IP地址的映射，内容如下：</p>
<p><br><font color=#0000c0>$TTL&nbsp; 86400<br>@&nbsp;&nbsp;IN&nbsp;SOA&nbsp;a100.redflag.com.&nbsp;root.redflag.com. (<br>&nbsp;&nbsp;&nbsp;2001110600 ; serial<br>&nbsp;&nbsp;&nbsp;28800 ; refresh<br>&nbsp;&nbsp;&nbsp;14400 ; retry<br>&nbsp;&nbsp;&nbsp;3600000 ; expire<br>&nbsp;&nbsp;&nbsp;86400 ; minimum<br>&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;NS&nbsp;a100.redflag.com.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;MX&nbsp;10&nbsp;a100.redflag.com.<br>&nbsp;&nbsp;&nbsp;<br>localhost.&nbsp;IN&nbsp;A&nbsp;127.0.0.1<br>a100&nbsp;&nbsp;IN&nbsp;A&nbsp;10.1.14.61<br>a101&nbsp;&nbsp;IN&nbsp;A&nbsp;10.1.14.62<br>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;CNAME&nbsp;a100<br></font>&nbsp;<br>&nbsp;&nbsp;&nbsp; 【说明】<br>（a）在文件中所有的记录行（本文件从第10行开始）都要顶行写，前面不能有空格。<br>（b）行"IN NS a100.redflag.com."说明该域的域名服务器，至少应该定义一个。<br>（c）行"IN MX 10 a100.redflag.com."是MX记录，该程序专门处理邮件地址的主机部分为"@redflag.com"的邮件，"10"表示优先级别。<br>（d）类似行"a100 IN A 10.1.14.61"是一系列的"A"记录，表示主机名和IP地址的对应关系建立起来。a100是主机名，10.1.14.61是它的IP地址。<br>（e）行"www IN CNAME a100"表示一条定义别名的记录。即"www.redflag.com"和"a100.redflag.com"表示同一台主机。<br>(4) 创建/var/named/named.10.1.14<br>&nbsp;&nbsp;&nbsp; 该文件主要定义了IP地址到主机名的转换。IP地址到主机名的转换是非常重要的，Internet上很多应用，例如NFS、Web服务等都要用到该功能。该文件的内容如下：</p>
<p><br><font color=#0000c0>$TTL&nbsp; 86400<br>@&nbsp;&nbsp;IN&nbsp;SOA&nbsp;a100.redflag.com.&nbsp;root.a100.redflag.com. (<br>&nbsp;&nbsp;&nbsp;2001110600 ; serial<br>&nbsp;&nbsp;&nbsp;28800 ; refresh<br>&nbsp;&nbsp;&nbsp;14400 ; retry<br>&nbsp;&nbsp;&nbsp;3600000 ; expire<br>&nbsp;&nbsp;&nbsp;86400 ; minimum<br>&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;IN&nbsp;NS&nbsp;a100.redflag.com.<br>61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;PTR&nbsp;a100.redflag.com.<br>62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;PTR&nbsp;a101.redflag.com.<br></font>&nbsp;</p>
<p><br>&nbsp;&nbsp;&nbsp; 【说明】<br>（a）PTR记录用于定义IP地址名到主机域名的映射。<br>（b）PTR记录的最后一项必须是一个完整的标识域名，以"."结束。<br>（5）创建/var/named/named.local<br>&nbsp;&nbsp;&nbsp; 该文件用来说明"回送地址"的IP地址到主机名的映射。该文件的内容如下：</p>
<p><br><font color=#0000c0>$TTL&nbsp; 86400<br>@&nbsp;&nbsp;IN&nbsp;SOA&nbsp;a100.redflag.com.&nbsp;root.a100.redflag.com. (<br>&nbsp;&nbsp;&nbsp;2001110600 ; serial<br>&nbsp;&nbsp;&nbsp;28800 ; refresh<br>&nbsp;&nbsp;&nbsp;14400 ; retry<br>&nbsp;&nbsp;&nbsp;3600000 ; expire<br>&nbsp;&nbsp;&nbsp;86400 ; minimum<br>&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;IN&nbsp;NS&nbsp;a100.redflag.com.<br>1&nbsp;&nbsp;IN&nbsp;PTR&nbsp;localhost.<br></font>&nbsp;</p>
<p><br>&nbsp;&nbsp;&nbsp; 【说明】<br>（a）此文件的内容是特定的，在不同的域的域名服务器上，所要修改的只是SOA记录和NS记录。<br>（b）"PTR"记录的最后域名为完全标识域名，以"."结束。<br>（6） 配置文件/etc/resolv.conf<br>&nbsp;&nbsp;&nbsp; 该文件用来告诉解析器调用的本地域名、域名查找的顺序以及要访问域名服务器的IP地址。该文件的内容如下：<br>domain redflag.com<br>nameserver 10.1.14.61<br>search redflag.com<br>&nbsp;</p>
<p><br>（7）修改/etc/nsswitch.conf<br>&nbsp;&nbsp;&nbsp; 该文件中和域名服务有关的一项是"hosts"。修改如下：<br>hosts: files dns nisplus nis <br>（8）启动DNS<br>&nbsp;&nbsp;&nbsp; /etc/rc.d/init.d/named start或restart<br><br><strong>&nbsp;&nbsp;&nbsp; 4.DNS测试</strong><br><br>&nbsp;&nbsp;&nbsp; DNS测试最常用的是nslookup命令。<br>（1）检查正向DNS<br>（a）查找主机<br><br><font color=#0000c0>[root@redflag root]#nslookup<br>&gt;a100.redflag.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Server:&nbsp;&nbsp;10.1.14.61<br>Address:&nbsp;10.1.14.61#53</font></p>
<p><font color=#0000c0>Name:&nbsp;a100.redflag.com<br>Address: 10.1.14.61<br></font>&nbsp;</p>
<p><br>&nbsp;&nbsp;&nbsp; 该命令用来查找主机a100.redflag.com的IP地址。<br>如果只输入：<br>&gt;a100<br>nslookup应该能够根据文件/etc/resolv.conf中的定义，自动添加redflag.com的域名，然后显示与上面相同的结果。<br>(b)查找域名信息<br><br><font color=#0000c0>[root@redflag root]#nslookup<br>&gt;set type=ns<br>&gt;redflag.com<br>Server:&nbsp;&nbsp;10.1.14.61<br>Address:&nbsp;10.1.14.61#53<br>redflag.com&nbsp;nameserver = a100.redflag.com.</font><br>&nbsp;</p>
<p><br>（2）检查反向DNS<br>&nbsp;&nbsp;&nbsp; 假如要查找IP地址为10.1.14.61的域名，输入：<br><br><font color=#0000c0>[root@redflag root]#nslookup<br>&gt;set type=ptr<br>&gt;10.1.14.61<br>Server:&nbsp;&nbsp;10.1.14.61<br>Address:&nbsp;10.1.14.61#53<br>61.14.1.10.in-addr.arpa&nbsp;name = a100.redflag.com.</font><br>&nbsp;</p>
<p>（3）检查MX邮件记录<br>&nbsp;&nbsp;&nbsp; 要查找redflag.com域的邮件记录地址，输入：</p>
<p><br><font color=#0000c0>[root@redflag root]#nslookup<br>&gt;set type=mx<br>&gt;redflag.com<br>Server:&nbsp;&nbsp;10.1.14.61<br>Address:&nbsp;10.1.14.61#53<br>redflag.com&nbsp;mail exchanger = 10 a100.redflag.com.<br>&nbsp;</font></p>
<p><br>（4）检查CNAME别名记录<br>&nbsp;&nbsp;&nbsp; 要查找www.redflag.com主机的别名，输入：</p>
<p><br><font color=#0000c0>[root@redflag root]#nslookup<br>&gt;set type=cname<br>&gt;www.redflag.com<br>Server:&nbsp;&nbsp;10.1.14.61<br>Address:&nbsp;10.1.14.61#53<br>www.redflag.com&nbsp;canonical name = a100.redflag.com.</font><br>&nbsp;</p>
<p><strong>5．小结</strong><br>&nbsp;&nbsp;&nbsp; 域名系统（DNS）是一种用于TCP/IP应用程序的分布式数据库，它提供主机名和IP地址之间的转换以及有关电子邮件的路由信息。本文主要讨论的红旗Linux下DNS的配置和测试，该配置已在红旗Linux操作系统上测试通过。 </p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-25 11:38 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP状态的变迁(建立连接示意图)</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59584.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Wed, 24 Jun 2009 04:51:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59584.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59584.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59584.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59584.html</trackback:ping><description><![CDATA[<p>可以从下图形象地看出：<br>　　<a href="http://blog.s135.com/attachment/200707/tcps.gif" target=_blank><img title=点击在新窗口中浏览此图片 border=0 alt=点击在新窗口中浏览此图片 src="http://blog.s135.com/attachment/200707/tcps.gif"></a>　　<br>　　状态：描述<br>　　CLOSED：无连接是活动的或正在进行<br>　　LISTEN：服务器在等待进入呼叫<br>　　SYN_RECV：一个连接请求已经到达，等待确认<br>　　SYN_SENT：应用已经开始，打开一个连接<br>　　ESTABLISHED：正常数据传输状态<br>　　FIN_WAIT1：应用说它已经完成<br>　　FIN_WAIT2：另一边已同意释放<br>　　ITMED_WAIT：等待所有分组死掉<br>　　CLOSING：两边同时尝试关闭<br>　　TIME_WAIT：另一边已初始化一个释放<br>　　LAST_ACK：等待所有分组死掉<br><br><br></p>
<p>&nbsp;&nbsp;&nbsp; 参考至：<a href="http://blog.s135.com/post/269/"><u><font color=#1b719b>http://blog.s135.com/post/269/</font></u></a></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-24 12:51 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ICMP TYPE CODE 对应表</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59581.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Wed, 24 Jun 2009 04:37:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59581.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59581.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59581.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59581.html</trackback:ping><description><![CDATA[<strong>ICMP类型</strong>
<table class=CALSTABLE border=1>
    <thead>
        <tr>
            <th vAlign=top width="11%" align=middle>TYPE</th>
            <th vAlign=top width="11%" align=middle>CODE</th>
            <th vAlign=top width="56%" align=left>Description</th>
            <th vAlign=top width="11%" align=middle>Query</th>
            <th vAlign=top width="11%" align=middle>Error</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Echo Reply——回显应答（Ping应答）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Network Unreachable——网络不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>1</td>
            <td vAlign=top width="56%" align=left>Host Unreachable——主机不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>2</td>
            <td vAlign=top width="56%" align=left>Protocol Unreachable——协议不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="56%" align=left>Port Unreachable——端口不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>4</td>
            <td vAlign=top width="56%" align=left>Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>5</td>
            <td vAlign=top width="56%" align=left>Source routing failed——源站选路失败</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>6</td>
            <td vAlign=top width="56%" align=left>Destination network unknown——目的网络未知</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>7</td>
            <td vAlign=top width="56%" align=left>Destination host unknown——目的主机未知</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>8</td>
            <td vAlign=top width="56%" align=left>Source host isolated (obsolete)——源主机被隔离（作废不用）</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>9</td>
            <td vAlign=top width="56%" align=left>Destination network administratively prohibited——目的网络被强制禁止</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>10</td>
            <td vAlign=top width="56%" align=left>Destination host administratively prohibited——目的主机被强制禁止</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>11</td>
            <td vAlign=top width="56%" align=left>Network unreachable for TOS——由于服务类型TOS，网络不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>12</td>
            <td vAlign=top width="56%" align=left>Host unreachable for TOS——由于服务类型TOS，主机不可达</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>13</td>
            <td vAlign=top width="56%" align=left>Communication administratively prohibited by filtering——由于过滤，通信被强制禁止</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>14</td>
            <td vAlign=top width="56%" align=left>Host precedence violation——主机越权</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="11%" align=middle>15</td>
            <td vAlign=top width="56%" align=left>Precedence cutoff in effect——优先中止生效</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>4</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Source quench——源端被关闭（基本流控制）</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>5</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Redirect for network——对网络重定向</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>5</td>
            <td vAlign=top width="11%" align=middle>1</td>
            <td vAlign=top width="56%" align=left>Redirect for host——对主机重定向</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>5</td>
            <td vAlign=top width="11%" align=middle>2</td>
            <td vAlign=top width="56%" align=left>Redirect for TOS and network——对服务类型和网络重定向</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>5</td>
            <td vAlign=top width="11%" align=middle>3</td>
            <td vAlign=top width="56%" align=left>Redirect for TOS and host——对服务类型和主机重定向</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>8</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Echo request——回显请求（Ping请求）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>9</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Router advertisement——路由器通告</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>10</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Route solicitation——路由器请求</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>11</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>TTL equals 0 during transit——传输期间生存时间为0</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>11</td>
            <td vAlign=top width="11%" align=middle>1</td>
            <td vAlign=top width="56%" align=left>TTL equals 0 during reassembly——在数据报组装期间生存时间为0</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>12</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>IP header bad (catchall error)——坏的IP首部（包括各种差错）</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>12</td>
            <td vAlign=top width="11%" align=middle>1</td>
            <td vAlign=top width="56%" align=left>Required options missing——缺少必需的选项</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="11%" align=middle>x</td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>13</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Timestamp request (obsolete)——时间戳请求（作废不用）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>14</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
            <td vAlign=top width="56%" align=left>Timestamp reply (obsolete)——时间戳应答（作废不用）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>15</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Information request (obsolete)——信息请求（作废不用）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>16</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Information reply (obsolete)——信息应答（作废不用）</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>17</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Address mask request——地址掩码请求</td>
            <td vAlign=top width="11%" align=middle>x</td>
            <td vAlign=top width="11%" align=middle>&nbsp;<wbr></td>
        </tr>
        <tr>
            <td vAlign=top width="11%" align=middle>18</td>
            <td vAlign=top width="11%" align=middle>0</td>
            <td vAlign=top width="56%" align=left>Address mask reply——地址掩码应答</td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-24 12:37 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>inittab详细介绍</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/59562.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Tue, 23 Jun 2009 05:12:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/59562.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/59562.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/59562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/59562.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/59562.html</trackback:ping><description><![CDATA[<strong>一、什么是init</strong> <br><br>　　init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。 <br><br>　　内核启动（已经被载入内存，开始运行，并已初始化所有的设备驱动程序和数据结构等）之后，就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以，init始终是第一个进程（其PID始终为1）。<br><br>　　内核会在过去曾使用过init的几个地方查找它，它的正确位置（对Linux系统来说）是/sbin/init.如果内核找不到init，它就会试着运行/bin/sh，如果运行失败，系统的启动也会失败。<br><strong>二、运行级别<br><br></strong>　　运行级就是操作系统当前正在运行的功能级别。这个级别从1到6，具有不同的功能。其功能级别如下：# 0 - 停机（千万不能把initdefault 设置为0 ）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 除此之外还有ABC三个运行级别，但在RHLinux中都没有意义。<br><br>　　这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件，最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中，启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。（这里的n 就是运行级0-6）<br><br><strong>三、运行级别的配置</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行级别的配置是在/etc/inittab行内进行的，如下所示：12 ： 2 ： wait ： / etc / init.d / rc 2各字段解释如下：id：runlevels：action：process id：是一个任意指定的四个字符以内的序列标号，在本文件内必须唯一；使用老版本的libc5（低于5.2.18）或a.out库编译出来的sysvinit限制为2字符。注意：像getty之类的登陆进程必须使id字段与tty编号一致，如tty1需要id=1，许多老版本的登陆进程都遵循这种规则。<br><br>　　runlevels：表示这一行适用于运行那个/些级别（这里是2，可以有多个，表示在相应的运行级均需要运行）；另外sysinit、boot、bootwait这三个进程会忽略这个设置值。<br><br>　　action：表示进入对应的runlevels时，init应该运行process字段的命令的方式，常用的字段值及解释在附录内。例子中的wait表示需要运行这个进程一次并等待其结束。<br><br>　　process：具体应该执行的命令。例子中的/etc/init.d/rc命令启动运行级别2中应该运行的进程/命令，并负责在退出运行级时将其终止（当然在进入的runlevel中仍要运行的程序除外。）<br><br>　　当运行级别改变，并且正在运行的程序并没有在新的运行级别中指定需要运行，那么init会先发送一个SIGTERM 信号终止，然后是SIGKILL.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action字段告诉init执行的动作，即如何处理process字段指定的进程，action字段允许的值及对应的动作分别为:
<p>　　1)respawn:如果process字段指定的进程不存在，则启动该进程，init不等待处理结束，而是继续扫描inittab文件中的后续进程，当这样的进程终止时，init会重新启动它，如果这样的进程已存在，则什么也不做。</p>
<p>　　2)wait:启动process字段指定的进程，并等到处理结束才去处理inittab中的下一记录项。</p>
<p>　　3)once:启动process字段指定的进程，不等待处理结束就去处理下一记录项。当这样的进程终止时，也不再重新启动它，在进入新的运行级别时，如果这样的进程仍在运行，init也不重新启动它。</p>
<p>　　4)boot:只有在系统启动时，init才处理这样的记录项，启动相应进程，并不等待处理结束就去处理下一个记录项。当这样的进程终止时，系统也不重启它。</p>
<p>　　5)bootwait:系统启动后，当第一次从单用户模式进入多用户模式时处理这样的记录项，init启动这样的进程，并且等待它的处理结束，然后再进行下一个记录项的处理，当这样的进程终止时，系统也不重启它。</p>
<p>　　6)powerfail:当init接到断电的信号(SIGPWR)时，处理指定的进程。</p>
<p>　　7)powerwait:当init接到断电的信号(SIGPWR)时，处理指定的进程，并且等到处理结束才去检查其他的记录项。</p>
<p>　　8)off:如果指定的进程正在运行，init就给它发SIGTERM警告信号，在向它发出信号SIGKILL强制其结束之前等待5秒，如果这样的进程不存在，则忽略这一项。</p>
<p>　　9)ondemand:功能通respawn，不同的是，与具体的运行级别无关，只用于rstate字段是a、b、c的那些记录项。</p>
<p>　　10)sysinit:指定的进程在访问控制台之前执行，这样的记录项仅用于对某些设备的初始化，目的是为了使init在这样的设备上向用户提问有关运行级别的问题，init需要等待进程运行结束后才继续。</p>
<p>　　11)initdefault:指定一个默认的运行级别，只有当init一开始被调用时才扫描这一</p>
<p>init进程是系统中所有进程的父进程，init进程繁衍出完成通常操作所需的子进程，这些操作包括:设置机器名、检查和安装磁盘及文件系统、启动系统日志、配置网络接口并启动网络和邮件服务，启动打印服务等。Solaris中init进程的主要任务是按照inittab文件所提供的信息创建进程，由于进行系统初始化的那些进程都由init创建，所以init进程也称为系统初始化进程。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外:在任何时候，可以在文件inittab中添加新的记录项，级别Q/q不改变当前的运行级别，重新检查inittab文件，可以通过命令init Q或init q使init进程立即重新读取并处理文件inittab <br><br><br>补充：<br>　　<br>　　1、关于进入单用户模式，一般都是采用设置initdefault为1或者在grub/lilo中指定一个&#8220;single&#8221;或&#8220;emergency&#8221; 命令行参数来实现。其实另外还有一个更干净的方法，编辑：kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh，这样init就直接启动一个shell，其他任何进程都没有启动哦，够干净吧！<br><br>　　2、系统正在运行时，telinit命令可更改运行级别。运行级别发生变化时， init 就会从/etc/inittab运行相应的命令</p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/59562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2009-06-23 13:12 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/59562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何配置局域网中的通信协议</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/45215.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 09 Jun 2008 00:39:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/45215.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/45215.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/45215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/45215.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/45215.html</trackback:ping><description><![CDATA[<p>　无论是几台机器组成的Windows 95/98对等网，还是规模较大的Windows NT、Novell或Unix/Xenix局域网，凡是亲自组建或管理过网络的人，都遇到过如何选择和配置网络通信协议的问题。由于许多用户对网络中的协议及其功能特点不是很清楚，所以在组网中经常选用了不符合自身网络特点的通信协议。其结果就造成了网络无法接通，或者是速度太慢，工作不稳定等现象而影响了网络的可靠性。事实上，不同的网络协议都有其存在的必要，每一种协议都有它所主要依赖的操作系统和工作环境。在一个网络上运行得很好的通信协议，在另一个看起来很相似的网络上可能完全不适合。因此，组建网络时通信协议的选择尤为重要。本文基于局域网环境，以Windows NT为主，同时兼顾NetWare、Windows 95/98等操作系统，介绍和分析了常用通信协议的特点、性能和必要的配置方法，供组网者和网络管理人员参考。<br>　　<br>　　一、通信协议<br>　　组建网络时，必须选择一种网络通信协议，使得用户之间能够相互进行&#8220;交流&#8221;。协议（Protocol）是网络设备用来通信的一套规则，这套规则可以理解为一种彼此都能听得懂的公用语言。关于网络中的协议可以概括为两类：&#8220;内部协议&#8221;和&#8220;外部协议&#8221;（笔者这样区分，在专业分类上不是很严密，但确实能够解决一些在概念和应用中的混淆），下面分别予以介绍。 　　1.内部协议<br>　　<br>　　1978年，国际标准化组织（ISO）为网络通信制定了一个标准模式，称为OSI/RM（Open System Interconnect/Reference Model，开放系统互联参考模型）体系结构。该结构共分七层，从低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中，任何一个网络设备的上下层之间都有其特定的协议形式，同时两个设备（如工作站与服务器）的同层之间也有其使用的协议约定。在这里，我们将这种上下层之间和同层之间的协议全部定义为&#8220;内部协议&#8221;。内部协议在组网中一般很少涉及到，它主要提供给网络开发人员使用。如果你只是为了组建一个网络，可不去理会内部协议。 　　2.外部协议<br>　　<br>　　外部协议即我们组网时所必须选择的协议。由于它直接负责计算机之间的相互通信，所以通常称为网络通信协议。自从网络问世以来，有许多公司投入到了通信协议的开发中，如IBM、Banyan、Novell、Microsoft等。每家公司开发的协议，最初一般是为了满足自己的网络通信，但随着网络应用的普及，不同网络之间进行互联的要求越来越迫切，因此通信协议就成为解决网络之间互联的关键技术。就像使用不同母语的人与人之间需要一种通用语言才能交谈一样，网络之间的通信也需要一种通用语言，这种通用语言就是通信协议。目前，局域网中常用的通信协议（外部协议）主要有NetBEUI、IPX/SPX及其兼容协议和TCP/IP三类。<br>　　<br>　　3.选择网络通信协议的原则<br>　　<br>　　我们在选择通信协议时一般应遵循以下的原则：<br>　　<br>　　第一、所选协议要与网络结构和功能相一致。如你的网络存在多个网段或要通过路由器相连时，就不能使用不具备路由和跨网段操作功能的NetBEUI协议，而必须选择IPX/SPX或TCP/IP等协议。另外，如果你的网络规模较小，同时只是为了简单的文件和设备的共享，这时你最关心的就是网络速度，所以在选择协议时应选择占用内存小和带宽利用率高的协议，如NetBEUI。当你的网络规模较大，且网络结构复杂时，应选择可管理性和可扩充性较好的协议，如TCP/IP。<br>　　<br>　　第二、除特殊情况外，一个网络尽量只选择一种通信协议。现实中许多人的做法是一次选择多个协议，或选择系统所提供的所有协议，其实这样做是很不可取的。因为每个协议都要占用计算机的内存，选择的协议越多，占用计算机的内存资源就越多。一方面影响了计算机的运行速度，另一方面不利于网络的管理。事实上一个网络中一般一种通信协议就可以满足需要。<br>　　<br>　　第三、注意协议的版本。每个协议都有它的发展和完善过程，因而出现了不同的版本，每个版本的协议都有它最为合适的网络环境。从整体来看，高版本协议的功能和性能要比低版本好。所以在选择时，在满足网络功能要求的前提下，应尽量选择高版本的通信协议。</p>
<p>　　第四、协议的一致性。如果要让两台实现互联的计算机间进行对话，它们两者使用的通信协议必须相同。否则中间还需要一个&#8220;翻译&#8221;进行不同协议的转换，这样不仅影响通信速度，同时也不利于网络的安全和稳定运行。 二、局域网中常用的三种通信协议<br>　　<br>　　1.NetBEUI协议<br>　　■NetBEUI通信协议的特点。NetBEUI(NetBIOS Extended User Interface，用户扩展接口)由IBM于1985年开发完成，它是一种体积小、效率高、速度快的通信协议。NetBEUI也是微软最钟爱的一种通信协议，所以它被称为微软所有产品中通信协议的&#8220;母语&#8221;。微软在其早期产品，如DOS、LAN Manager、Windows 3.x和Windows for Workgroup中主要选择NetBEUI作为自己的通信协议。在微软如今的主流产品，如Windows 95/98和Windows NT中，NetBEUI已成为其固有的缺省协议。有人将WinNT定位为低端网络服务器操作系统，这与微软的产品过于依赖NetBEUI有直接的关系。NetBEUI是专门为几台到百余台PC所组成的单网段部门级小型局域网而设计的，它不具有跨网段工作的功能，即NetBEUI不具备路由功能。如果你在一个服务器上安装了多块网卡，或要采用路由器等设备进行两个局域网的互联时，将不能使用NetBEUI通信协议。否则，与不同网卡（每一块网卡连接一个网段）相连的设备之间，以及不同的局域网之间将无法进行通信。虽然NetBEUI存在许多不尽人意的地方，但它也具有其他协议所不具备的优点。在三种通信协议中，NetBEUI占用内存最少，在网络中基本不需要任何配置。尤其在微软产品几乎独占PC操作系统的今天，它很适合于广大的网络初学者使用。<br>　　<br>　　■NetBEUI与NetBIOS之间的关系。细心的读者可能已经发现，NetBEUI中包含一个网络接口标准NetBIOS。NetBIOS（Network Basic Input/Output System，网络基本输入/输出系统）是IBM在1983年开发的一套用于实现PC间相互通信的标准，其目的是开发一种仅仅在小型局域网上使用的通信规范。该网络由PC组成，最大用户数不超过30个，其特点是突出一个&#8220;小&#8221;字。后来，IBM发现NetBIOS存在的许多缺陷，所以于1985年对其进行了改进，推出了NetBEUI通信协议。随即，微软将NetBEUI作为其客户机/服务器网络系统的基本通信协议，并进一步进行了扩充和完善。最有代表性的是在NetBEUI中增加了叫做SMB（Server Message Blocks，服务器消息块）的组成部分，以降低网络的通信堵塞。为此，有时将NetBEUI协议也称为&#8220;SMB协议&#8221;。 人们常将NetBIOS和NetBEUI混淆起来，其实NetBIOS只能算是一个网络应用程序的接口规范，是NetBEUI的基础，它不具有严格的通信协议功能。而NetBEUI是建立在NetBIOS基础之上的一个网络传输协议。<br>　　<br>　　2.IPX/SPX及其兼容协议<br>　　■IPX/SPX通信协议的特点。IPX/SPX(Internetwork Packet eXchange/Sequences Packet eXchange，网际包交换/顺序包交换)是Novell公司的通信协议集。与NetBEUI的明显区别是，IPX/SPX显得比较庞大，在复杂环境下具有很强的适应性。因为，IPX/SPX在设计一开始就考虑了多网段的问题，具有强大的路由功能，适合于大型网络使用。当用户端接入NetWare服务器时，IPX/SPX及其兼容协议是最好的选择。但在非Novell网络环境中，一般不使用IPX/SPX。尤其在Windows NT网络和由Windows 95/98组成的对等网中，无法直接使用IPX/SPX通信协议。<br>　　<br>　　■IPX/SPX协议的工作方式。IPX/SPX及其兼容协议不需要任何配置，它可通过&#8220;网络地址&#8221;来识别自己的身份。Novell网络中的网络地址由两部分组成：标明物理网段的&#8220;网络ID&#8221;和标明特殊设备的&#8220;节点ID&#8221;。其中网络ID集中在NetWare服务器或路由器中，节点ID即为每个网卡的ID号（网卡卡号）。所有的网络ID和节点ID都是一个独一无二的&#8220;内部IPX地址&#8221;。正是由于网络地址的唯一性，才使IPX/SPX具有较强的路由功能。 在IPX/SPX协议中，IPX是NetWare最底层的协议，它只负责数据在网络中的移动，并不保证数据是否传输成功，也不提供纠错服务。IPX在负责数据传送时，如果接收节点在同一网段内，就直接按该节点的ID将数据传给它；如果接收节点是远程的（不在同一网段内，或位于不同的局域网中），数据将交给NetWare服务器或路由器中的网络ID，继续数据的下一步传输。SPX在整个协议中负责对所传输的数据进行无差错处理，所以我们将IPX/SPX也叫做&#8220;Novell的协议集&#8221;。</p>
<p>　　■NWLink通信协议。Windows NT中提供了两个IPX/SPX的兼容协议：&#8220;NWLink SPX/SPX兼容协议&#8221;和&#8220;NWLink NetBIOS&#8221;，两者统称为&#8220;NWLink通信协议&#8221;。NWLink协议是Novell公司IPX/SPX协议在微软网络中的实现，它在继承IPX/SPX协议优点的同时，更适应了微软的操作系统和网络环境。Windows NT网络和Windows 95/98的用户，可以利用NWLink协议获得NetWare服务器的服务。如果你的网络从Novell环境转向微软平台，或两种平台共存时，NWLink通信协议是最好的选择。不过在使用NWLink协议时，其中&#8220;NWLink IPX/SPX兼容协议&#8221;类似于Windows 95/98中的&#8220;IPX/SPX兼容协议&#8221;，它只能作为客户端的协议实现对NetWare服务器的访问，离开了NetWare服务器，此兼容协议将失去作用；而&#8220;NWLink NetBIOS&#8221;协议不但可在NetWare服务器与Windows NT之间传递信息，而且能够用于Windows NT、Windows 95/98相互之间任意通信。<br>　　<br>　　3.TCP/IP协议<br>　　TCP/IP（Transmission Control Protocol/Internet Protocol，传输控制协议/网际协议）是目前最常用到的一种通信协议，它是计算机世界里的一个通用协议。在局域网中，TCP/IP最早出现在Unix系统中，现在几乎所有的厂商和操作系统都开始支持它。同时，TCP/IP也是Internet的基础协议。<br>　　<br>　　■TCP/IP通信协议的特点。TCP/IP具有很高的灵活性，支持任意规模的网络，几乎可连接所有的服务器和工作站。但其灵活性也为它的使用带来了许多不便，在使用NetBEUI和IPX/SPX及其兼容协议时都不需要进行配置，而TCP/IP协议在使用时首先要进行复杂的设置。每个节点至少需要一个&#8220;IP地址&#8221;、一个&#8220;子网掩码&#8221;、一个&#8220;默认网关&#8221;和一个&#8220;主机名&#8221;。如此复杂的设置，对于一些初识网络的用户来说的确带来了不便。不过，在Windows NT中提供了一个称为动态主机配置协议（DHCP）的工具，它可自动为客户机分配连入网络时所需的信息，减轻了联网工作上的负担，并避免了出错。当然，DHCP所拥有的功能必须要有DHCP服务器才能实现。 同IPX/SPX及其兼容协议一样，TCP/IP也是一种可路由的协议。但是，两者存在着一些差别。TCP/IP的地址是分级的，这使得它很容易确定并找到网上的用户，同时也提高了网络带宽的利用率。当需要时，运行TCP/IP协议的服务器（如Windows NT服务器）还可以被配置成TCP/IP路由器。与TCP/IP不同的是，IPX/SPX协议中的IPX使用的是一种广播协议，它经常出现广播包堵塞，所以无法获得最佳的网络带宽。 ////////<br>　　<br>　　■Windows 95/98中的TCP/IP协议。Windows 95/98的用户不但可以使用TCP/IP组建对等网，而且可以方便地接入其它的服务器。值得注意的是，如果Windows 95/98工作站只安装了TCP/IP协议，它是不能直接加入Windows NT域的。虽然该工作站可通过运行在Windows NT服务器上的代理服务器（如Proxy Server）来访问Internet，但却不能通过它登录Windows NT服务器的域。如果要让只安装TCP/IP协议的Windows 95/98用户加入到Windows NT域，还必须在Windows 95/98上安装NetBEUI协议。<br>　　<br>　　■TCP/IP协议在局域网中的配置。在提到TCP/IP协议时，有许多用户便被其复杂的描述和配置所困扰，而不敢放心地去使用。其实就局域网用户来说，只要你掌握了一些有关TCP/IP方面的知识，使用起来也非常方便。<br>　　<br>　　●IP地址基础知识。前面在谈到IPX/SPX协议时就已知道，IPX的地址由&#8220;网络ID&#8221;（NetWork ID）和&#8220;节点ID&#8221;（Node ID）两部分组成，IPX/SPX协议是靠IPX地址来进行网上用户的识别的。同样，TCP/IP协议也是靠自己的IP地址来识别在网上的位置和身份的，IP地址同样由&#8220;网络ID&#8221;和&#8220;节点ID&#8221;（或称HOST ID，主机地址）两部分组成。一个完整的IP地址用32位（bit）二进制数组成，每8位（1个字节）为一个段（Segment），共4段（Segment1～Segment4），段与段之间用&#8220;.&#8221;号隔开。为了便于应用，IP地址在实际使用时并不直接用二进制，而是用大家熟悉的十进制数表示，如192.168.0.1等。IP地址的完整组成：&#8220;网络ID&#8221;和&#8220;节点ID&#8221;都包含在32位二进制数中。目前，IP地址主要分为A、B、C三类（除此之外，还存在D和E两类地址，现在局域网中这两类地址基本不用，故本文暂且不涉及），A类用于大型网络，B类用于中型网络，C类一般用于局域网等小型网络中。其中，A类地址中的最前面一段Segment1用来表示&#8220;网络ID&#8221;，且Segment1的8位二进制数中的第一位必须是&#8220;0&#8221;。其余3段表示&#8220;节点ID&#8221;；B类地址中，前两段用来表示&#8220;网络ID&#8221;，且Segment1的8位二进制数中的前二位必须是&#8220;10&#8221;。后两段用来表示&#8220;节点ID&#8221;；在C类地址中，前三段表示&#8220;网络ID&#8221;，且Segment1的8位二进制数中的前三位必须是&#8220;110&#8221;。最后一段Segment4用来表示&#8220;节点ID&#8221;。 值得一提的是，IP地址中的所有&#8220;网络ID&#8221;都要向一个名为InterNIC（Internet Network Information Center，互联网络信息中心）申请，而&#8220;节点ID&#8221;可以自由分配。目前可供使用的IP地址只有C类，A类和B类的资源均已用尽。不过在选用IP地址时，总的原则是：网络中每个设备的IP地址必须唯一，在不同的设备上不允许出现相同的IP地址。表1列出了IP地址中的&#8220;网络ID&#8221;的有关属性，&#8220;节点ID&#8221;在互不重复的情况下由用户自由分配。其实，将IP地址进行分类，主要是为了满足网络的互联。如果你的网络是一个封闭式的网络，只要在保证每个设备的IP地址唯一的前提下，三类地址中的任意一个都可以直接使用（为以防万一，你还是老老实实地使用C类IP地址为好）。</p>
<p>　　●子网掩码。对IP地址的解释称之为子网掩码。从名称可以看出，子网掩码是用于对子网的管理，主要是在多网段环境中对IP地址中的&#8220;网络ID&#8221;进行扩展。举个例子来说明：例如某个节点的IP地址为192.168.0.1，它是一个C类网。其中前面三段共24位用来表示&#8220;网络ID&#8221;，是非常珍贵的资源；而最后一段共8位可以作为&#8220;节点ID&#8221;自由分配。但是，如果公司的局域网是分段管理的，或者该网络是由多个局域网互联而成，是否要给每个网段或每个局域网都申请分配一个&#8220;网络ID&#8221;呢？这显然是不合理的。此时，我们可以使用子网掩码的功能，将其中一个或几个节点的IP地址全部充当成&#8220;网络ID&#8221;来使用，用来扩展&#8220;网络ID&#8221;不足的困难。 当我们将某一节点的IP地址如192.168.0.1已设置成一个&#8220;网络ID&#8221;时，网络上的其它设备又怎样知道它是一个&#8220;网络ID&#8221;，而不是一个节点IP地址呢？这就要靠子网掩码来告知。子网掩码是这样做的：如果某一位的二进制数是&#8220;1&#8221;，它就知道是&#8220;网络ID&#8221;的一部分；如果是&#8220;0&#8221;便认作是&#8220;节点ID&#8221;的一部分。如将192.168.0.1当做&#8220;网络ID&#8221;时，其子网掩码就是11111111.11111111.11111111.00000001，对应的十进制数表示为255.255.255.1。否则它的子网掩码就是11111111.11111111.11111111.00000000，对应的十进制数表示应为255.255.255.0 。有了子网掩码，便可方便地实现用户跨网段或跨网络操作。不过，为了让子网掩码能够正常工作，同一子网中的所有设备都必须支持子网掩码，且子网掩码相同。表2列出了A、B、C三类网络的缺省子网掩码。<br>　　<br>　　●网关。网关（Gateway）是用来连接异种网络的设置。它充当了一个翻译的身份，负责对不同的通信协议进行翻译，使运行不同协议的两种网络之间可以实现相互通信。如运行TCP/IP协议的Windows NT用户要访问运行IPX/SPX协议的Novell网络资源时，则必须由网关作为中介。如果两个运行TCP/IP协议的网络之间进行互联，则可以使用Windows NT所提供的&#8220;默认网关&#8221;（Default Gateway）来完成。网关的地址该如何分配呢？可举一个例子来回答：假如A网络的用户要访问B网络上的资源，必须在A网络中设置一个网关，该网关的地址应为B网络的&#8220;网络ID&#8221;（一般可理解为B网络服务器的IP地址）。当A网络的用户同时还要访问C网络的资源时又该怎么呢？你只需将C网络的&#8220;网络ID&#8221;添加到A网络的网关中即可。依次类推&#8230;&#8230;网关连多少个网络，就拥有多少个IP地址。<br>　　<br>　　●主机名。网络中唯一能够代表用户或设备身份的只有IP地址。但一般情况下，众多的IP地址不容易记忆，操作起来也不方便。为了改善这种状况，我们可给予每个用户或设备一个有意义的名称，如&#8220;WANGQUN&#8221;。至于在网络中用到&#8220;WANGQUN&#8221;时，怎样知道其对应的IP地址呢？这完全由操作系统自己完成，我们大可不必考虑。 三、通信协议的安装、设置和测试 局域网中的一些协议，在安装操作系统时会自动安装。如在安装Windows NT或Windows 95/98时，系统会自动安装NetBEUI通信协议。在安装NetWare时，系统会自动安装IPX/SPX通信协议。其中三种协议中，NetBEUI和IPX/SPX在安装后不需要进行设置就可以直接使用，但TCP/IP要经过必要的设置。所以下文主要以Windows NT环境下的TCP/IP协议为主，介绍其安装、设置和测试方法，其他操作系统中协议的有关操作与Windows NT基本相同，甚至更为简单。<br>　　<br>　　■TCP/IP通信协议的安装。在Windows NT中，如果未安装有TCP/IP通信协议，可选择&#8220;开始/设置/控制面板/网络&#8221;，将出现&#8220;网络&#8221;对话框，选择对话框中的&#8220;协议/添加&#8221;，选取其中的TCP/IP协议，然后单击&#8220;确定&#8221;按钮。系统会询问你是否要进行&#8220;DHCP服务器&#8221;的设置？如果你的IP地址是固定的（一般是这样），可选择&#8220;否&#8221;。随后，系统开始从安装盘中复制所需的文件。<br>　　<br>　　■TCP/IP通信协议的设置。在&#8220;网络&#8221;对话框中选择已安装的TCP/IP协议，打开其&#8220;属性&#8221;，将出现图2所示的对话框。在指定的位置输入已分配好的&#8220;IP地址&#8221;和&#8220;子网掩码&#8221;。如果该用户还要访问其它Widnows NT网络的资源，还可以在&#8220;默认网关&#8221;处输入网关的地址。</p>
<p>　■TCP/IP通信协议的测试。当TCP/IP协议安装并设置结束后，为了保证其能够正常工作，在使用前一定要进行测试。笔者建议大家使用系统自带的工具程序：PING.EXE，该工具可以检查任何一个用户是否与同一网段的其他用户连通，是否与其他网段的用户连接正常，同时还能检查出自己的IP地址是否与其他用户的IP地址发生冲突。假如服务器的IP地址为192.168.0.1，如要测试你的机器是否与服务器接通时，只需切换到DOS提示符下，并键入命令&#8220;PING 192.168.0.1&#8221;即可。如果出现类似于&#8220;Reply from 192.168.0.1&#8230;&#8230;&#8221;的回应，说明TCP/IP协议工作正常；如果显示类似于&#8220;Request timed out&#8221;的信息，说明双方的TCP/IP协议的设置可能有错，或网络的其它连接（如网卡、HUB或连线等）有问题，还需进一步检查。</p>
<p>　　<br>　　小结<br>　　在组建局域网时，具体选择哪一种网络通信协议主要取决于网络规模、网络间的兼容性和网络管理几个方面。如果正在组建一个小型的单网段的网络，并且对外没有连接的需要，这时最好选择NetBEUI通信协议。如果你正从NetWare迁移到Windows NT，或两种平台共存时，IPX/SPX及其兼容协议可提供一个很好的传输环境。如果你正在规划一个高效率、可互联性和可扩展性的网络，TCP/IP则将是理想的选择。 <br></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/45215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-06-09 08:39 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/45215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>局域网常用的DOS查询IP地址命令</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/45214.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 09 Jun 2008 00:38:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/45214.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/45214.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/45214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/45214.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/45214.html</trackback:ping><description><![CDATA[<p>一、Ping命令的使用技巧 </p>
<p>　　Ping是个使用频率极高的实用程序，用于确定本地主机是否能与另一台主机交换（发送与接收）数据报。根据返回的信息，我们就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是：成功地与另一台主机进行一次或两次数 据报交换并不表示TCP/IP配置就是正确的，我们必须执行大量的本地主机与远程主机的数据报交换，才能确信TCP/IP的正确性。 </p>
<p>　　简单的说，Ping就是一个测试程序，如果Ping运行正确，我们大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障，从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送，Ping也被某些别有用心的人作为DDOS（拒绝服务攻击）的工具，例如许多大型的网站就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据报而瘫痪的。 </p>
<p>　　按照缺省设置，Windows上运行的Ping命令发送4个ICMP（网间控制报文协议）回送请求，每个32字节数据，如果一切正常，我们应能得到4个回送应答。<br>&nbsp;Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短，表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL（Time To Live存在时间）值，我们可以通过TTL值推算一下数据包已经通过了多少个路由器：源地点TTL起始值（就是比返回TTL略大的一个2的乘方数）-返回时TTL值。例如，返回TTL值为119，那么可以推算数据报离开源地址的TTL起始值为128，而源地点到目标地点要通过9个路由器网段（128-119）；如果返回TTL值为246，TTL起始值就是256，源地点到目标地点要通过9个路由器网段。 </p>
<p>　　1、通过Ping检测网络故障的典型次序 </p>
<p>正常情况下，当我们使用Ping命令来查找问题所在或检验网络运行情况时，我们需要使用许多Ping命令，如果所有都运行正确，我们就可以相信基本的连通性和配置参数没有问题；如果某些Ping命令出现运行故障，它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障： </p>
<p>　　&#183;ping 127.0.0.1 </p>
<p>这个Ping命令被送到本地计算机的IP软件，该命令永不退出该计算机。如果没有做到这一点，就表示TCP/IP的安装或运行存在某些最基本的问题。 </p>
<p>　　&#183;ping 本机IP </p>
<p>　　这个命令被送到我们计算机所配置的IP地址，我们的计算机始终都应该对该Ping命令作出应答，如果没有，则表示本地配置或安装存在问题。出现此问题时，局域网用户请断开网络电缆，然后重新发送该命令。如果网线断开后本命令正确，则表示另一台计算机可能配置了相同的IP地址。 </p>
<p>　　&#183;ping 局域网内其他IP </p>
<p>这个命令应该离开我们的计算机，经过网卡及网络电缆到达其他计算机，再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答，那么表示子网掩码（进行子网分割时，将IP地址的网络部分与主机部分分开的代码）不正确或网卡配置错误或电缆系统有问题。 </p>
<p>　　&#183;ping 网关IP </p>
<p>　　这个命令如果应答正确，表示局域网中的网关路由器正在运行并能够作出应答。 </p>
<p>　　&#183;ping 远程IP </p>
<p>如果收到4个应答，表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet（但不排除ISP的DNS会有问题）。 </p>
<p>　　&#183;ping localhost <br>localhost是个作系统的网络保留名，它是127.0.0.1的别名，每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内，则表示主机文件（/Windows/host）中存在问题。 </p>
<p>　　&#183;ping <a href="http://www.xxx.com/">www.xxx.com</a> <br>对这个域名执行Ping <a href="http://www.xxx.com/">www.xxx.com</a> 地址，通常是通过DNS 服务器 如果这里出现故障，则表示DNS服务器的IP地址配置不正确或DNS服务器有故障（对于拨号上网用户，某些ISP已经不需要设置DNS服务器了）。顺便说一句：我们也可以利用该命令实现域名对IP地址的转换功能。如果上面所列出的所有Ping命令都能正常运行，那么我们对自己的计算机进行本地和远程通信的功能基本上就可以放心了。但是，这些命令的成功并不表示我们所有的网络配置都没有问题，例如，某些子网掩码错误就可能无法用这些方法检测到。 <br>2、Ping命令的常用参数选项 </p>
<p>　　&#183;ping IP Ct </p>
<p>连续对IP地址执行Ping命令，直到被用户以Ctrl+C中断。 </p>
<p>　　&#183;ping IP -l 3000 </p>
<p>指定Ping命令中的数据长度为3000字节，而不是缺省的32字节。 </p>
<p>　　&#183;ping IP Cn </p>
<p>执行特定次数的Ping命令。 </p>
<p>　　二、Netstat 命令的使用技巧 </p>
<p><br>　　Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据，一般用于检验本机各端口的网络连接情况。如果我们的计算机有时候接受到的数据报会导致出错数据删除或故障，我们不必感到奇怪，TCP/IP可以容许这些类型的错误，并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比，或者它的数目正迅速增加，那么我们就应该使用Netstat查一查为什么会出现这些情况了。 </p>
<p>　　1、netstat 的一些常用选项 </p>
<p>　　&#183;netstat Cs </p>
<p>　　本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序（如Web浏览器）运行速度比较慢，或者不能显示Web页之类的数据，那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行，找到出错的关键字，进而确定问题所在。 </p>
<p>　　&#183;netstat Ce </p>
<p>　　本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量，也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量）。 </p>
<p>　　&#183;netstat Cr </p>
<p>　　本选项可以显示关于路由表的信息，类似于后面所讲使用route print命令时看到的 信息。除了显示有效路由外，还显示当前有效的连接。 </p>
<p>　　&#183;netstat Ca </p>
<p>　　本选项显示一个所有的有效连接信息列表，包括已建立的连接（ESTABLISHED），也包括监听连接请求（LISTENING）的那些连接。 </p>
<p>　　&#183;netstat Cn </p>
<p>　　显示所有已建立的有效连接。 </p>
<p>下面是 netstat 的输出示例： </p>
<p>　　C:\&gt;netstat -e <br>　　Interface Statistics <br>　　Received　　　Sent <br>　　Bytes　　　　　　　　　3995837940　　47224622 <br>　　Unicast packets　　　　120099　　　　131015 <br>　　Non-unicast packets　　7579544　　　 3823 <br>　　Discards　　　　　　　 0　　　　　　 0 <br>　　Errors　　　　　　　　 0　　　　　　 0 <br>　　Unknown protocols　　　363054211 </p>
<p>　　C:\&gt;netstat -a <br>　　Active Connections <br>　　Proto Local Address　　　Foreign Address　　　 State <br>　　TCP　CORP1:1572　　　 172.16.48.10:nbsession　 ESTABLISHED <br>　　TCP　CORP1:1589　　　 172.16.48.10:nbsession　 ESTABLISHED <br>　　TCP　CORP1:1606　　　 172.16.105.245:nbsession ESTABLISHED <br>　　TCP　CORP1:1632　　　 172.16.48.213:nbsession　ESTABLISHED <br>　　TCP　CORP1:1659　　　 172.16.48.169:nbsession　ESTABLISHED <br>　　TCP　CORP1:1714　　　 172.16.48.203:nbsession　ESTABLISHED </p>
<p>　TCP　CORP1:1719　　　 172.16.48.36:nbsession　 ESTABLISHED <br>　　TCP　CORP1:1241　　　 172.16.48.101:nbsession　ESTABLISHED <br>　　UDP　CORP1:1025　　　 *:* <br>　　UDP　CORP1:snmp　　　 *:* <br>　　UDP　CORP1:nbname　　 *:* <br>　　UDP　CORP1:nbdatagram *:* <br>　　UDP　CORP1:nbname　　 *:* <br>　　UDP　CORP1:nbdatagram *:* </p>
<p>　　C:\&gt;netstat -s <br>　　IP Statistics <br>　　Packets Received　　　　　　 = 5378528 <br>　　Received Header Errors　　　 = 738854 <br>　　Received Address Errors　　　= 23150 <br>　　Datagrams Forwarded　　　　　= 0 <br>　　Unknown Protocols Received　 = 0 <br>　　Received Packets Discarded　 = 0 <br>　　Received Packets Delivered　 = 4616524 <br>　　Output Requests　　　　　　　= 132702 <br>　　Routing Discards　　　　　　 = 157 <br>　　Discarded Output Packets　　 = 0 <br>　　Output Packet No Route　　　 = 0 <br>　　Reassembly Required　　　　　= 0 <br>　　Reassembly SUCcessful　　　　　　 = 0 <br>　　Reassembly Failures　　　　　　　 = <br>　　Datagrams Successfully Fragmented = 0 <br>　　Datagrams Failing Fragmentation　 = 0 <br>　　Fragments Created　　　　　　　　 = 0 </p>
<p>　　ICMP Statistics <br>　　Received　Sent <br>　　Messages　　　　　　　　 693　　　 4 <br>　　Errors　　　　　　　　　 0　　　　 0 <br>　　Destination Unreachable　685　　　 0 <br>　　Time Exceeded　　　　　　0　　　　 0 <br>　　Parameter Problems　　　 0　　　　 0 <br>　　Source Quenches　　　　　0　　　　 0 </p>
<p>　　Redirects　　　　　　　　0　　　　 0 <br>　　Echoes　　　　　　　　　 4　　　　 0 <br>　　Echo Replies　　　　　　 0　　　　 4 <br>　　Timestamps　　　　　　　 0　　　　 0 <br>　　Timestamp Replies　　　　0　　　　 0 <br>　　Address Masks　　　　　　0　　　　 0 <br>　　Address Mask Replies　　 0　　　　 0 </p>
<p>　　TCP Statistics <br>　　Active Opens　　　　　　　　 = 597 <br>　　Passive Opens　　　　　　　　= 135 <br>　　Failed Connection Attempts　 = 107 <br>　　Reset Connections　　　　　　= 91 <br>　　Current Connections　　　　　= 8 <br>　　Segments Received　　　　　　= 106770 <br>　　Segments Sent　　　　　　　　= 118431 <br>　　Segments Retransmitted　　　 = 461 </p>
<p>　　UDP Statistics </p>
<p>　Datagrams Received　 = 4157136 <br>　　No Ports　　　　　　 = 351928 <br>　　Receive　Errors　　　 = 2 <br>　　Datagrams Sent　　　 = 13809 </p>
<p>　　2、Netstat的妙用 <br>　　经常上网的人一般都使用ICQ的，不知道我们有没有被一些讨厌的人骚扰，想投诉却又不知从和下手？其实，我们只要知道对方的IP，就可以向他所属的ISP投诉了。但怎样才能通过ICQ知道对方的IP呢？如果对方在设置ICQ时选择了不显示IP地址，那我们是无法在信息栏中看到的。其实，我们只需要通过Netstat就可以很方便的做到这一点：当他通过ICQ或其他的工具与我们相连时（例如我们给他发一条ICQ信息或他给我们发一条信息），我们立刻在DOS 命令提示符下输入netstat -n或netstat -a就可以看到对方上网时所用的IP或ISP域名了，甚至连所用Port都完全暴露了。 </p>
<p>　　三、IPConfig命令的使用技巧 </p>
<p>　　IPConfig实用程序和它的等价图形用户界面----Windows 95/98中的WinIPCfg可用于显示当前的TCP/IP配置的设置值。这些信息一般用来检验人工配置的TCP/IP设置是否正确。但是，如果我们的计算机和所在的局域网使用了动态主机配置协议（DHCP），这个程序所显示的信息也许更加实用。这时，IPConfig可以让我们了解自己的计算机是否成功的租用到一个IP地址，如果租用到则可以了解它目前分配到的是什么地址。了解计算机当前的IP地址、子网掩码和缺省网关实际上是进行测试和故障分析的必要项目。 </p>
<p>　　1、IPConfig最常用的选项 </p>
<p>　　&#183;ipconfig </p>
<p>当使用IPConfig时不带任何参数选项，那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。 </p>
<p>　　&#183;ipconfig /all </p>
<p>当使用all选项时，IPConfig能为DNS和WINS服务器显示它已配置且所要使用的附加信息（如IP地址等），并且显示内置于本地网卡中的物理地址（MAC）。如果IP地址是从DHCP服务器租用的，IPConfig将显示DHCP服务器的IP地址和租用地址预计失效的日期。 </p>
<p>　　&#183;ipconfig /release和ipconfig /renew </p>
<p>　　这是两个附加选项，只能在向DHCP服务器租用其IP地址的计算机上起作用。如果我们输入ipconfig /release，那么所有接口的租用IP地址便重新交付给DHCP服务器（归还IP地址）。如果我们输入ipconfig /renew，那么本地计算机便设法与DHCP服务器取得联系，并租用一个IP地址。请注意，大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址。下面的范例是 ipconfig /all 命令输出，该计算机配置成使用 DHCP 服务器动态配置 TCP/IP，并使用 WINS 和 DNS 服务器解析名称。 </p>
<p>　　windows 2000 IP Configuration <br>　　Node Type.. . . . . . . . : Hybrid <br>　　IP Routing Enabled.. . . . : No <br>　　WINS Proxy Enabled.. . . . : No <br>　　Ethernet adapter Local Area Connection: <br>　　Host Name.. . . . . . . . : corp1.microsoft.com <br>　　DNS Servers . . . . . . . : 10.1.0.200 <br>　　Description. . . . . . . : 3Com 3C90x Ethernet Adapter <br>　　Physical Address. . . . . : 00-60-08-3E-46-07 <br>　　DHCP Enabled.. . . . . . . : Yes <br>　　Autoconfiguration Enabled.: Yes </p>
<p>　IP Address. . . . . . . . . : 192.168.0.112 <br>　　Subnet Mask. . . . . . . . : 255.255.0.0 <br>　　Default Gateway. . . . . . : 192.168.0.1 <br>　　DHCP Server. . . . . . . . : 10.1.0.50 <br>　　Primary WINS Server. . . . : 10.1.0.101 <br>　　Secondary WINS Server. . . : 10.1.0.102 <br>　　Lease OBTained.. . . . . . : Wednesday, September 02, 1998 10:32:13 AM <br>　　Lease EXPires.. . . . . . : Friday, September 18, 1998 10:32:13 AM 　 </p>
<p><br>　　如果我们使用的是Windows 95/98，那么我们应该更习惯使用winipcfg而不是ipconfig，因为它是一个图形用户界面，而且所显示的信息与ipconfig相同，并且也提供发布和更新动态IP地址的选项。 </p>
<p>　　四、ARP（地址转换协议）的使用技巧 </p>
<p>　　ARP是一个重要的TCP/IP协议，并且用于确定对应IP地址的网卡物理地址。实用arp命令，我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外，使用arp命令，也可以用人工方式输入静态的网卡物理/IP地址对，我们可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作，有助于减少网络上的信息量。 </p>
<p>　　按照缺省设置，ARP高速缓存中的项目是动态的，每当发送一个指定地点的数据报且高速缓存中不存在当前项目时，ARP便会自动添加该项目。一旦高速缓存的项目被输入，它们就已经开始走向失效状态。例如，在Windows NT/2000网络中，如果输入项目后不进一步使用，物理/IP地址对就会在2至10分钟内失效。因此，如果ARP高速缓存中项目很少或根本没有时，请不要奇怪，通过另一台计算机或路由器的ping命令即可添加。所以，需要通过arp命令查看高速缓存中的内容时，请最好先ping 此台计算机（不能是本机发送ping命令）。 </p>
<p>　　ARP常用命令选项： </p>
<p>　　&#183;arp -a或arp Cg </p>
<p>　　用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的，多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项，而Windows用的是arp -a（-a可被视为all，即全部的意思），但它也可以接受比较传统的-g选项。 </p>
<p>　　&#183;arp -a IP </p>
<p>　　如果我们有多个网卡，那么使用arp -a加上接口的IP地址，就可以只显示与该接口相关的ARP缓存项目。 </p>
<p>　　&#183;arp -s IP 物理地址 </p>
<p>　　我们可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态，或者在出现错误时，人工配置的物理地址将自动更新该项目。 </p>
<p>　　&#183;arp -d IP </p>
<p>　　使用本命令能够人工删除一个静态项目。 </p>
<p>　　例如我们在命令提示符下，键入 Arp Ca；如果我们使用过 Ping 命令测试并验证从这台计算机到 IP 地址为 10.0.0.99 的主机的连通性，则 ARP 缓存显示以下项： </p>
<p>　　Interface:10.0.0.1 on interface 0x1 <br>　　Internet Address　　　Physical Address　　　Type <br>　　10.0.0.99　　　　　　 00-e0-98-00-7c-dc　　 dynamic </p>
<p>　　在此例中，缓存项指出位于 10.0.0.99 的远程主机解析成 00-e0-98-00-7c-dc 的媒体访问控制地址，它是在远程计算机的网卡硬件中分配的。媒体访问控制地址是计算机用于与网络上远程 TCP/IP 主机物理通讯的地址。至此我们可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与我们所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址。<br>五、Tracert、Route 与BTStat的使用技巧 </p>
<p>　　1、Tracert的使用技巧　　 </p>
<p>　　如果有网络连通性问题，可以使用 tracert 命令来检查到达的目标 IP 地址的路径并记录结果。tracert 命令显示用于将数据包从计算机传递到目标位置的一组 IP 路由器，以及每个跃点所需的时间。如果数据包不能传递到目标，tracert 命令将显示成功转发数据包的最后一个路由器。当数据报从我们的计算机经过多个网关传送到目的地时，Tracert命令可以用来跟踪数据报使用的路由（路径）。该实用程序跟踪的路径是源计算机到目的地的一条路径，不能保证或认为数据报总遵循这个路径。如果我们的配置使用DNS，那么我们常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令（如果我们指定的目标地址比较远），每个路由器我们大约需要给它15秒钟。 </p>
<p>　 Tracert的使用很简单，只需要在tracert后面跟一个IP地址或URL，Tracert会进行相应的域名转换的。 </p>
<p>　　tracert 最常见的用法： </p>
<p>　　tracert IP address [-d] 该命令返回到达 IP 地址所经过的路由器列表。通过使用 -d 选项，将更快地显示路由器路径，因为 tracert 不会尝试解析路径中路由器的名称。 </p>
<p>　　Tracert一般用来检测故障的位置，我们可以用tracert IP在哪个环节上出了问题，虽然还是没有确定是什么问题，但它已经告诉了我们问题所在的地方，我们也就可以很有把握的告诉别人----某某地方出了问题。 </p>
<p>　　2、Route 的使用技巧 </p>
<p>　　大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器，因此不存在使用哪一台路由器将数据报发表到远程计算机上去的问题，该路由器的IP地址可作为该网段上所有计算机的缺省网关来输入。但是，当网络上拥有两个或多个路由器时，我们就不一定想只依赖缺省网关了。实际上我们可能想让我们的某些远程IP地址通过某个特定的路由器来传递，而其他的远程IP则通过另一个路由器来传递。 </p>
<p>　　在这种情况下，我们需要相应的路由信息，这些信息储存在路由表中，每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。但在有些情况下，必须人工将项目添加到路由器和主机上的路由表中。Route就是用来显示、人工添加和修改路由表项目的。 </p>
<p>　　一般使用选项： </p>
<p>　　&#183;route print </p>
<p>　　本命令用于显示路由表中的当前项目，在单路由器网段上的输出；由于用IP地址配置了网卡，因此所有的这些项目都是自动添加的。 </p>
<p>　　&#183;route add </p>
<p>　　使用本命令，可以将信路由项目添加给路由表。例如，如果要设定一个到目的网络209.98.32.33的路由，其间要经过5个路由器网段，首先要经过本地网络上的一个路由器，器IP为202.96.123.5，子网掩码为255.255.255.224，那么我们应该输入以下命令： </p>
<p>　　route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5 </p>
<p>　　&#183;route change </p>
<p>　　我们可以使用本命令来修改数据的传输路由，不过，我们不能使用本命令来改变数据的目的地。下面这个例子可以将数据的路由改到另一个路由器，它采用一条包含3个网段的更直的路径： </p>
<p>　　route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3 <br>　　&#183;route delete </p>
<p>　　使用本命令可以从路由表中删除路由。例如：route delete 209.98.32.33 </p>
<p>　　3、NBTStat的使用技巧 </p>
<p>　　使用 nbtstat 命令释放和刷新 NetBIOS 名称。NBTStat（TCP/IP上的NetBIOS统计数据）实用程序用于提供关于关于NetBIOS的统计数据。运用NetBIOS，我们可以查看本地计算机或远程计算机上的NetBIOS名字表格。 </p>
<p>常用选项： <br>　　&#183;nbtstat Cn <br>　　显示寄存在本地的名字和服务程序。 <br>　　&#183;nbtstat Cc <br>　　本命令用于显示NetBIOS名字高速缓存的内容。NetBIOS名字高速缓存用于寸放与本计算机最近进行通信的其他计算机的NetBIOS名字和IP地址对。 <br>　　&#183;nbtstat Cr <br>　　本命令用于清除和重新加载NetBIOS名字高速缓存。 <br>　　&#183;nbtstat -a IP <br>　　通过IP显示另一台计算机的物理地址和名字列表，我们所显示的内容就像对方计算机自己运行nbtstat -n一样。 <br>　　&#183;nbtstat -s IP </p>
<p>　　显示实用其IP地址的另一台计算机的NetBIOS连接表。例如我们在命令提示符下，键入：nbtstat CRR 释放和刷新过程的进度以命令行输出的形式显示。该信息表明当前注册在该计算机的 WINS 中的所有本地 NetBIOS 名称是否已经使用 WINS 服务器释放和续订了注册。 </p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/45214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-06-09 08:38 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/45214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux操作系统文件系统基础知识详解</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/44046.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Thu, 22 May 2008 00:57:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/44046.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/44046.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/44046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/44046.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/44046.html</trackback:ping><description><![CDATA[<p><strong><font color=#0000ff>一 、Linux文件结构</font></strong> <br><font color=#0000ff>　　文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。</font><br><font color=#0000ff>　　目录提供了管理文件的一个方便而有效的途径。</font><br><font color=#0000ff>　　Linux使用标准的目录结构，在安装的时候，安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式，并指定了每个目录的作用和其中的文件类型。</font><br><font color=#0000ff>　　&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/根目录<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;┃<br>┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓<br>┃&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp;&nbsp;┃&nbsp; &nbsp;&nbsp;&nbsp;┃&nbsp; &nbsp;&nbsp;&nbsp;┃&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp;&nbsp;┃&nbsp; &nbsp;&nbsp;&nbsp;┃<br>bin&nbsp;&nbsp;home&nbsp; &nbsp; dev&nbsp; &nbsp;&nbsp;&nbsp;etc&nbsp; &nbsp;&nbsp;&nbsp;lib&nbsp; &nbsp;&nbsp;&nbsp;sbin&nbsp; &nbsp; tmp&nbsp; &nbsp;&nbsp; &nbsp;usr&nbsp; &nbsp; var<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ┃&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ┃<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;┏━┻━┓&nbsp; &nbsp;&nbsp;&nbsp;┏━━┳━━┳━━┳━┻━┳━━┓<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp; ┃&nbsp; &nbsp;┃&nbsp; &nbsp; ┃&nbsp; &nbsp; ┃&nbsp; &nbsp;&nbsp;&nbsp;┃&nbsp; &nbsp; ┃<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;rc.d&nbsp; &nbsp;cron.d X11R6&nbsp;&nbsp;src&nbsp; &nbsp;lib&nbsp; &nbsp;local&nbsp; &nbsp; man&nbsp;&nbsp;bin<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>┏━━━┳━━┳━┻━┳━━━┓&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>┃&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp; ┃&nbsp; &nbsp;&nbsp; &nbsp;┃&nbsp; &nbsp;&nbsp; &nbsp;┃ <br>init.d rc0.d&nbsp;&nbsp;rc1.d&nbsp;&nbsp;rc2.d &#8230;&#8230; linux bin lib src<br>　　Linux采用的是树型结构。最上层是根目录，其他的所有目录都是从根目录出发而生成的。微软的DOS和windows也是采用树型结构，但是在DOS和 windows中这样的树型结构的根是磁盘分区的盘符，有几个分区就有几个树型结构，他们之间的关系是并列的。但是在linux中，无论操作系统管理几个磁盘分区，这样的目录树只有一个。从结构上讲，各个磁盘分区上的树型目录不一定是并列的。</font><br><font color=#0000ff>　　如果这样讲不好理解的话，我来举个例子：</font><br><font color=#0000ff>　　</font><font color=#0000ff>有一块硬盘，分成了4个分区，分别是/；/boot；/usr和windows下的fat<br>　　对于/和/boot或者/和/usr，它们是从属关系；对于/boot和/usr，它们是并列关系。</font><br><font color=#0000ff>　　如果我把windows下的fat分区挂载到/mnt/winc下，（挂载？？哦，别急，呵呵，一会就讲，一会就讲。）那么对于/mnt/winc和/usr或/mnt/winc和/boot来说，它们是从属于目录树上没有任何关系的两个分支。<br>　　因为linux是一个多用户系统，制定一个固定的目录规划有助于对系统文件和不同的用户文件进行统一管理。但就是这一点让很多从windows转到linux的初学者感到头疼。下面列出了linux下一些主要目录的功用。<br>　　/bin 二进制可执行命令<br>　　/dev 设备特殊文件<br>　　/etc 系统管理和配置文件<br>　　/etc/rc.d 启动的配置文件和脚本<br>　　/home 用户主目录的基点，比如用户user的主目录就是/home/user，可以用~user表示<br></font><font color=#0000ff>　　/lib 标准程序设计库，又叫动态链接共享库，作用类似windows里的.dll文件<br>　　/sbin 系统管理命令，这里存放的是系统管理员使用的管理程序<br>　　/tmp 公用的临时文件存储点<br>　　/root 系统管理员的主目录（呵呵，特权阶级）<br>　　/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。<br>　　/lost+found 这个目录平时是空的，系统非正常关机而留下&#8220;无家可归&#8221;的文件（windows下叫什么.chk）就在这里<br>　　/proc 虚拟的目录，是系统内存的映射。可直接访问这个目录来获取系统信　　息。<br>　　/var 某些大文件的溢出区，比方说各种服务的日志文件<br>　　/usr 最庞大的目录，要用到的应用程序和文件几乎都在这个目录。其中包　　含：<br>　　/usr/X11R6 存放X window的目录<br>　　/usr/bin 众多的应用程序<br>　　/usr/sbin 超级用户的一些管理程序<br>　　/usr/doc linux文档<br>　　/usr/include linux下开发和编译应用程序所需要的头文件<br>　　/usr/lib 常用的动态链接库和软件包的配置文件<br>　　/usr/man 帮助文档<br>　　/usr/src 源代码，linux内核的源代码就放在/usr/src/linux里<br>　　/usr/local/bin 本地增加的命令<br>　　/usr/local/lib 本地增加的库<br>　　<strong>二 、linux文件系统</strong></font><br><font color=#0000ff><strong>　　</strong>文件系统指文件存在的物理空间，linux系统中每个分区都是一个文件系统，都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不开对文件的操作，因此必然要拥有并维护自己的文件系统。</font><br><font color=#0000ff>　　Llinux文件系统使用索引节点来记录文件信息，作用像windows的文件分配表。</font><br><font color=#0000ff>　　索引节点是一个结构，它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组，每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码，也就是该节点在数组中的索引号，称为索引节点号。<br>linux文件系统将文件索引节点号和文件名同时保存在目录中。所以，目录只是将文件的名称和它的索引节点号结合在一起的一张表，目录中每一对文件名称和索引节点号称为一个连接。</font><br><font color=#0000ff>　　对于一个文件来说有唯一的索引节点号与之对应，对于一个索引节点号，却可以有多个文件名与之对应。因此，在磁盘上的同一个文件可以通过不同的路径去访问它。</font><br><font color=#0000ff>　　可以用ln命令对一个已经存在的文件再建立一个新的连接，而不复制文件的内容。连接有软连接和硬连接之分，软连接又叫符号连接。它们各自的特点是：<br>　　硬连接：原文件名和连接文件名都指向相同的物理地址。<br>目录不能有硬连接；硬连接不能跨越文件系统（不能跨越不同的分区）<br>文件在磁盘中只有一个拷贝，节省硬盘空间；</font><br><font color=#0000ff>　　由于删除文件要在同一个索引节点属于唯一的连接时才能成功，因此可以防止不必要的误删除。<br>　　符号连接：用ln -s命令建立文件的符号连接符号连接是linux特殊文件的一种，作为一个文件，它的数据是它所连接的文件的路径名。类似windows下的快捷方式。</font><br><font color=#0000ff>　　可以删除原有的文件而保存连接文件，没有防止误删除功能。</font><br><font color=#0000ff>　　这一段的的内容过于抽象，又是节点又是数组的，我已经尽量通俗再通俗了，又不好加例子作演示。大家如果还是云里雾里的话，我也没有什么办法了，只有先记住，日后在实际应用中慢慢体会、理解了。这也是我学习的一个方法吧。</font> <br><strong><font color=#0000ff>三 、挂载文件系统</font></strong><br><font color=#0000ff><strong>　　</strong>由上一节知道，linux系统中每个分区都是一个文件系统，都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的&#8220;按一定方式&#8221;就是指的挂载。<br>将一个文件系统的顶层目录挂到另一个文件系统的子目录上，使它们成为一个整体，称为挂载。把该子目录称为挂载点。<br>举个例子吧：<br>　　根分区：<br>　　/根目录<br>┃<br>┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓<br>┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃<br>bin home dev etc lib sbin tmp usr var<br>┃<br>┏━┻━┓<br>┃ ┃<br>rc.d cron.d<br>┃<br>┏━━━┳━━━┳━┻━┳━━━━┓<br>┃ ┃ ┃ ┃ ┃<br>init.d rc0.d rc1.d rc2.d &#8230;&#8230;<br>　　/usr分区 ：<br>　　usr<br>┃<br>┏━━━━┳━━━╋━━━┳━━━┳━━━┓<br>┃ ┃ ┃ ┃ ┃ ┃<br>X11R6 src lib local man bin<br>┃ ┃<br>┃ ┏━━━╋━━━┓<br>┃ ┃ ┃ ┃<br>linux bin lib src<br>　　挂载之后就形成了文章开始时的那个图。像不像挂上去的？<br>　　注意：1、挂载点必须是一个目录。<br>　　2、一个分区挂载在一个已存在的目录上，这个目录可以不为空，但挂载后这个目录下以前的内容将不可用。<br>对于其他操作系统建立的文件系统的挂载也是这样。但是需要理解的是：光盘、软盘、其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的。光盘是ISO9660；软盘是fat16或ext2；windows NT是fat16、NTFS；windows98是fat16、fat32；windows2000和windowsXP是fat16、fat32、 NTFS。挂载前要了解linux是否支持所要挂载的文件系统格式。<br>　　挂载时使用mount命令：<br>格式：mount [-参数] [设备名称] [挂载点]<br>　　其中常用的参数有</font><br><font color=#0000ff>　　-t 指定设备的文件系统类型，常见的有：<br>　　minix linux最早使用的文件系统<br>　　ext2 linux目前常用的文件系统<br>　　msdos MS-DOS的fat，就是fat16<br>　　vfat windows98常用的fat32<br>　　nfs 网络文件系统<br>　　iso9660 CD-ROM光盘标准文件系统<br>　　ntfs windows NT 2000的文件系统<br>　　hpfs OS/2文件系统<br>　　auto 自动检测文件系统<br>　　-o 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的　　有<br>　　codepage=XXX 代码页<br>　　iocharset=XXX 字符集<br>　　ro 以只读方式挂载<br>　　rw 以读写方式挂载<br>　　nouser 使一般用户无法挂载<br>　　user 可以让一般用户挂载设备<br>　　提醒一下，mount命令没有建立挂载点的功能，因此你应该确保执行mount命令时，挂载点已经存在。（不懂？说白了点就是你要把文件系统挂载到哪，首先要先建上个目录。这样OK？）<br>　　例子：windows98装在hda1分区，同时计算机上还有软盘和光盘需要挂载。<br>　　# mk /mnt/winc<br>　　# mk /mnt/floppy<br>　　# mk /mnt/cdrom<br>　　# mount -t vfat /dev/hda1 /mnt/winc<br>　　# mount -t msdos /dev/fd0 /mnt/floppy<br>　　# mount -t iso9660 /dev/cdrom /mnt/cdrom<br>　　现在就可以进入/mnt/winc等目录读写这些文件系统了。<br>　　要保证最后两行的命令不出错，要确保软驱和光驱里有盘。（要是硬盘的磁盘片也可以经常随时更换的话，我想就不会犯这样的错误了 :-&gt; ）<br>如果你的windows98目录里有中文文件名，使用上面的命令挂载后，显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的代码页，简体中文中文代码是936；iocharset指定字符集，简体中文一般用cp936或 gb2312。<br>　　当挂载的文件系统linux不支持时，mount一定报错，如windows2000的ntfs文件系统。可以重新编译linux内核以获得对该文件系统的支持。关于重新编译linux内核，就不在这里说了。<br>　　<strong>四 、自动挂载</strong></font><br><font color=#0000ff><strong>　　</strong>每次开机访问windows分区都要运行mount命令显然太烦琐，为什么访问其他的linux分区不用使用mount命令呢？<br><font color=#0000ff>　　其实，每次开机时，linux自动将需要挂载的linux分区挂载上了。那么我们是不是可以设定让linux在启动的时候也挂载我们希望挂载的分区，如windows分区，以实现文件系统的自动挂载呢？</font><br><font color=#0000ff>　　这是完全可以的。在/etc目录下有个fstab文件，它里面列出了linux开机时自动挂载的文件系统的列表。我的/etc/fstab文件如下：<br>　　/dev/hda2 / ext3 defaults 1 1<br>　　/dev/hda1 /boot ext3 defaults 1 2<br>　　none /dev/pts devpts gid=5,mode=620 0 0<br>　　none /proc proc defaults 0 0<br>　　none /dev/shm tmpfs defaults 0 0<br>　　/dev/hda3 swap swap defaults 0 0<br>　　/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0<br>　　/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0<br>　　/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0<br>　　/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0<br>　　在/etc/fstab文件里，第一列是挂载的文件系统的设备名，第二列是挂载点，第三列是挂载的文件系统类型，第四列是挂载的选项，选项间用逗号分隔。第五六列不知道是什么意思，还望高手指点。<br>　　在最后两行是我手工添加的windows下的C；D盘，加了codepage=936和iocharset=cp936参数以支持中文文件名。参数defaults实际上包含了一组默认参数：<br>　　rw 以可读写模式挂载<br>　　suid 开启用户ID和群组ID设置位<br>　　dev 可解读文件系统上的字符或区块设备<br>　　exec 可执行二进制文件<br>　　auto 自动挂载<br>　　nouser 使一般用户无法挂载<br>　　async 以非同步方式执行文件系统的输入输出操作</font><br><font color=#0000ff>　　</font>大家可以看到在这个列表里，光驱和软驱是不自动挂载的，参数设置为noauto。（如果你非要设成自动挂载，你要确保每次开机时你的光驱和软驱里都要有盘，呵呵。)<br></font></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/44046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-05-22 08:57 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/44046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BIOS的警报!</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/43224.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 04 May 2008 02:58:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/43224.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/43224.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/43224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/43224.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/43224.html</trackback:ping><description><![CDATA[<p>BB是报警的声音<br>你可以根据报警声音长短,数目来判断问题出在什么地方<br>AWARD BIOS响铃声的一般含义是：<br>1短: 系统正常启动。这是我们每天都能听到的，也表明机器没有任何问题。 <br>2短: 常规错误，请进入CMOS Setup，重新设置不正确的选项。 <br>1长1短: RAM或主板出错。换一条内存试试，若还是不行，只好更换主板。 <br>1长2短: 显示器或显示卡错误。 <br>1长3短: 键盘控制器错误。检查主板。 <br>1长9短: 主板Flash RAM或EPROM错误，BIOS损坏。换块Flash RAM试试。 <br>不断地响（长声）: 内存条未插紧或损坏。重插内存条，若还是不行，只有更换一条内存。 <br>不停地响: 电源、显示器未和显示卡连接好。检查一下所有的插头。 <br>重复短响: 电源问题。 <br>无声音无显示: 电源问题。</p>
<p><br>AMI BIOS响铃声的一般含义是：<br>　　1. 一短声，内存刷新失败。内存损坏比较严重，恐怕非得更换内存不可。<br>　　2. 二短声，内存奇偶校验错误。可以进入CMOS设置，将内存Parity奇偶校验选项关掉，即设置为Disabled。不过一般来说，内存条有奇偶校验并且在CMOS设置中打开奇偶校验，这对微机系统的稳定性是有好处的。<br>　　3. 三短声，系统基本内存（第1个64Kb）检查失败。更换内存吧。<br>　　4. 四短声，系统时钟出错。维修或更换主板。<br>　　5. 五短声，CPU错误。但未必全是CPU本身的错，也可能是CPU插座或其它什么地方有问题，如果此CPU在其它主板上正常，则肯定错误在于主板。<br>　　6. 六短声，键盘控制器错误。如果是键盘没插上，那好办，插上就行；如果键盘连接正常但有错误提示，则不妨换一个好的键盘试试；否则就是键盘控制芯片或相关的部位有问题了。<br>　　7. 七短声，系统实模式错误，不能切换到保护模式。这也属于主板的错。<br>　　8. 八短声，显存读/写错误。显卡上的存贮芯片可能有损坏的。如果存贮片是可插拔的，只要找出坏片并更换就行，否则显卡需要维修或更换。<br>　　9. 九短声，ROM BIOS检验出错。换块同类型的好BIOS试试，如果证明BIOS有问题，你可以采用重写甚至热插拔的方法试图恢复。<br>　　10. 十短声，寄存器读/写错误。只能是维修或更换主板。<br>　　11. 十一短声，高速缓存错误。<br>　　12. 如果听不到beep响铃声也看不到屏幕显示，首先应该检查一下电源是否接好，在检修时往往容易疏忽，不接上主板电源就开机测试。其次得看看是不是少插了什么部件，如CPU、内存条等。再次，拔掉所有的有疑问的插卡，只留显示卡试试。最后找到主板上清除（clear）CMOS设置的跳线，清除CMOS设置，让BIOS回到出厂时状态。如果显示器或显示卡以及连线都没有问题，CPU和内存也没有问题，经过以上这些步骤后，微机在开机时还是没有显示或响铃声，那就只能是主板的问题了。</p>
<p><br>POENIX的BIOS报警声（以前的老板上有许多POENIX的，可现在已经被AWARD收购了） <br>1短 系统启动正常 <br>1短1短1短 系统加电初始化失败 <br>1短1短2短 主板错误 <br>1短1短3短 CMOS或电池失效 <br>1短1短4短 ROM BIOS校验错误 <br>1短2短1短 系统时钟错误 <br>1短2短2短 DMA初始化失败 <br>1短2短3短 DMA页寄存器错误 <br>1短3短1短 RAM刷新错误 <br>1短3短2短 基本内存错误 <br>1短3短3短 基本内存错误 <br>1短4短1短 基本内存地址线错误 <br>1短4短2短 基本内存校验错误 <br>1短4短3短 EISA时序器错误 <br>1短4短4短 EISA NMI口错误 <br>2短1短1短 前64K基本内存错误 <br>3短1短1短 DMA寄存器错误 <br>3短1短2短 主DMA寄存器错误 <br>3短1短3短 主中断处理寄存器错误 <br>3短1短4短 从中断处理寄存器错误 <br>3短2短4短 键盘控制器错误 <br>3短1短3短 主中断处理寄存器错误 <br>3短4短2短 显示错误 <br>3短4短3短 时钟错误 <br>4短2短2短 关机错误 <br>4短2短3短 A20门错误 <br>4短2短4短 保护模式中断错误 <br>4短3短1短 内存错误 <br>4短3短3短 时钟2错误 <br>4短3短4短 时钟错误 <br>4短4短1短 串行口错误 <br>4短4短2短 并行口错误 <br>4短4短3短 数字协处理器错误</p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/43224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-05-04 10:58 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/43224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BIOS警报</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/43223.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 04 May 2008 02:56:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/43223.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/43223.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/43223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/43223.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/43223.html</trackback:ping><description><![CDATA[<p>目前主板BIOS有三大类型，即AWARD AMI和PHOENIX三种。PHOENIX已经合并了AWARD，因此在台式机主板方面，其虽然标有AWARD-PHOENIX，其实际还是AWARD的BIOS的. Phoenix BIOS 多用于高档的586原装品牌机和笔记本电脑上，其画面简洁， 便于操作。</p>
<p>一、AwardBIOS</p>
<div forimg="1"><a href="http://hiphotos.baidu.com/517lnn/pic/item/b1f9356d45508dfc431694ae.jpg" target=_blank><img class=blogimg style="WIDTH: 178px; HEIGHT: 92px" height=112 src="http://hiphotos.baidu.com/517lnn/abpic/item/b1f9356d45508dfc431694ae.jpg" width=456 border=0 small="1"></a><br>1短：系统正常启动。恭喜，你的机器没有任何问题。 <br>2短：常规错误，请进入CMOSSetup，重新设置不正确的选项。 <br>1长1短：RAM或主板出错。换一条内存试试，若还是不行，只好更换主板。 <br>1长2短：显示器或显示卡错误。 <br>1长3短：键盘控制器错误。检查主板。 <br>1长9短：主板FlashRAM或EPROM错误，BIOS损坏。换块FlashRAM试试。 <br>不断地响（有间歇的长声）：内存条未插紧或损坏。重插内存条，若还是不行，只有更换一条内存。 <br>不停地响：电源、显示器未和显示卡连接好。检查一下所有的插头。 <br>重复短响：电源有问题。 <br>无声音无显示：电源有问题。 <br>二、AMIBIOS </div>
<div forimg="1"><a href="http://hiphotos.baidu.com/517lnn/pic/item/7845902268a133f4d7cae2aa.jpg" target=_blank><img class=blogimg src="http://hiphotos.baidu.com/517lnn/abpic/item/7845902268a133f4d7cae2aa.jpg" border=0 small="1"></a></div>
<div forimg="1">1短：内存刷新失败。更换内存条。 <br>2短：内存ECC校验错误。在CMOSSetup中将内存关于ECC校验的选项设为Disabled就可以解决，不过最根本的解决办法还是更换一条内存。 <br>3短：系统基本内存（第1个64KB）检查失败。换内存。 <br>4短：系统时钟出错。 <br>5短：中央处理器（CPU）错误。 <br>6短：键盘控制器错误。 <br>7短：系统实模式错误，不能切换到保护模式。 <br>8短：显示内存错误。显示内存有问题，更换显卡试试。 <br>9短：ROMBIOS检验错误。 <br>1长3短：内存错误。内存损坏，更换即可。 <br>1长8短：显示测试错误。显示器数据线没插好或显示卡没插牢。</div>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/43223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-05-04 10:56 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/43223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>禁止注册表编辑器regedit.exe运行</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/42754.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Fri, 25 Apr 2008 11:17:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/42754.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/42754.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/42754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/42754.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/42754.html</trackback:ping><description><![CDATA[<p><br>　　为了防止他人修改你的注册表，可以禁止注册表编辑器regedit.exe运行。方法如下：</p>
<p>　　1、打开注册表，找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System，如果在Policies下面没有 <br>System的话，请请在它下面新建一项（主键），将其命名为System；</p>
<p>　　2、然后在右边空白处新建一个双字节（DWORD）值，将其命名为DisableRegistryTools；</p>
<p>　　3、双击DisableRegistryTools，将其数值数据修改为1（原来为0）</p>
<p>　　通过上述之后，退出注册表编辑器，再次打开注册表时，则提示&#8220;注册表编辑已被管理员禁用&#8221;，以后别人、甚至是你都无法再用regedit.exe 。</p>
<p>　　如果要恢复并可以进行编辑的话，我们可以用下面的两种方法解锁注册表</p>
<p>方法一：</p>
<p>　　REGEDIT4 </p>
<p>　　[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]</p>
<p>　　"DisableRegistryTools"=dword:00000000 </p>
<p>　　将上述内容保存为一个*.reg文件，然后双击该文件即可导入注册表并解锁；如果方法一不起作用的话，可以采用方法二，解锁方法同上（注意行与行之间必须要有空行）。</p>
<p>方法二：</p>
<p>　　REGEDIT4</p>
<p>　　[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\System] </p>
<p>　　"DisableRegistryTools"=dword:00000000</p>
<p>&nbsp;</p>
<p>&nbsp;<br></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/42754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-04-25 19:17 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/42754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>注册表解锁方法 98</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/42752.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Fri, 25 Apr 2008 11:16:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/42752.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/42752.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/42752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/42752.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/42752.html</trackback:ping><description><![CDATA[<p>&gt;注册表解锁方法 </p>
<p>　　既然网页是通过修改注册表来破坏我们的系统，那么我们可以事先把注册表加锁：禁止修改注册表，这样就可以达到预防的目的。不过，自己要使用注册表编辑器regedit.exe该怎么办呢？因此我们还要在此前事先准备一把&#8220;钥匙&#8221;，以便打开这把&#8220;锁&#8221;！ </p>
<p>　　加锁方 <br>法如下： </p>
<p>　　（1）运行注册表编辑器regedit.exe； </p>
<p>　　（2）展开注册表到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ </p>
<p>　　Policies\System下，新建一个名为DisableRegistryTools的DWORD值，并将其值改为&#8220;1&#8221;，即可禁止使用注册表编辑器regedit.exe。 </p>
<p>　　解锁方法如下： </p>
<p>　　用记事本编辑一个任意名字的.reg文件，比如unlock.reg，内容如下： </p>
<p>　　REGEDIT4 </p>
<p>　　[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ </p>
<p>　　Policies\System] </p>
<p>　　"DisableRegistryTools"=dword:00000000 </p>
<p>　　存盘后你就有了一把解锁的钥匙了！如果要使用注册表编辑器，则双击unlock.reg即可。要注意的是，在&#8220;REGEDIT4&#8221;后面一定要空一行，并且&#8220;REGEDIT4&#8221;中的&#8220;4&#8221;和&#8220;T&#8221;之间一定不能有空格，否则将前功尽弃！] </p>
<p>　　2&gt;注册表超级解锁方法四则 </p>
<p>　　注册表被人修改了吗？注册表编辑器被禁用了吗？*.reg文件被禁止了吗？怎么办？去down一个注册表修改工具吗？NO.NO.NO,如果上网不要银子我到很愿意去^_^。 </p>
<p>　　其实，能修改注册表的文件多的是，并非只有*.reg(这是最常用，也是最没用的)。比如：*.inf(功能强大，但很少人用)，*.js(功能强大，但也很少人用)，*.vbs(功能强大，但同样很少人用),*.hta(很少人知道)&#8230;&#8230; </p>
<p>　　在此我就不用把那原始的*.reg方法写出来骗稿费了,下面是另外几种文件： </p>
<p>　　1、用*.inf解：把下面的这段(共6行)代码复制到记事本里，另存为jie.inf,然后右击它选择&#8220;安装(I)&#8221;，OK。 </p>
<p>　　[Version] </p>
<p>　　Signature="$CHICAGO$" </p>
<p>　　[DefaultInstall] </p>
<p>　　AddReg=My.Add.Reg; </p>
<p>　　[My.Add.Reg] </p>
<p>　　HKCU,"SOFTWARE\Microsoft\windows\currentversion\policies\system","disableregistrytools", 0x00010001,"0" </p>
<p>　　2、用*.js解：把下面的这段(共3行)代码复制到记事本里，另存为jie.js,然后双击运行它，OK。 </p>
<p>　　var WSHShell = WScript.CreateObject("WScript.Shell"); </p>
<p>　　WSHShell.RegWrite("HKCU\\SOFTWARE\\Microsoft\\windows\\currentversion\\policies\\system\\disableregistrytools", 0, "REG_DWORD"); </p>
<p>　　WSHShell.Popup("已经解除对注册表编辑器的禁用!"); </p>
<p>　　3、用*.vbs解：把下面的这段(共4行)代码复制到记事本里，另存为jie.vbs,然后双击运行它，OK。 </p>
<p>　　Dim WSHShell </p>
<p>　　Set WSHShell =CreateObject("WScript.Shell") </p>
<p>　　WSHShell.RegWrite "HKCU\SOFTWARE\Microsoft\windows\currentversion\policies\system\disableregistrytools", 0, "REG_DWORD" </p>
<p>　　WSHShell.Popup "已经解除对注册表编辑器的禁用!" </p>
<p>　　4、用*.hta解：把下面的这段(共5行)代码复制到记事本里，另存为jie.hta,然后双击运行它，OK。 　　 </p>
<p>　　注意，在输以上代码时，一定要注意&#8220;()&#8221;、&#8220;\&#8221;、&#8220;\\&#8221;、&#8220;;&#8221;的运用,并且，在输入有注册表项目的各行时最好不要换行。以上代码在windows98中测试通过。其它的我就不清楚了*^_^*。 <br></p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/42752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-04-25 19:16 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/42752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>regedit问题</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/42751.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Fri, 25 Apr 2008 11:04:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/42751.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/42751.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/42751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/42751.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/42751.html</trackback:ping><description><![CDATA[<p>第一章 入门指南 </p>
<p><br>■ 什么是注册表与注册表的作用 <br>■ 注册表编辑工具Regedit <br>■ 保存注册表信息的文件 <br>■ 注册表结构分析 <br>■ 备份恢复注册表的方法 <br>■ 注册表的保护 </p>
<p>&nbsp;</p>
<p>什么是注册表与注册表的作用 </p>
<p><br>　　注册表（Registry）是微软公司从Windows95系统开始(至目前最新Win2000系统依然使用的是它)，引入用</p>
<p>于代替原先Win32系统里.ini文件</p>
<p>，管理配置系统运行参数的一个全新的核心数据库。在这个数据库里整合集成了全部系统和应用程序的初始化</p>
<p>信息；其中包含了硬件设备的说</p>
<p>明、相互关联的应用程序与文档文件、窗口显示方式、网络连接参数、甚至有关系到计算机安全的网络享设置 </p>
<p>。它与老的win32系统里的ini文</p>
<p>件相比，具有方便管理，安全性较高、适于网络操作等特点。 </p>
<p>(以下分割符内的内容，摘自《新潮电子》98年第六期 作者：何宗琦 )</p>
<p>在形式上，注册表与INI文件有两个显著的特点： <br>　　1.注册表采用的是二进制形式登录数据，INI文件采用的则是简单的文本形式登录数据</p>
<p>　　2.注册表支持子关键字，各级子关键字都有自己的&#8220;键值&#8221;,INI文件中则支持节以及节中的参数。</p>
<p>在功能上，注册表与.INI文件相比，主要有以下三个特点：</p>
<p>　　1.注册表允许对硬件、某些操作系统参数、应用程序和设备驱动程序进行跟踪配置，这使得某些配置的改</p>
<p>变可以在不重新启动系统的情况</p>
<p>下立即生效。<br>　　2.注册表中登录的硬件部分数据可以用来支持Win95的即插即用特性。当Win95检测到机器上的各种设备时</p>
<p>，就把有关数据保存到注册表中</p>
<p>。通常是在安装时进行这种检测的，但Win95启动或原有配置改变时，也要进行检测。如安装一个新的硬件时</p>
<p>，Win95将检查注册表，以便确定</p>
<p>哪些资源已被占用，这样就可以避免新设备与原有设备之间的资源冲突。<br>　　3.通过注册表，管理人员和用户可以在网络上检查系统的配置和设置，使得远程管理得以实现。</p>
<p>预定义关键字 </p>
<p>　　注册表采用&#8220;关键字&#8221;及其&#8220;键值&#8221;来描述登录项及其数据。所有的关键字都是以&#8220;HKEY&#8221;作为前缀开头</p>
<p>。实际上，关键字是一个句柄。</p>
<p>这种约定使得应用程序开发人员可以在使用注册表API时把它用于程序之中。为此，Win95提供了若干API函数</p>
<p>，以便在开发Win95应用程序时添</p>
<p>加、修改、查询和删除注册表的登录项。关键字可以分为两类：一类是由系统定义的，通常称为&#8220;预定义关键</p>
<p>字&#8221;；另一类是由应用程序定义</p>
<p>的，安装的应用软件不同，其登录项也就不同。</p>
<p>　　由于注册表保存的信息中，含有许多系统启动时必要的参数，一旦出现问题将导致系统崩溃等严重后果，</p>
<p>此外由于注册表里含有许多的无</p>
<p>法通过操作系统本身进行操作的系统参数，因此了解并学会使用注册表，对每一个老鸟来讲都是一件不可缺少</p>
<p>。 </p>
<p>&nbsp;</p>
<p><br>回到页首</p>
<p>&nbsp;</p>
<p>注册表编辑工具Regedit </p>
<p><br>　　Regedit.exe是微软提供的一个用于编辑注册表的工具，它为所有windows系统自带，因此可以说是最通用</p>
<p>的注册表编辑工具。由于Windows</p>
<p>系统没有提供运行这个应用程序的菜单项，因此必须手动启动它，启动方法很简单：首先打开'开始菜单</p>
<p>（Start）'里的'运行（Run）' 菜单项</p>
<p>，如图一所示在对话框中输入regedit并点确定。这时将出现regedit的主界面，如图二所示： </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>　　Regedit这个工具可以对注册表进行添加修改主键、键值，备份注册表，局部导入导出注册表等操作。</p>
<p>(以下分割符内的内容，摘自《WIN98注册表编辑器的常用操作》一文 作者：天津 杨玉琦 ) </p>
<p>将注册表中的所有内容导出到一个文本文件中 </p>
<p>　　1.在注册表编辑器中单击&#8220;我的电脑&#8221;将导出所有注册表信息，或者单击 一个文件夹仅仅导出该文件夹</p>
<p>下内容的注册信息；<br>　　2.在&#8220;注册表&#8221;菜单上单击&#8220;导出注册表文件&#8221;；<br>　　3.单击&#8220;浏览&#8221;为导出的文件寻找一个存储位置，即文件夹，然后为之输入一个文件后保存。 这样导出</p>
<p>的注册表信息文件，可以在任何一</p>
<p>种文本编辑器中编辑。添加主键：</p>
<p>　　1.打开注册表列表，找到要添加主键的文件夹；<br>　　2.右击要加入主键的文件夹；<br>　　3.将鼠标指向&#8220;编辑&#8221;菜单下的&#8220;新建&#8221;，然后单击&#8220;主键&#8221;； <br>　　4.新的主键是以一个临时名字显示的，为新的主键输入一个名字，然后回车即可；如果添加新的主键后，</p>
<p>导致了计算机不能正确启动的情</p>
<p>况，可以恢复注册表信息。</p>
<p>　　 添加键值 </p>
<p>　　 1.打开注册表列表，选中要添加新键值的文件夹； <br>　　2.右击要添加新键值的文件夹； <br>　　3.将鼠标指向&#8220;新建&#8221;，然后单击需要添加键值的类型。这些类型包括&#8220;字符串值&#8221;、&#8220;二进制值&#8221;和&#8220;</p>
<p>DWORD&#8221;值；<br>　　4.新添加的键值以一个临时键值显示，为新添加的键值输入一个新的值，然后回车即可</p>
<p>　　REGEDIT的命令格式：</p>
<p>(以下分割符内的内容，摘自《如何修复WIN95的注册表》一文 作者：忻儿 ) </p>
<p>　　功能：引入注册表文件和导出注册表文件<br>　　REGEDIT[/L：system][/R:user]filename1<br>　　REGEDIT[/L:system][/R:user]/C filename2<br>　　REGEDIT[/L:system][/R:user]/E filename3 [regpath]</p>
<p>　　 其中：<br>　　/L:system 指定system.dat文件的存放位置。<br>　　/R:user 指定user.dat文件的存放位置。<br>　　filename1 指定引入到注册表数据库的文件名。<br>　　/C filename2 指定形成注册表数据库的文件名。<br>　　/E filename3 指定导出注册表文件的文件名。<br>　　regpath 指定导出注册表文件的开始关键字(缺省为全部关键字)</p>
<p>&nbsp;</p>
<p>回到页首</p>
<p>&nbsp;</p>
<p><br>保存注册表信息的文件 </p>
<p><br>　　在win95或win98系统中，注册表的组成从物理上来讲，实际上是由两个分别名为user.dat及system.dat的</p>
<p>具有隐藏只读属性的二进制系统</p>
<p>文件。在system.dat文件中保存有计算机上现有安装软件的信息，已发现的硬件以及其配置信息。User.dat则</p>
<p>了保存与用户相关的信息，包括</p>
<p>个性化设置（包含颜色，显示属性，鼠标，字体等等）访问性设置、国家区域设置等。 </p>
<p>　　而在最新的Win2000系统中情况则有所不同<br>(以下分割符内的内容，摘自《Windows2000注册表的备份与恢复》一文 作者：不详 ) </p>
<p>　　同Windows 9X一样，Windows 2000的注册表也分为两个部分，但包括多个文件，其中用户配置文件保存在</p>
<p>根目录&#8220;Documents and </p>
<p>Settings&#8221;下用户名的目录中，包括两个隐藏文件：NTUSER.DAT、NTUSER.INI及ntuser.dat.LOG日志文件。系</p>
<p>统配置文件位于Windows 2000系</p>
<p>统目录下的&#8220;SYSTEM32\CONFIG&#8221;中，包括DEFAULT、SOFTWARE、SYSTEM、AppEvent.Evt、SecEvent.Evt、</p>
<p>SysEvent.Evt等多个隐藏文件及其相</p>
<p>应的.LOG（日志）文件和.SAV文件。这些注册表文件在Windows 2000运行时无法使用其它工具打开，这一点与</p>
<p>Windows 9X下的system.dat及</p>
<p>user.dat不同。 </p>
<p><br>回到页首</p>
<p>&nbsp;</p>
<p>注册表结构分析 </p>
<p><br>　　呵呵，进入关键所在了。要想玩转注册表，不弄清楚注册表的结构可不行！下面是摘自各个大虾的对注册</p>
<p>表结构的精华论述。 </p>
<p>(以下分割符内的内容，摘自《新潮电子》98年第六期 作者：何宗琦 ) </p>
<p>HKEY_CLASSES_ROOT</p>
<p>　　该主关键字包含了有关的OLE信息，以便在系统工作过程中实现对各种文件和文档信息的访问。具体的内</p>
<p>容有已经注册的文件扩展名、文件</p>
<p>类型、文件图标等。 </p>
<p>HKEY_USERS</p>
<p>　　PC用户都可以在这里设置自己的关键字和子关键字。根据当前登录的用户不同，这个关键字又可以指向不</p>
<p>同的分支部分。这个分支部分将</p>
<p>映射到HKEY_CURRENT_USER关键字中。用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序</p>
<p>快捷键、显示字体、屏幕节电设置</p>
<p>等信息均可以在这个关键字中找到。本关键字中的大部分设置都可以通过控制面板来修改。如果用户登录到系</p>
<p>统中的信息，没有预定义的登录</p>
<p>项，则采用本关键字下面的&#8220;Default&#8221;子关键字（如图2） 。 </p>
<p>HKEY_CURRENT_USER </p>
<p>　　HKEY_CURRENT_USER是一个指向HKEY_USERS结构中某个分支的指针，它包含当前用户的登录信息。实际上</p>
<p>它就是HKEY_USERS＼Default下面</p>
<p>的一部分内容，如果在HKEY_USERS＼Default下面没有用户登录的其它内容，那么这两个主关键字包含的内容</p>
<p>是完全相同的。 </p>
<p>HKEY_LOCAL_MACHINE</p>
<p>　　该关键字包含了本地计算机（相对网络环境而言）的硬件和软件的全部信息。当系统的配置和设置发生变</p>
<p>化时，本关键字下面的登录项也</p>
<p>将随之改变。 </p>
<p>HKEY_CURRENT_CONFIG </p>
<p>　　这个关键字实际上也是指向HKEY_LOCAL _MACHINE＼Config结构中的某个分支的指针。</p>
<p>HKEY_CURRENT_CONFIG下面的子关键字及内容与</p>
<p>HKEY_LOCAL _MACHINE＼Config＼0001分支下面的子关键字及内容是完全相同的。本关键字包含的主要内容是</p>
<p>计算机的当前配置情况，如显示器</p>
<p>、打印机等可选外部设备及其设置信息等，而且这个配置信息均将根据当前连接的网络类型、硬件配置以及应</p>
<p>用软件的安装不同而有所变化。 </p>
<p>HKEY_DYN_DATA </p>
<p>　　顾名思义，本关键字包含了系统运行中的动态数据－即已发生的事件的有关信息。因此这个关键字的内容</p>
<p>不仅包含系统硬件的当前状态，</p>
<p>也包含了那些需要更新和检索的数据。这些数据都是动态变化的，它们总是最新的信息。WIN95每次启动时都</p>
<p>将重新建立这个关键字。为了提高</p>
<p>工作速度，HKEY_DYN_DATA实际上是存放在内存（RAM）中的，因此如果发生了对于注册表内容的修改，则不必</p>
<p>立即写入磁盘。这对于提高系统</p>
<p>的速度是十分必要的 </p>
<p>(以下分割符内的内容，摘自《Windows98注册表大揭秘》 作者：徐洪云 ) </p>
<p>1、HKEY_CLASSER_ROOT</p>
<p>　　该份之下至少包括100个关键字，这个分支下主要包括OLE数据，还包括文件扩展名和文件或应用程序的关</p>
<p>联，改变改分支中的数据结构和</p>
<p>内容将直接影响到系统软件的应用，此下的信息都被保存在system.dat文件中。 </p>
<p>2、HKEY_USER</p>
<p>　　在这个关键字下显示的信息都保存在User.dat文件中，这包含了与具体用户有关的desktop(桌面)配置、</p>
<p>网络连接以及start菜单。如果用</p>
<p>户的计算机被配置为使用户的配置文件，那么系统就会为每个用户都创建一个单独的User.dat文件。当一个用</p>
<p>户登录到计算机上时，Windows98</p>
<p>将读取那个用户的user.dat文件，并把该文件放入内存中的Registry中。</p>
<p>3、HKEY_CURRENT_USER</p>
<p>　　它是适用于当前用户的HKEY_ USER部分。如果只有一个用户，即确省用户，那么HKEY_USER\.Default和</p>
<p>HKEY_CURRENT_USER是相同信息的不</p>
<p>同的显示方式。</p>
<p>4、HKEY_LOCAL_MACHINE</p>
<p>　　这是针对计算机硬件以及安装的软件所设定的分支。如果计算机有多个硬件配置，那么每个配置的信息都</p>
<p>保存在这里。如果你察看一下该</p>
<p>分支下的SOFTWARE下面的信息，你会发现生产已安装软件的公司的名字都在这儿了，这个分支为关于每个公司</p>
<p>产品的与具体机器有关的信息存</p>
<p>放提供一个方便的地方。在这儿，你还可以发现应用程序名字、版本数、应用程序路径名以及以及硬件设置。</p>
<p>Microsoft也使用这个分支注册它</p>
<p>的软件。</p>
<p>5、HKEY_CURRENT_CONFIGURATION</p>
<p>　　在这里用户可以找到显示设置情况和使用的打印机。</p>
<p>6、HKEY_DYN_DATA</p>
<p>　　这里保存了Windows操作性能参数的数据，当Windows98加载后，该信息被保留在RAM中，同时被不断更新</p>
<p>。 </p>
<p>下面是各个子键的比较详细的介绍，看了上面还不满足的朋友请看，：）</p>
<p>(以下分割符内的内容，摘自《新潮电子》98年第六期 作者：何宗琦 )</p>
<p>HKEY_CLASSES_ROOT关键字</p>
<p>　　该关键字由多个子关键字组成，具体可分为两种:一种是已经注册的各类文件的扩展名，一种是各种文件</p>
<p>类型的有关信息。图1左窗格中的</p>
<p>子关键字就是各种已经注册的文件扩展名。<br>　　注册表内登录的文件扩展名中，一部分是系统约定的扩展名，另一部分是由应用程序自定义的扩展名。应</p>
<p>用程序只有把自定义的扩展名登</p>
<p>录到注册表中，系统才能识别和关联使用有关的文档，即只有经过注册的扩展名，系统才能自动关联。<br>　　当选中某个扩展名关键字时，在窗口的右窗格中将显示出有关的键值。例如在图1里选中&#8220;.avi &#8221;时，从</p>
<p>其键值可以看出，对该扩展名将</p>
<p>默认为动画文件（avifile）。在HKEY_CLASSES_ROOT 关键字中也包含了该类型文件的详细信息。仍然以</p>
<p>avifile文件为例，移动滚动条可以找</p>
<p>到子关键字&#8220;AVIFile&#8221;， 选中AVIFile可以看到其键值默认为&#8220;视频剪辑&#8221;，表示可以对.avi文件进行编辑</p>
<p>、播放等操作。单击AVIFile左边</p>
<p>的&#8220;＋&#8221;号，可以看到如图2所示的树型子关键字。<br>　　第一个子关键字是&#8220;CLSID&#8221;，即&#8220;分类标识&#8221;，在选中它时可以看到其默认的键值，如图3所示。系统可</p>
<p>用这个标识号来识别相同类型的</p>
<p>文件。<br>　　在 HKEY_CLASSES_ROOT主关键字下也有一个子关键字&#8220;CLSID&#8221;，其中包含了所有注册文件的类标识。因</p>
<p>此也可以通过类标识来查找相关文</p>
<p>件的各种信息。图4即是通过类标识查找AVIFILE文件的例子。可以看到在该标识字下面还有10个子关键字，它</p>
<p>们的键值也同样表示了AVIFILE文</p>
<p>件的有关信息。<br>　　下面我们把AVIFile的全部子关键字展开，来看看它包含了哪些有关的信息。展开全部子关键字后的窗口</p>
<p>如图5所示。<br>　　&#8220;Compressors&#8221;（压缩程序）下面的两个子关键字&#8220;auds&#8221;和&#8220;vids&#8221;分别给出了音频和视频数据压缩</p>
<p>程序的类标识，通过这些类标识可</p>
<p>以找到相应的处理程序。<br>　　&#8220;DefaultIcon&#8221;的键值为:&#8220;c:\pwin95\mplayer.exe,3&#8221;，表示文件的默认图标是mplayer.exe文件中提</p>
<p>供的第3号图标。<br>　　把&#8220;DefaultIcon&#8221;的键值改为:&#8220;c:\pwin95\mplayer.exe,4&#8221;，则采用图6中的第4号图标作为.avi文件</p>
<p>的图标。<br>　　&#8220;Extensions&#8221;的作用是通过文件扩展名识别数据文件。它的3个子关键字中，AVI表示AVI文件，AV和WAV</p>
<p>表示音频文件。<br>　　&#8220;Insertable&#8221;是插入表。<br>　　&#8220;protocol&#8221;包含了执行程序和编辑程序的路径和文件名。<br>　　打开&#8220;StdExecute&#8221;（标准执行程序）下面的子关键字&#8220;Server&#8221;，可看到键值为:&#8220;c:\pwin95</p>
<p>\mplayer.exe/avi&#8221;，即指定了执行程序</p>
<p>的路径和文件名。<br>　　打开&#8220;StdFileEditing&#8221;（标准文件编辑程序）下面的子关键字&#8220;Server&#8221;，可看到键值仍然为:</p>
<p>&#8220;c:\pwin95\mplayer.exe/avi&#8221;，即编</p>
<p>辑程序的路径和文件名。 <br>　　&#8220;verb&#8221;下面的3个子关键字0、1、2键值表示程序的工作状态，分别为&#8220;播放&#8221;、&#8220;编辑&#8221;和&#8220;打开&#8221;。</p>
<p>&#8220;RIFFHandlers&#8221;表示相关文件</p>
<p>句柄，包含了AVI和WAVE文件的类标识。<br>　　&#8220;shell&#8221;包含了执行&#8220;打开&#8221;和&#8220;播放&#8221;命令的程序路径和文件名。它们在各自的&#8220;command&#8221;中列出的</p>
<p>键值分别为&#8220;c:\pwin95</p>
<p>\mplayer.exe %1&#8221;和&#8220;c:\pwin95\ mplayer.exe/play/close %1&#8221;。<br>　　&#8220;shellex&#8221;中包含了&#8220;多媒体文件属性表&#8221;（AviPage）的文件句柄。<br>　　下面我们再结合修改快捷方式图标来说明如何使用注册表修改显示信息。<br>　　1．打开注册表编辑器，在 HKEY_CLASSES_ROOT 关键字下滚屏找到与快捷方式有关的子关键字&#8220;lnkfile</p>
<p>&#8221;并选中它。如图7所示。<br>　　2．键名&#8220;IsShortcut &#8221; 表示在桌面的快捷方式图标的左下角标注一个向上的小箭头，即 ，如果你不喜</p>
<p>欢这个小箭头，可以采用下面的</p>
<p>方法删除它:选中&#8220;IsShortcut&#8221;，然后打开&#8220;编辑&#8221;菜单，单击&#8220;删除&#8221;命令，将该项删除。关闭注册表并</p>
<p>重启Win95，你将发现快捷方式图</p>
<p>标上已经没有小箭头了 。<br>　　3．键名&#8220;NeverShowExt&#8221;表示在快捷方式图标下不显示文件扩展名。如果你希望显示扩展名，可以采用</p>
<p>下面的方法把该键名改为</p>
<p>&#8220;AlwayShowExt&#8221;:单击&#8220;NeverShowExt&#8221;，打开&#8220;编辑&#8221;菜单，单击&#8220;重命名&#8221;命令，输入新名。关闭注册</p>
<p>表并重启Win95。你会发现快捷方</p>
<p>式图标上已经加上扩展名了。</p>
<p>HKEY_CURRENT_USER关键字</p>
<p>　　从图8中可以看到，HKEY_CURRENT_USER下面有7个子关键字。其中除&#8220;RemoteAccess&#8221;外，其余6个都为系</p>
<p>统预定义。<br>AppEvents 登录已注册的各种应用事件<br>Control Panel 与控制面板设置有关的内容<br>InstallLocationsMRU 安装路径的有关信息<br>keyboard layout 键盘设置信息<br>Network 网络设置信息<br>RemoteAccess 此项是安装IE4.0建立的子关键字，包含该应用程序的有关信息 <br>Software 软件的有关信息<br>1．AppEvents子关键字<br>　　AppEvents子关键字包含了各种应用事件的列表。其下面又包含两个子关键字EventLabels（按字母顺序列</p>
<p>表）和Schemes（按事件分类列表</p>
<p>）。<br>　　从图9可以看出，Schemes是按照应用（Apps）和命名（Name）对事件进行分类的。在本系统中，Apps共分</p>
<p>为 Default（缺省）、Explorer</p>
<p>（资源管理器）、Mplayer（媒体播放器）和Norton Navigator（笔者安装的应用程序）；Name一般情况下均</p>
<p>采用Windows缺省值。在&#8220;控制面</p>
<p>板&#8221;中打开&#8220;声音&#8221;对话框，你可以看到这些事件的中文列表，其内容与按照应用（Apps）来对事件分类的列</p>
<p>表是一一对应的。<br>2．Control Panel子关键字<br>　　该子关键字所包含的内容与桌面、光标、键盘和鼠标等设置有关。改变它们的键值就将改变对应的工作环</p>
<p>境或参数。图10为Control Panel</p>
<p>的结构。<br>　　在图10中可以看到，Control Panel下面又有8个子关键字。根据系统配置和设置情况的不同，子关键字的</p>
<p>数目也会不同。例如有的系统中</p>
<p>没有&#8220;Mouse&#8221;关键字，并不是表示计算机中没有安装鼠标，而是指你从来没有对鼠标作过任何设置，系统完</p>
<p>全采用默认值。<br>虽然Control Panel中的键值与环境和特性有直接关系，但很多参数的改变并不要求用户通过修改注册表来实</p>
<p>现，而只需通过&#8220;控制面板&#8221;即可</p>
<p>进行修改。也有一些环境特性的改变只能通过修改注册表来实现，例如，改变菜单的弹出延迟时间。 <br>　　在Win95中，系统默认的菜单弹出延迟时间为400ms（随机器的性能不同，实际感觉到的延时可能有一定误</p>
<p>差）。如要改变其缺省值，可在</p>
<p>注册表编辑器的\ HKEY_CURRENT_USER\ Control Panel\desktop中增加一个键值名&#8220;MenuShowDelay&#8221;，通过</p>
<p>改变其键值来改变菜单显示延时（</p>
<p>如图10所示），键值的设定范围为0～1000（ms）。<br>Accessibility<br>　　这个子关键字包含了如图11所示的10个子关键字，多数子关键字在&#8220;控制面板&#8221;中都有对应的项。这些子</p>
<p>关键字的键值名中一般都有一个</p>
<p>&#8220;On&#8221;，当键值为0时，表示设置无效；键值为1时，表示设置生效。<br>Appearance<br>　　这个子关键字的键值中列出了可供选择的各种颜色和图案。可以在&#8220;控制面板&#8221;的&#8220;显示/外观&#8221;对话框</p>
<p>的&#8220;方案&#8221;下拉菜单中，看到这些</p>
<p>颜色和图案的中文名称。<br>cursors<br>　　这个子关键字的键值中列出了光标图案所在的文件路径。可以在&#8220;控制面板&#8221;的&#8220;鼠标/指针&#8221;对话框的</p>
<p>&#8220;方案&#8221;下拉菜单中，看到这些颜</p>
<p>色和图案的中文名称并进行设置。<br>desktop<br>　　这个子关键字的键值中列出了桌面和窗口中的各种部件，如:窗口边界、标题、图标、菜单、滚动条、消</p>
<p>息框的长度、宽度和字体等数据。</p>
<p>这些数据可以在&#8220;控制面板&#8221;的&#8220;显示/外观&#8221;对话框的&#8220;项目&#8221;下拉菜单中进行修改。下面再举一个只能通</p>
<p>过修改注册表来实现的例子。<br>　　系统缺省设置，窗口在最小化和还原（或最大化）之间切换时，有一个平滑的变化过程（动画效果）。要</p>
<p>取消这个动画效果，可以在</p>
<p>\HKEY_CURRENT_USER\ Control Panel\desktop\windowmetrics中增加一个键值名&#8220;MinAnimat&#8221;，其键值设置</p>
<p>为0即可。<br>　　注:为0为取消动画效果，非0则保留动画效果。<br>Input Method<br>　　这个子关键字的键值中登录了&#8220;输入方法&#8221;转换热键的有关数据。这些数据你可以在&#8220;控制面板&#8221;中打开</p>
<p>&#8220;输入法&#8221;对话框中的&#8220;热键&#8221;</p>
<p>标签进行修改。<br>International<br>　　这个子关键字的键值中登录了表示&#8220;上午&#8221;和&#8220;下午&#8221;的数据。这些数据可以在&#8220;控制面板&#8221;中打开&#8220;区</p>
<p>域设置&#8221;对话框中的&#8220;时间&#8221;标</p>
<p>签进行修改。<br>keyboard<br>　　这个子关键字的键值中登录了击键时的重复延时和重复速率。这些数据可以在&#8220;控制面板&#8221;中打开&#8220;键盘</p>
<p>&#8221;对话框中的&#8220;速度&#8221;标签进行</p>
<p>修改。<br>Mouse<br>　　这个子关键字的键值中登录了鼠标的双击速度和指针的移动速度。这些数据可以在&#8220;控制面板&#8221;中打开&#8220;</p>
<p>鼠标&#8221;对话框中的&#8220;按钮&#8221;和&#8220;</p>
<p>移动&#8221;标签进行修改。<br>　　上面以AppEvents和Control Panel这两个子关键字为例作了比较详细的讨论，限于篇幅，对其他子关键字</p>
<p>就不再详细介绍了。读者可以按</p>
<p>照前面所列出的子关键字的基本内容自己进行分析。 </p>
<p>HKEY_LOCAL_MACHINE关键字</p>
<p>　　图12中，HKEY_LOCAL_MACHINE下面的子关键字有8个。其中&#8220;.mp2&#8221;是安装播放软件&#8220;XING MPEG&#8221;后定义</p>
<p>的关键字，其余的是系统预定义</p>
<p>关键字。下面我们先对预定义关键字作简单介绍。<br>Config 包含了有关显示字体、分辨率、显示点距、颜色深度以及打印机型号等信息。<br>Enum 包含了系统当前配置的所有硬件设备的信息。<br>hardware 包含了系统使用的浮点处理器、串口等有关信息。<br>Network 包含了网络的有关信息。<br>Security 包含了安全设置的信息。 <br>SOFTWARE 包含了系统软件、当前安装的应用软件及用户的有关信息。 <br>System 包含了系统的全部软件和硬件信息。</p>
<p>对于HKEY_LOCAL_MACHINE关键字，有两点应该说明:<br>　　1．根据计算机中硬件配置和安装文件的不同，在HKEY_LOCAL_MACHINE中的信息将有很大的差别（在其他</p>
<p>的关键字中也会反应出这种差别）</p>
<p>。<br>　　2．HKEY_LOCAL_MACHINE下面各个子关键字中包含的信息有很多是重复的，这样做的目的，只是为了浏览</p>
<p>和编辑的方便。当然在注册表数据</p>
<p>库中是不会重复的。 </p>
<p>　　下面以笔者使用的5X86系统的Enum（枚举）子关键字为例，介绍它的结构和包含的信息。<br>由于该硬件系统配置简单，因此图13中列出Enum下面的子关键字只有8项。如果你的硬件系统采用的是新型的</p>
<p>主板并具有更多的配置，在Enum下</p>
<p>面将会出现更多的子项，如BIOS、声卡、解压卡等。如果你的硬盘分为多个逻辑盘，也会把这些逻辑盘作为子</p>
<p>项列出。下面就图13列出的几个</p>
<p>子项作进一步介绍。<br>　　1．ESDI子关键字 该关键字包含了硬盘的有关信息，图14为ESDI的结构。<br>由于本系统配置了两个硬盘，因此有两个子项&#8220;ROOT&amp;*PNP0600&amp;000000&#8221;和&#8220;ROOT&amp;*PNP0600&amp;000010&#8221;，分别</p>
<p>表示C、D两个硬盘。在右窗格中</p>
<p>显示出C盘的若干有关信息。子项关键字中的前缀&#8220;ROOT&#8221;表示它们是挂接在&#8220;根&#8221;下面的设备,你可以在ROOT</p>
<p>子关键字中找到它们。<br>　　如果你在系统中安装了虚拟光驱，也将在本子关键字中出现，而不会在SCSI子关键字中出现。因为虚拟光</p>
<p>驱实际上是硬盘的一个部分。<br>　　2．FLOP子关键字 登录了软盘驱动器的有关信息。<br>　　3．HTREE子关键字 本系统没有使用。<br>　　4．Moniter子关键字 包含了系统监视器的有关信息。<br>　　5.Network子关键字 包含了本系统安装网络的有关信息。<br>　　6.PCI子关键字 包含了PCI总线和PCI设备的有关信息。<br>　　7．ROOT子关键字 包含了系统根节点下面挂接的所有系统设备和外部设备的有关信息。例如，本系统中硬</p>
<p>盘C为子关键字</p>
<p>&#8220;ROOT&amp;*PNP0600&amp;000000&#8221;，就说明它是挂接在根节点下面的。在ROOT\PNP0600\0000中可以找到硬盘C的有关</p>
<p>信息，如图15所示。<br>　　8．SCSI子关键字 登录了各种SCSI设备的有 关信息。光驱的有关信息一般也登录在此</p>
<p>&nbsp;</p>
<p>回到页首</p>
<p>&nbsp;</p>
<p>备份恢复注册表的方法 </p>
<p><br>　　在学习如何修改注册表之前，我们先掌握备份和恢复注册表的方法吧 </p>
<p>(以下分割符内的内容，摘自《大众软件》 作者：陈国良 ) </p>
<p>直接进行备份及恢复 这是一种很原始的方法 </p>
<p>　　即直接将所需之System.dat及User.dat二个文件拷贝存放在硬盘某个指定目录下或直接拷到软盘上作为备</p>
<p>份，恢复时再将该备份替换覆盖</p>
<p>回原处即可，当然在备份及恢复时都需对这两个文件的只读及隐藏属性进行相应的修改操作。需注意的是：一</p>
<p>般情况下由于Windows 98的注册</p>
<p>表（包括System.dat和User.dat二个文件）往往有近2M甚至更大，用一般1.44M的3寸软盘来存储备份是放不下</p>
<p>的，所以必须利用压缩软件将其</p>
<p>压缩后才能放入1.44M软盘中。当需要恢复时，还需要用解压缩软件将其解开后再放入Windows目录下替换覆盖</p>
<p>原注册表数据。 用这种方法的好</p>
<p>处是如因注册表问题而导致系统瘫痪，开机后无法进行Windows系统时，可用应急启动盘进入Windows 98自带</p>
<p>之DOS7.1界面后，用常规的DOS操</p>
<p>作来将存在硬盘或通过解压缩软件将软盘中的备份覆盖回原处，恢复原备份时注册表的正常数据。 </p>
<p>　　利用注册表编辑器自带的导出及引入功能 </p>
<p>　　运行Regedit.exe打开Windows 98注册表后，利用&#8220;注册表&#8221;的&#8220;导出&#8221;及&#8220;引入&#8221;功能也可以用来备份</p>
<p>或恢复注册表信息。 具体方法为</p>
<p>：打开左上角&#8220;注册表&#8221;下拉菜单，点击&#8220;导出注册表文件&#8221;项，在出现的&#8220;导出注表文件&#8221;对话框中，键入</p>
<p>欲备份注册表的文件名及其保存</p>
<p>位置，再按&#8220;保存&#8221;按钮即可。需恢复注册表时，用同样的方法打开注册表编辑器，打开&#8220;注册表&#8221;下拉菜单</p>
<p>后点击&#8220;引入注册表文件&#8221;项，</p>
<p>在出现的对话框中选中所需恢复的备份文件，再按&#8220;打开&#8221;按钮即可将该注表备份恢复回Windows系统了。 </p>
<p>　　该方法主要适合于Windows系统还未瘫痪或能用启动时按F8键的方法，选择安全模式启动Windows 98系统</p>
<p>时恢复注表之用，如因注册表问题</p>
<p>而连Windows系统都进入不了时，则该法就无法应用了。此外因备份无法压缩而其大小又超过1.44M软盘容量，</p>
<p>所以应用该法也只能将备份保存</p>
<p>在硬盘里了。 </p>
<p>　　用Windows 98中新增的注表自动备份功能 </p>
<p>　　在Windows 98中，取消了Windows 95中每次开机时自动以System.da0和User.da0为名的二个文件来备份注</p>
<p>册表数据的功能，而新增加了一</p>
<p>个以.Cab（Cabinet）作后缀的压缩文件作为注册表备份的功能，具体使用如下： </p>
<p>　　备份：该备份过程是由Windows 98系统自动完成的。在用户当天第一次（注意当天二字）开机时，</p>
<p>Windows 98将会自动将系统中原有的注</p>
<p>表信息，包括System.dat和User.dat，甚至还包括了System.ini和Win.ini这四个文件都压缩成Cab形式的文件</p>
<p>，以rb00*.cab之名存放在</p>
<p>Windows\Sysbckup目录下（其中*为0—4的数字）。系统自动保存最近5开机天（注意不是5天）的注册表数据</p>
<p>，超过5开机天时则自动挤掉最早</p>
<p>日期的备份文件。 </p>
<p>　　恢复：可以用Windows自带的Extract.exe（在Windows\command目录下）解开该压缩文件恢复替换回原注</p>
<p>册表文件即可，也可用其他第三方</p>
<p>解压缩程序如Winzip7.0等解开所需之rb00*.cab备份压缩文件覆盖回去。 该方法增加了注册表恢复的灵活性</p>
<p>，可以对最近5开机天的注册表备</p>
<p>份根据需要选择进行恢复。 </p>
<p>　　Windows 98中新增的msconfig 在Windows 98中新增加了一个名为msconfig.exe的系统配置实用程序（该</p>
<p>程序在Windows\system目录下），</p>
<p>通过该程序可以很方便地进行Windows 98系统一些常用配置的编辑、备份、恢复及设置。该配置程序能很直观</p>
<p>地帮助用户使用、维护及改变有</p>
<p>关Windows 98启动时的一些装载配置设定，对一些初级用户来说应该比前面所叙之注册表的使用要更简单、直</p>
<p>观和容易一些。 </p>
<p>　　打开该系统配置实用程序后，我们可以看到有常规，config.sys、autoexec.bat、system.ini、win.ini</p>
<p>以及启动这六个选项，分别简述如</p>
<p>下： </p>
<p>　　第一个为常规选项。可以用来选择正常启动（缺少选择），也可以选择诊断启动——Windows启动时以交</p>
<p>互式方法装载驱动程序及软件，还</p>
<p>可以用选择性启动来由用户自行决定Windows 98启动时对一些驱动程序及软件项装载与否。 </p>
<p>　　后二种选择可以用来帮助用户在系统启动时完成一些特殊要求，也可以帮助用户用来诊断Windows 98启动</p>
<p>时的不正常故障。在这个选项里</p>
<p>还可以进行这些配置文件的备份及恢复工作，简单到只需按几下有关的按钮即可。 </p>
<p>　　从第二到第五个选项，提供了对config.sys、autoexec.bat、system.ini、win.ini四个基本配置文件的</p>
<p>编辑功能，基本上相当于原来在</p>
<p>Windows 3.X和Windows 95中用文本编辑器来对这四个文件进行的编辑工作，不过在这儿进行这几个文件的编</p>
<p>辑要比用文本编辑器来得更方便安</p>
<p>全一些。 最右边的第六个选项，可以帮助用户很简单地用勾选或清除启动项选择框的方法来自行决定某一启</p>
<p>动项的启用与否。 </p>
<p><br>回到页首</p>
<p>&nbsp;</p>
<p><br>注册表的保护 </p>
<p><br>　　(以下分割符内的内容，摘自《用Rguard注册表哨兵堵住Windows9x得后门》 作者：路远 ) </p>
<p>　　用Rguard注册表哨兵堵住Windows9x得后门 </p>
<p>　　 现在，网上治安越来越不好，一不小心就会踏中地雷。一些开后门的软件日益增多，这些开后门软件利</p>
<p>用了Windows9x的漏洞，在你的系</p>
<p>统中为别人留一扇后门，如果你没有上网，不会感到这有什么；如果你已经上网，就会被别有用心的人利用，</p>
<p>你的计算机就成了他人的靶子，</p>
<p>随意受人摆布，不仅物质上受损失，精神上也受打击，因此，我们应该对这类开后门的软件有所防范，提高警</p>
<p>惕。 </p>
<p>　　这类开后门的程序统称为特洛伊木马（Trojan horses），虽然功能一样，但是名称可能多种多样，如</p>
<p>Back orifice等。为了达到控制你的</p>
<p>计算机的目的，它们都要在Windows9x的注册表中或者启动文件中作一番手脚，以便在Windows启动时不知不觉</p>
<p>地先运行它。因此，就要经常地</p>
<p>监测Windows的各种启动文件，看看是不是有我们不熟悉的可执行文件，如果感到可疑的话，就要毫不留情的</p>
<p>删除掉，特别是你不熟悉的人通过</p>
<p>电子函件Email寄给你的一些软件，运行后又看不出有什么功能的软件更要小心。 </p>
<p>　　特洛伊木马程序运行后，根据程序的不同，修改的启动文件也不同，它们修改的启动文件有：</p>
<p>autoexec.bat、config.sys、wininit.ini、</p>
<p>dosstart.bat、system.dat、user.dat、winstart.bat和VXD驱动文件等。如果我们能够经常监测这些启动文</p>
<p>件的话就能够发现可疑程序，但是</p>
<p>经常对这些文件监测是相当麻烦的，特别是注册表文件，如果不是高手的话，查找哪些键值和字串发生了改变</p>
<p>是不可能的。虽然用Regsnap能够</p>
<p>监测到注册表的改变，但是如果用来监测这类特洛伊木马程序还是显得力不从心，因此我们就要寻找能够专门</p>
<p>针对特洛伊木马程序的特点，即</p>
<p>对Windows9x系统文件中进行修改的文件监测的程序。经过本人的搜寻，发现The Registry Run Guard v.2.6</p>
<p>（以下简称Rguard）专门监测所有</p>
<p>的能够用&#8220;Load&#8221;、&#8220;Runonce&#8221;和&#8220;Run&#8221;等命令和其他方式装入文件的启动文件。这些装入系统的文件，不</p>
<p>但包括执行文件，也包括VxD文件</p>
<p>，对付这类程序是手到擒来，它们的任何蛛丝马迹在Rguard的监视下都一览无余。 </p>
<p>　　Rguard是乌克兰的ANNA Ltd公司出品的一个软件，<a href="http://annaltd.webjump.com/rguard26.html">http://annaltd.webjump.com/rguard26.html</a> ，下载</p>
<p>的rguard26.zip只有220K，解压缩</p>
<p>后就可以安装到系统中了。Rguard是一个共享软件，如果没有注册，只能当DEMO使用，功能不减，但是只能使</p>
<p>用15天。 </p>
<p>　　Rguard运行后界面如图1所示，在图中我们可以看到，在&#8220;Main Option"选项中，可运行时的主界面已选</p>
<p>择RGuard自动检查的文件，如注册</p>
<p>表文件Registry,配置文件Win.ini，批处理文件有：Autoexec.bat、Config.sys、Dosstart.bat、</p>
<p>Winstart.bat，菜单中的&#8220;启动&#8221;中的文件</p>
<p>。另外，我们也可以在&#8220;Advanced Options"高级选项中配置&#8220;LOG Format&#8221;记录文件的格式，如图2。 </p>
<p>　　如果你选择了&#8220;Advanced Option "中的&#8220;View last record from LOG file after checking" 后，</p>
<p>RGyard在Windows启动后将显示一个对</p>
<p>话框，列出从上次监测到本次开机后的注册表的修改和变化情况。其它选项为： </p>
<p>　　（1）Add BEGIN/END marks </p>
<p>　　如果选择了该项，就要在LOG记录文件中增加下列字串： <br>　　－=BEGIN OF CHECKING|=－ <br>　　－=END OF CHECKING|=－ </p>
<p>　　（2）Add date to BEGIN/END marks </p>
<p>　　如果选择了该项，就要在LOG记录文件中增加记录开始检查和结束检查的日期。 </p>
<p>　　（3）Add time to BEGIN/END marks </p>
<p>　　如果选择了该项，就要在LOG记录文件中增加记录开始检查和结束检查的时间。 <br>　　选择完成后，就可以退出RGuard，这时你就可以放心地使用软件了。如果你新安装的软件需要重新启动计</p>
<p>算机，计算机重新启动后，</p>
<p>RGuard首先出现图3，在图3中你就可以发现你安装的软件对系统做了那些修改，点击&#8220;View Changes&#8221;，出现</p>
<p>图4。 </p>
<p>　　Rguard以不同的颜色表示各个键值或者键名，其中：红色的FREE表示这个文件夹没有包含数据，如Run </p>
<p>Once等；红色的箭头表示新增加的</p>
<p>键值；绿色的箭头表示该键值没有改变，蓝色的箭头表示这个键值已经删除。因此可以根据不同颜色的箭头了</p>
<p>解软件对系统所作的改变。如果</p>
<p>你认为一个软件是危险的软件，就可以在RGuard列出软件对系统的修改表时，选中该项，用&#8220;Delete Item&#8221;</p>
<p>命令把它删除。如果删除错误的话</p>
<p>，也可以利用&#8220;Undo"命令恢复已经删除的键值。</p>
<p>　　Rguard检查的注册表中的项目为： </p>
<p>　　1. HKEY_USER\default\software\microsoft\windows\currentVersion\RUN项下的各个键值和</p>
<p>Runonce,Runservice和RunservicesOnce文件</p>
<p>夹中的各个项，如果该项下是空的，就用红色的FREE表示； </p>
<p>　　2. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run项下的各个键名，这里列出</p>
<p>的是Windows启动后就要运行的执</p>
<p>行文件，因此，如果看到这些执行文件有可疑的地方，就要（1）把该键名删除，（2）把该键名列出的执行文</p>
<p>件删除； </p>
<p>　　3.HKEY_LOCAL_MACHINE\SYSTM\CURRENTCONTROSET\SERVICE\VXD项下的各个VXD文件是否改变，这里可以防</p>
<p>止特洛伊木马程序的VXD改头换面</p>
<p>出现。 </p>
<p>　　经过以上的检查，如果没有发现可疑的地方，就可以确定你的系统是安全的，可以放心地使用计算机，因</p>
<p>此利用Rguard注册表哨兵，为你</p>
<p>的计算机站好岗，堵住系统的后门，确保计算机的安全。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br>注册表修改技巧----网络控制</p>
<p>&nbsp;</p>
<p>过滤IP(适用于WIN2000) </p>
<p>在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters下<br>在右边的窗口中修改双字节&#8220;EnableSecurityFilters&#8221;的值为&#8220;1&#8221;。 </p>
<p><br>禁止显示IE的地址栏 </p>
<p>在HKEY_CLASSES_ROOT\CLSID\{01E04581-4EEE-11d0-BFE9-00AA005B4383}\InProcServer32下<br>在右边的窗口中修改字符串&#8220;默认&#8221;的值为&#8220;rem C:\WINDOWS\SYSTEM\BROWSEUI.DLL&#8221;。 </p>
<p><br>允许DHCP(winnt适用) </p>
<p>在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{Adapter}\Parameters\Tcpip下<br>在右边的窗口中新建一个DWORD值&#8220;EnableDHCP&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止更改IE的辅助功能设置 </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;Accessibility&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止使用&#8220;重置WEB设置&#8221; </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;Connection Settings&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止更改IE的连接设置 </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;Connection Settings&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>使打开IE时候，窗口最大化 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\ 下<br>在右边的窗口中删除Window_Placement，并且<br>在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\Old WorkAreas 下<br>在右边的窗口中删除OldWorkAreaRects 。 </p>
<p><br>禁止更改IE的语言设置 </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;Languages&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>清理IE网址列表 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs<br>在右边的窗口中删除想要删除的网址。 </p>
<p><br>禁止使用代理服务器 </p>
<p>代理服务器的用途很大，比如可以使原来只能国内站点的电脑，在使用代理服务器后，能访问国外站点，但代</p>
<p>理服务器的使用也会带来不利的</p>
<p>地方，因此，我们可以通过注册表来禁止使用代理服务器,<br>在HKEY_LOCAL_MACHINE\Config\0001\Software\Microsoft\windows\CurrentVersion\Internet Settings下<br>在右边的窗口中新建二进制值&#8220;ProxyEnable&#8221;的键值为"00 00 00 00"。 </p>
<p><br>在IE中禁止显示工具栏 </p>
<p>在 HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Main 下<br>在右边的窗口中修改字符串&#8220;Show_URLToolBar&#8221;的键值为"no"。 </p>
<p><br>在IE中禁止显示状态栏 </p>
<p>在 HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Main 下<br>在右边的窗口中修改字符串&#8220;Show_StatusBar&#8221;的键值为"no"。 </p>
<p><br>更改"应用程序"的文件夹的路径 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下，</p>
<p>在右边的窗口中修改字符串</p>
<p>&#8220;Recent&#8221;的键值为新的文件夹路径，如:C:\cpu ,注意：cpu这个文件夹必须是存在的，否则新建一个文件夹</p>
<p>。 </p>
<p><br>更改"应用程序数据"的文件夹路径 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下，</p>
<p>在右边的窗口中修改字符串</p>
<p>&#8220;AppData&#8221;的键值为新的文件夹路径。 </p>
<p><br>为同一部电脑设置2个IP地址 </p>
<p>在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans下<br>点击0000、0001，0002.....留意右边的窗口，当你发现右边窗口中的字符串"DriverDesc"的值<br>为"TCP/IP",修改同一窗口中的字符串"IPAddress"和"IPMask",把IPAddress设为IP地址<br>如"198.0.1.9,198.0.1.7",把"IPMask"设为对应的掩码,如"255.255.255.0,255.255.255.0" </p>
<p><br>更改Internet Explorer的标题 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下<br>在右边的窗口中新建字符串值&#8220;Window Title&#8221;为新标题的名字。 </p>
<p><br>更改outlook express的标题 </p>
<p>在HKEY_CURRENT_USER\Identities\{44453E40-8AFB-11D4-9E02-B0A2A20F384F}\Software\Microsoft\Outlook </p>
<p>Express\5.0下，在右边的窗口</p>
<p>中新建字符串值&#8220;WindowTitle&#8221;为新的标题名字。{}里的内容不一定相同。 </p>
<p><br>!!!!!!!加快上网速度 </p>
<p>以下有几项方法可以改变上网速度：<br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP<br>在右边的窗口中把&#8220;DefaultRcvWindow&#8221;的值改为&#8220;6400&#8221;，把&#8220;DefaultTTL&#8221;改为&#8220;128&#8221;。<br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans<br>在右边窗口中创建字符串值&#8220;MaxMTU&#8221;,&#8220;MaxMSS&#8221;，并设&#8220;MaxMTU&#8221;为&#8220;576&#8221;，设&#8220;MaxMSS&#8221;<br>为&#8220;536&#8221;。 </p>
<p><br>禁止使用网上邻居 </p>
<p>在 HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边窗口中创建DWORD值&#8220;NoNetHood&#8221;，并设为&#8220;1&#8221;。 </p>
<p><br>显示&#8220;频道栏&#8221; </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下<br>在右边的窗口中修改字符串"Show_ChannelBand"为"yes"。 </p>
<p><br>禁止更改ＩＥ默认的检查(winnt适用) </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;ProgramsTab&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>局域网自动断开的时间(winnt适用) </p>
<p>在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters下<br>在右边的窗口中新建一个DWORD值&#8220;Autodisconnect&#8221;，并设值为你想要设置的分钟数。 </p>
<p><br>禁止IE显示&#8220;工具&#8221;中&#8220;INTERNET选项&#8221; </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个二进制值&#8220;NoFolderOptions&#8221;，并设值为&#8220;01 00 00 00&#8221;。 </p>
<p><br>改变&#8220;超级链接&#8221;处点击前后的颜色 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Settings下<br>在右边的窗口中修改&#8220;Anchor Color&#8221;和&#8220;Anchor Color Visited&#8221;的值即可修改<br>修改点击前后的颜色。 </p>
<p><br>清理访问&#8220;网络邻居&#8221;后留下的字句信息 </p>
<p>在HEKY_CURRENT_USER/Network/Recent下<br>删除下面的主键。 </p>
<p><br>改变和增加IE自动搜索的顺序 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\UrlTemplate下<br>在右边窗口中，我们可以看到有几个字符串，IE按照1,2,3,4....的顺序进行自动搜索，调整1，2，3，4...字</p>
<p>符串的键值互相交换，即可调整</p>
<p>自动搜索的顺序，亦可新建字符串,增加自动搜索的内容。 </p>
<p><br>在&#8220;开始&#8221;菜单中增加&#8220;网上邻居&#8221; </p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\NetworkNeighborhood<br>下新建主键&#8220;NameSpace&#8221;，然后在<br>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\下新</p>
<p>建主键&#8220;网上邻居&#8221;。 </p>
<p><br>禁止在"控制面板"中显示"网络"属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建DWORD值&#8220;NoNetSetup",并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;网络&#8221;中显示&#8220;标识&#8221;属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Network下<br>在右边的窗口中新建DWORD值&#8220;NoNetSetupIDPage&#8221;,并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;网络&#8221;中显示&#8220;整个网络&#8221;属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Network下<br>在右边的窗口中新建DWORD值&#8220;NoEntireNetwork&#8221;,并设其值为&#8220;1&#8221;。 </p>
<p><br>更改IE的缓冲的路径 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下更</p>
<p>改&#8220;Cache&#8221;的路径即可。 </p>
<p><br>改变下载的路径 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer下<br>在右边的窗口中新建DWORD值&#8220;Download Directory&#8221;,并设其值为你想要的下载路径,如C:\My Documents。 </p>
<p><br>禁止查找用户 </p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\FindExtensions\<br>Static\WabFind下，删除主键&#8220;WabFind&#8221;。 </p>
<p><br>改变收藏夹、Cookies、启动、历史记录的路径 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下找</p>
<p>到字符串值&#8220;Favorites&#8221;,并设其</p>
<p>值为你想要的下载路径,如C:\WINDOWS\Favorite。<br>在此窗口中可更改桌面的路径、Cookies的路径、启动的路径、历史记录的路径。 </p>
<p><br>创建"拨号网络"在开始菜单中 </p>
<p>打开任务栏和开始菜单，选择&#8220;高级&#8221;，在右边的窗口中新建文件夹<br>&#8220;拨号网络.{992CFFA0-F557-101A-88EC-00DD010CCC48}&#8221;。 </p>
<p><br>网址URL的调整 </p>
<p>我们在使用IE上网时输入的网址，会在注册表里面留下一些记录，记录着你输入过那些网址，当你下次再输入</p>
<p>该网址时，只需输入几个字母，</p>
<p>IE就会自动的输入完整的网址，大大方便了我们，在以下的方法中，<br>我们可以手动的在WINDOWS的注册表中增加一些网址URL，使上网时更方便。<br>依次展开在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs下<br>在右边的窗口中按url1、url2、url3......顺序排列着一些URL,修改，增加，删除这些url的值<br>即可达到修改，增加，删除URL的功能。 </p>
<p><br>取消登录时选择用户 </p>
<p>已经删除了所有用户，但登录时还要选择用户，我们要取消登录时选择用户，就要<br>在HKEY_LOCAL_MACHINE\Network\Logon下， 在右边的窗口中,修改"UserProfiles"值为"0"。<br>重新启动WINDOWS，使这条技巧生效。 </p>
<p><br>隐藏上机用户登录的名字 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon下<br>在右边的窗口中新建字符串"DontDisplayLastUserName",设值为"1"。 </p>
<p><br>禁止使用IE&#8220;internet选项&#8221;中的高级项(winnt适用) </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值&#8220;AdvancedTab&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>注册表修改技巧----图标控制</p>
<p>&nbsp;</p>
<p>更改网络工作组图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons下<br>在右边的窗口中新建字符串值"2",并设其值为新图标的路径。 </p>
<p><br>更改WEB文件夹图标 </p>
<p>HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{BDEADF00-C265-11D0-BCED-00A0C90AB50F}\DefaultIcon,在</p>
<p>右边的窗口中修改"默认"为新图标</p>
<p>的路径。 </p>
<p><br>更改DOS程序的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"2",并设其值为新图标的路径。 </p>
<p><br>更改5寸软盘的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"5",并设其值为新图标的路径。 </p>
<p><br>更改可移动驱动器的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"5",并设其值为新图标的路径。 </p>
<p><br>更改"注销"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"44",并设其值为新图标的路径。 </p>
<p><br>更改"运行"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"24",并设其值为新图标的路径。 </p>
<p><br>更改"关闭系统"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"27",并设其值为新图标的路径。 </p>
<p><br>更改"收藏夹"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"43",并设其值为新图标的路径。 </p>
<p><br>更改"开始"菜单中"程序"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"19",并设其值为新图标的路径。 </p>
<p><br>更改pbl文件的图标 </p>
<p>在HKEY_CLASSES_ROOT下查找键值"pblfile",<br>并在这个主键的\DefaultIcon,修改右边窗口中的&#8220;默认&#8221;值为新图标的路径. </p>
<p><br>更改Internet Explorer的图标 </p>
<p>HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{871C5380-42A0-1069-A2EA-08002B30309D}\DefaultIcon，<br>在右边的窗口中修改字符串值&#8220;(默认)&#8221;为新图标的路径，如：&#8220;C:\w.ico,0&#8221;。 </p>
<p><br>更改"打开的文件夹"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>下，在右边的窗口中新建字符串值"4",并设其值为新图标的路径。 </p>
<p><br>更改IE的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{871C5380-42A0-1069-A2EA-08002B30309D}\DefaultIcon下</p>
<p>，在右边的窗口中修改字符串值</p>
<p>&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>更改"我的公文包"的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{85BBD920-42A0-1069-A2E4-08002B30309D}\DefaultIcon下</p>
<p>，在右边的窗口中修改字符串值</p>
<p>&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>更改&#8220;计划任务&#8221;的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}\DefaultIcon下</p>
<p>，在右边的窗口中修改字符串值</p>
<p>&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>更改&#8220;收件箱&#8221;的图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{00020D75-0000-0000-C000-000000000046}\DefaultIcon下</p>
<p>，在右边的窗口中修改字符串值</p>
<p>&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>给&#8220;控制面板&#8221;改名、改图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{21EC2020-3AEA-1069-A2DD-08002B30309D}下<br>在右边的窗口中修改字符串值&#8220;(默认)&#8221;为新的名称<br>改图标:在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{21EC2020-3AEA-1069-A2DD-08002B30309D}</p>
<p>\DefaultIcon下在右边的窗口中修改字符</p>
<p>串值&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>更改&#8220;打印机&#8221;图标 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{2227A280-3AEA-1069-A2DE-08002B30309D}\DefaultIcon下</p>
<p>，在右边的窗口中修改字符串值</p>
<p>&#8220;(默认)&#8221;为新图标的路径。 </p>
<p><br>给&#8220;回收站&#8221;改名、改图标 </p>
<p>HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}<br>在右边的窗口中找到字符串值：&#8220;默认&#8221;，把&#8220;回收站&#8221;改为其它名称。<br>HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon<br>在右边的窗口中修改图标的路径。 </p>
<p><br>给&#8220;我的电脑&#8221;改名、改图标 </p>
<p>HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}<br>在右边的窗口中找到字符串值：&#8220;默认&#8221;，把&#8220;我的电脑&#8221;改为其它名称。<br>HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon<br>在右边的窗口中修改图标的路径。 </p>
<p><br>给&#8220;我的文档&#8221;改名、改图标 </p>
<p>在右边的窗口中找到字符串值：&#8220;默认&#8221;，把&#8220;我的文档&#8221;改为其它名称。<br>HKEY_CLASSES_ROOT\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\DefaultIcon<br>在右边的窗口中修改图标的路径 </p>
<p><br>注册表修改技巧----目录控制</p>
<p>&nbsp;</p>
<p>改变&#8220;开始菜单&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"Start Menu"</p>
<p>的数值为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;应用程序数据&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"AppData"的数</p>
<p>值为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;字体&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"Fonts"的数值</p>
<p>为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;发送到&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"SendTo"的数</p>
<p>值为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;通用文件夹&#8221;目录 </p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion<br>在右边的窗口中修改字符串"CommonFilesDir"为新的目录路径,如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;开始菜单的程序&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"Programs"的</p>
<p>数值为新的目录路径, 如 C:\down，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>改变&#8220;启动&#8221;的目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"Startup"的数</p>
<p>值为新的目录路径, 缺省值为C:\WIN98\Start Menu\Programs\启动,记住要把原目录里的文件复制到新的目录</p>
<p>。 </p>
<p><br>更改&#8220;网页的历史记录&#8221;目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"History"的数</p>
<p>值为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>更改"我的文档"目录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,在右边</p>
<p>窗口中更改字符串"Personal"的</p>
<p>数值为新的目录路径, 如 C:\tt，<br>记住要把原目录里的文件复制到新的目录。 </p>
<p><br>注册表修改技巧----桌面控制</p>
<p>&nbsp;</p>
<p>禁止在桌面上显示图标 </p>
<p>我们安装了许多软件后，往往会在系统的桌面上出现许多图标，点击这些图标可以启动相应的软件程序，过多</p>
<p>的图标使桌面变得花花绿绿，想</p>
<p>恢复原来清洁的桌面，又不想删除这些图标，就可以使用 一下的方法，把桌面上的所有图标都隐藏起来。<br>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个DWORD值：&#8220;NoDestop&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止显示提示 </p>
<p>当我们把鼠标指向&#8220;我的电脑&#8221;，&#8220;我的文件夹&#8221;,&#8220;回收站&#8221;等图标时往往会出现一些提示信息，这些信息</p>
<p>对一个熟悉WINDOWS的操作者来讲</p>
<p>，是不必要的，我们想禁止显示这些提示，可使用下面的方法。<br>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下<br>在右边的窗口中修改DWORD值&#8220;ShowInfoTip&#8221;，设其值为&#8220;0&#8221;。 </p>
<p><br>禁止使用任务栏 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个DWORD值：&#8220;NoSetTaskBar&#8221;，并设其值为&#8220;1&#8221;。<br>此条技巧的作用是当我们在系统的任务栏上点击鼠标右键，再选择&#8220;属性&#8221;时，将会出现以下的提示信息：&#8220;</p>
<p>本次操作由于这台计算机的限制</p>
<p>而被取消。请与你的系统管理员联系&#8221;。 </p>
<p><br>高彩色显示图标 </p>
<p>当我们按照完windows后，windows的图标都是用位数较小的色彩来显示图标的，使用下面的方法可以用16位色</p>
<p>显示图标,运行注册表编辑器，依</p>
<p>次展开到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics<br>在右边的窗口中找到字符串值：&#8220;Shell Icon BPP&#8221;，并设其值为&#8220;16&#8221;。 </p>
<p><br>改变图标大小 </p>
<p>HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics<br>在右边的窗口中找到字符串值：&#8220;Shell Icon Size&#8221;，改变其值即改变图标大小，缺省值为32 </p>
<p><br>进入WINDOWS98时显示欢迎提示 </p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run<br>在右边的窗口中新建一个字符串值：&#8220;Welcome&#8221;，设值为&#8220;Welcome.exe /R&#8221;。 </p>
<p><br>以12小时制显示时间 </p>
<p>HKEY_USERS\.DEFAULT\Control Panel\International<br>在右边的窗口中找到字符串值：&#8220;sTimeFormat&#8221;，改其值为&#8220;h:mm tt&#8221;。 </p>
<p><br>隐藏快捷方式的小箭头 </p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons<br>在右边的窗口中新建字符串值：&#8220;29&#8221;，设置其值为:&#8220;%WINDIR%\SYSTEM\docprop.dll,1&#8221;。 </p>
<p><br>在桌面上显示WINDOWS版本标志 </p>
<p>HKEY_USERS\.DEFAULT\Control Panel\desktop<br>在右边的窗口中新建一个字符串值：&#8220;PaintDesktopVersion&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>把快捷方式的小箭头更改为其它图标 </p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>新建或修改字符串"29",设置其值为你的图标路径。 </p>
<p><br>为快捷方式的图标加上小箭头 </p>
<p>去掉了小箭头，怎么办，别急，按以下办法可以做上<br>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Icons<br>在右边窗口中删除字符串"29"。 </p>
<p><br>禁止名称有&#8220;快捷方式&#8221;四个字 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer<br>在右边的窗口中新建一个二进制值&#8220;link&#8221;，并设其值为&#8220;00 00 00 00&#8221;。 </p>
<p><br>使用三键鼠标 </p>
<p>在HKEY_LOCAL_MACHINE\SOFTWARE\Logitech\ouseWare\CurrentVersion \SerialV \0000下 ，<br>改为DoubleClick to 001。 </p>
<p><br>更改WINDOWS系统的产品名 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下<br>在右边的窗口中找到字符串值&#8220;ProductName&#8221;，更改键值即可。打开系统属性看看效果 </p>
<p><br>更改WINDOWS系统的用户名 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下<br>在右边的窗口中找到字符串值&#8220;RegisteredOwner&#8221;，更改键值即可。打开系统属性看看效果。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>　　 首页 | 资讯中心 | 技术与方案 | IT培训 | ChinaITLab网校 | 在线实验 | 虚拟考场 | IT社区 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br>注册表修改技巧----主菜单控制</p>
<p>&nbsp;</p>
<p>禁止&#8220;运行&#8221;菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边的窗口中新建一个DWORD值&#8220;NoRun&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止&#8220;文档&#8221;菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边的窗口中新建一个DWORD值&#8220;NoRecentDocsMenu&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止&#8220;查找&#8221;菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边的窗口中新建一个DWORD值&#8220;NoFind&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>禁止WINDOWS平滑卷动 </p>
<p>HKEY_CURRENT_USER\Control Panel\Desktop<br>在右边的窗口中修改&#8220;SmoothScroll&#8221;，设其值为&#8220;0&#8221;，若允许则设值为&#8220;1&#8221;。 </p>
<p><br>禁止&#8220;关闭系统&#8221;菜单 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个DWORD值&#8220;NoClose&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>改变菜单的显示速度 </p>
<p>HKEY_CURRENT_USER\Control Panel\Desktop<br>在右边的窗口中新建一个字符串值：&#8220;MenuShowDelay&#8221;，其值范围为0-999，0表示最快。 </p>
<p><br>调整双击灵敏度的区域 </p>
<p>HKEY_CURRENT_USER\Control Panel\Desktop<br>在右边的窗口中修改&#8220;DoubleClickHeight&#8221;和&#8220;DoubleClickWidth&#8221;的值，即可改变区域大小。 </p>
<p><br>禁止向&#8220;开始&#8221;中的&#8220;文档&#8221;保留历史记录 </p>
<p>HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边窗口中创建DWORD值：&#8220;NoRecentDocsHistory&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>不允许改变启动菜单 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个DWORD值&#8220;NoChangeStartMenu&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>始菜单使用多页面显示 </p>
<p>程序中的菜单过多时，往往一页显示不出来，这时使用下面的功能实现菜单多页面显示<br>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Advanced下<br>在右边的窗口中新建字符串值&#8220;StartMenuScrollPrograms&#8221;，并设值为&#8220;false&#8221;。<br>要取消这项功能，只需删除该字符串。 </p>
<p><br>去掉&#8220;开始&#8221;选单中的&#8220;登录&#8221;项 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windwos\CurrnetVersion\Ploicies\Explorer<br>在右边窗口中创建二进制值：&#8220;NoLogOff&#8221;，并设其值为&#8220;01 00 00 00&#8221;。 </p>
<p><br>窗口打开、缩小、关闭时是否显示动画过程 </p>
<p>HKEY_CURRENT_USER\Control Panel\Desktop<br>在右边的窗口中新建一个字符串值：&#8220;MinAnimate&#8221;，数据为&#8220;0&#8221;表示不显示过程，&#8220;1&#8221;表示显示。 </p>
<p><br>在开始菜单中创建&#8220;控制面板&#8221;等菜单 </p>
<p>下面是相应的名称<br>打印机.{2227A280-3AEA-1069-A2DE-08002B30309D}<br>控制面板.{21EC2020-3AEA-1069-A2DD-08002B30309D}<br>我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}<br>回收站.{645FF040-5081-101B-9F08-00AA002F954E} </p>
<p><br>禁止显示"开始"菜单中的"windows升级菜单" </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建一个二进制值&#8220;NoWindowsUpdate&#8221;，并设值为&#8220;1&#8221;。 </p>
<p><br>注册表修改技巧----分菜单控制</p>
<p>&nbsp;</p>
<p>禁用控制面板的&#8220;显示&#8221;设置项 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下<br>在右边的窗口中新建一个DWORD值：&#8220;NoDispCPL&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止修改&#8220;开始&#8221;菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explore<br>在右边的窗口中新建一个DWORD值：&#8220;NoChangeStartMenu&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止删除打印机 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边的窗口中新建一个DWORD值：&#8220;NoDeletePrinter&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止添加打印机 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br>在右边的窗口中新建一个DWORD值：&#8220;NoAddPrinter&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;系统属性&#8221;中出现&#8220;硬件配置文件&#8221;的菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System<br>在右边的窗口中新建一个DWORD值：&#8220;NoConfigPage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;网络&#8221;中显示&#8220;标识&#8221;属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Network下<br>在右边的窗口中新建DWORD值&#8220;NoNetSetupIDPage&#8221;,并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;系统属性&#8221;中出现&#8220;设备管理器&#8221;的菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System<br>在右边的窗口中新建一个DWORD值：&#8220;NoDevMgrPage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁用控制面板的&#8220;显示&#8221;设置项中的&#8220;外观&#8221;选项卡 </p>
<p>在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下<br>在右边的窗口中新建一个DWORD值：&#8220;NoDispAppearancePage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止使用IE&#8220;internet选项&#8221;中的&#8220;连接&#8221;菜单 </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值：&#8220;SecurityTab&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止使用IE&#8220;internet选项&#8221;中的&#8220;安全&#8221;菜单 </p>
<p>在HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下<br>在右边的窗口中新建一个DWORD值：&#8220;SecurityTab&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在"控制面板"中显示"网络"属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下<br>在右边的窗口中新建DWORD值&#8220;NoNetSetup",并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;系统属性&#8221;中出现&#8220;虚拟内存&#8221;的菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System<br>在右边的窗口中新建一个DWORD值：&#8220;NoVirtMemPage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>改变&#8220;控制面板&#8221;中的&#8220;添加/删除程序&#8221;的&#8220;安全/卸载&#8221;中的列表内容 </p>
<p>在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall下有许多主键<br>要删除&#8220;安全/卸载&#8221;列表中的某条内容，只要删除相对应的主键即可。 </p>
<p><br>禁止在&#8220;网络&#8221;中显示&#8220;整个网络&#8221;属性 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Network下<br>在右边的窗口中新建DWORD值&#8220;NoEntireNetwork&#8221;,并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;显示属性&#8221;中出现&#8220;效果，web，设置&#8221;这三个分菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System<br>在右边的窗口中新建一个DWORD值：&#8220;NoDispSettingsPage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p><br>禁止在&#8220;显示属性&#8221;中出现&#8220;屏幕保护程序&#8221;这个分菜单 </p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System<br>在右边的窗口中新建一个DWORD值：&#8220;NoDispScrSavPage&#8221;，并设其值为&#8220;1&#8221;。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>注册表修改技巧----左右键控制</p>
<p>&nbsp;</p>
<p>增加&#8220;关闭系统&#8221;的选项 </p>
<p>在HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\DIRECTORY\SHELL下<br>新建主键"快速关闭电脑",在右边的窗口中"默认"为"快速关闭电脑"。<br>在HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\DIRECTORY\SHELL\快速关闭电脑下,新建主键"COMMAND"，在右边的</p>
<p>窗口中修改&#8220;默认&#8221;</p>
<p>为"C:\WINDOWS\RUNDLL.EXE USER.EXE,EXITWINDOWS"。 </p>
<p><br>改变输入法的排列顺序 </p>
<p>我们按Ctrl+Space选择输入法时往往要切换几次才能找到我们所须的输入法,输入法的排列顺序<br>主键 输入法 <br>E00E0804 微软拼音输入法 <br>E0040804 智能拼音输入法 <br>E0050804 区位码输入法 <br>E0010804 全拼输入法 <br>00000409 英文输入法 <br>E0030804 郑码输入法 <br>E0020804 双拼输入法 <br>在HKEY_USERS\.DEFAULT\keyboard layout\preload下有1,2,3,4......等主键<br>1,2,3,4.....则代表输入法的排序,单击1,2,3,4....可在右边的窗口中看到相应的输入法的键值改动键值,可</p>
<p>改变输入法的顺序。</p>
<p>&nbsp;</p>
<p>修改鼠标右键弹出菜单 </p>
<p>在gif类型的文件名上点击鼠标右键弹出的菜单在HKEY_CLASSES_ROOT\GIFFILE\SHELL中，可按上述方法修改。</p>
<p>在cda类型的文件名上点击鼠标右</p>
<p>键弹出的菜单在HKEY_CLASSES_ROOT\CDAFILE\SHELL中，<br>可按上述方法修改。要找某种类型的菜单中，可在HKEY_CALSSES_ROOT\???FILE\SHELL，???代表所要找的文件</p>
<p>类型。 </p>
<p><br>减少鼠标右键菜单中&#8220;新建&#8221;菜单的长度 </p>
<p>当我们使用了系统一段时间，装了很多的程序，常常会造成鼠标右键菜单中&#8220;新建&#8221;菜单的长度增加，这时，</p>
<p>我们想减轻&#8220;新建&#8221;菜单的负担</p>
<p>，我们可以修改注册表，现举例说明：<br>如修改注册表前右键&#8220;新建&#8221;菜单 </p>
<p><br>为右键菜单增加&#8220;在新窗口中打开&#8221;的命令 </p>
<p>我们往往在&#8220;文件夹选项&#8221;中选择了在同一窗口中打开文件夹 ，但我们在浏览文件夹的时候，有时想比较一</p>
<p>下两个文件夹的不同，或想开多个</p>
<p>窗口浏览文件夹内容，可用到下面的方法。<br>逐渐展开到HKEY_LOCAL_MACHINE\Software\CLASSES\Directory\shell 下， 创建一个主键&#8220;NewWindow&#8221;<br>在右边窗口中把&#8220;默认&#8221;的值改为：&#8220;在新窗口中打开&#8221; ,并在此主键&#8220;NewWindow&#8221;下创建一个主键</p>
<p>&#8220;command&#8221;，单击&#8220;command&#8221;,在右边</p>
<p>窗口中把&#8220;默认&#8221;的值改为&#8220;explorer.exe %1"。 </p>
<p><br>增加&#8220;快速启动&#8221;的选项 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\Directory\shell下<br>新建主键&#8220;快速启动系统&#8221;，在右边的窗口中修改&#8220;默认&#8221;为&#8220;快速启动系统&#8221;<br>在HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\DIRECTORY\SHELL\快速启动系统 下,新建主键"COMMAND"，在右边</p>
<p>的窗口中修改&#8220;默认&#8221;</p>
<p>为"C:\WINDOWS\RUNDLL.EXE USER.EXE,EXITWINDOWSEXEC"。 </p>
<p><br>输入汉字时自动添加一个空格 </p>
<p>在HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion下可以看到有全拼，微软拼音，英文</p>
<p>，智能ABC等等输入法，单击某个</p>
<p>输入法的主键，我们可以看到在右边的窗口中有&#8220;插空格&#8221;这个DWORD值，其值为&#8220;0&#8221;时表示不添加空格，为</p>
<p>&#8220;1&#8221;时则表示输入汉字时自动添</p>
<p>加一个空格。 </p>
<p><br>为文件夹的右键菜单添加运行DOS的命令 </p>
<p>在HKEY_CLASSES_ROOT\Directory\shell下创建一个主键&#8220;CommandPrompt&#8221;，在右边窗口中把<br>&#8220;默认&#8221;的值改为：&#8220;Command&#8221;（或你喜欢的字符，此字符将显示在右键菜单中）并在此主键<br>下创建一个主键&#8220;command&#8221;，在右边窗口中把&#8220;默认&#8221;的值改为&#8220;command.com /k cd "%1"。 </p>
<p><br>为&#8220;回收站&#8221;右键菜单中增加&#8220;删除&#8221;和&#8220;重命名&#8221;的命令 </p>
<p>在HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder下<br>修改右边的窗口中的二近制值"Attributes",设其值为"70 01 00 20"。 </p>
<p><br>为驱动器的右键菜单增加&#8220;整理磁盘碎片&#8221;的选项 </p>
<p>在HKEY_LOCAL_MACHINE\Software\CLASSES\Drive\shell 下<br>创建一个主键&#8220;Defrag&#8221;在右边窗口中把&#8220;默认&#8221;的值改为：&#8220;整理磁盘碎片&#8221; ,并在此主键&#8220;NewWindow&#8221;</p>
<p>下创建一个主键&#8220;command&#8221;，单</p>
<p>击&#8220;command&#8221;,在右边窗口中把&#8220;默认&#8221;的值改为<br>&#8220;C:\WINDOWS\defrag.exe %1&#8221;。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br>&nbsp;</p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/42751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-04-25 19:04 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/42751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOS 常用命令：</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/42739.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Fri, 25 Apr 2008 09:20:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/42739.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/42739.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/42739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/42739.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/42739.html</trackback:ping><description><![CDATA[<br>dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 <br>copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘 <br>edit 文本编辑 mem 查看内存状况 md 建立子目录 move 移动文件、改目录名 <br>more 分屏显示 type 显示文件内容 rd 删除目录 sys 制作DOS系统盘 <br>ren 改变文件名 xcopy 拷贝目录与文件 chkdsk 检查磁盘 attrib 设置文件属性 <br>fdisk 硬盘分区 date 显示及修改日期 label 设置卷标号 defrag 磁盘碎片整理 <br>msd 系统检测 path 设置搜寻目录 share 文件共享 memmaker内存优化管理 <br>help 帮助 restore 恢复备份文件 set 设置环境变量 time 显示及修改时间 <br>tree 列目录树 debug 随机调试程序 doskey 重新调用DOS命令 prempt 设置提示符 undelete恢复被删的文件 scandisk检测、修理磁盘 <br><br>不常用DOS命令 <br>diskcomp磁盘比较　 append 设置非执行文件路径 <br>expand 还原DOS文件 fasthelp快速显示帮助信息 <br>fc 文件比较 interink启动服务器 <br>setver 设置版本 intersvr启动客户机 <br>subst 路径替换 qbasic Basic集成环境 <br>vsafe 防病毒 unformat恢复已格式化的磁盘 <br>ver 显示DOS版本号 smartdrv设置磁盘加速器 <br>vol 显示磁盘卷标号 lh 将程序装入高端内存 <br>ctty 改变控制设备 emm386 扩展内存管理 <br>常用命令具体介绍: <br><br><br><br>一、Dir <br><br><br><br>显示目录文件和子目录列表，呵呵，这个当然是人人要知道的。 <br>可以使用通配符（? 和 *），？表通配一个字符，*表通配任意字符 <br>*.后缀 <br>指定要查看后缀的文件。 上面其实也可以为&#8220; . 后缀&#8221;,例如dir *.exe 等于dir .exe <br>/p <br>每次显示一个列表屏幕。要查看下一屏，请按键盘上的任意键。 <br>/w <br>以宽格式显示列表，在每一行上最多显示 5 个文件名或目录名。 <br>/s <br>列出指定目录及所有子目录中出现的每个指定的文件名。比win环境下的查找快多了 <br>dir *.* -&gt; a.txt 把当前目录文件列表写入a.txt <br>dir *.* /s -&gt; a.txt 把当前目录文件列表写入a.txt，包括子目录下文件。 <br><br><br><br>二、Attrib <br><br><br><br>显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性。如果在不含参数的情况下使用，则 attrib 会显示当前目录中所有文件的属性。 <br>+r <br>设置只读属性。 <br>-r <br>清除只读属性。 <br>+a <br>设置存档文件属性。 <br>-a <br>清除存档文件属性。 <br>+s <br>设置系统属性。 <br>-s <br>清除系统属性。 <br>+h <br>设置隐藏属性。 <br>-h <br>清除隐藏属性。 <br>三、Cls <br><br><br><br>清除显示在命令提示符窗口中的所有信息，并返回空窗口，即&#8220;清屏&#8221; <br><br><br><br>四、Exit <br>退出当前命令解释程序并返回到系统。 <br><br><br><br>五、format <br>格式化 <br>/q <br>执行快速格式化。删除以前已格式化卷的文件表和根目录，但不在扇区之间扫描损坏区域。使用 /q 命令行选项应该仅格式化以前已格式化的完好的卷。 <br><br><br><br>六、Ipconfig <br>显示所有当前的 TCP/IP 网络配置值、刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。使用不带参数的 ipconfig 可以显示所有适配器的 IP 地址、子网掩码、默认网关。 <br>/all <br>显示所有适配器的完整 TCP/IP 配置信息。 <br>ipconfig 等价于 winipcfg，后者在ME、98 和 95 上可用。尽管 Windows XP 没有提供象 winipcfg 命令一样的图形化界面，但可以使用&#8220;网络连接&#8221;查看和更新 IP 地址。要做到这一点，请打开 网络连接，右键单击某一网络连接，单击&#8220;状态&#8221;，然后单击&#8220;支持&#8221;选项卡。 <br>该命令最适用于配置为自动获取 IP 地址的计算机。它使用户可以确定哪些 TCP/IP 配置值是由 DHCP、自动专用 IP 地址 (APIPA) 和其他配置配置的。 <br><br><br><br>七、md <br>创建目录或子目录 <br><br><br><br>八、Move <br>将一个或多个文件从一个目录移动到指定的目录。 <br><br><br><br>九、Nbtstat <br>显示本地计算机和远程计算机的基于 TCP/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。Nbtstat 命令行参数区分大小写。 <br>-a remotename <br>显示远程计算机的 NetBIOS 名称表，其中，RemoteName 是远程计算机的 NetBIOS 计算机名称。 <br>-A IPAddress <br>显示远程计算机的 NetBIOS 名称表，其名称由远程计算机的 IP 地址指定（以小数点分隔）。 <br><br><br><br>十、Netstat <br>显示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息（对于 IP、ICMP、TCP 和 UDP 协议）以及 IPv6 统计信息（对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议）。使用时如果不带参数，netstat 显示活动的 TCP 连接。 <br>-a <br>显示所有活动的 TCP 连接以及计算机侦听的 TCP 和 UDP 端口。 <br>十一、Ping <br>通过发送&#8220;网际消息控制协议 (ICMP)&#8221;回响请求消息来验证与另一台 TCP/IP 计算机的 IP 级连接。回响应答消息的接收情况将和往返过程的次数一起显示出来。Ping 是用于检测网络连接性、可到达性和名称解析的疑难问题的主要 TCP/IP 命令。如果不带参数，ping 将显示帮助。名称和Ip地址解析是它的最简单应用也是用的最多的。 <br>-t <br>指定在中断前 ping 可以持续发送回响请求信息到目的地。要中断并显示统计信息，请按 CTRL-BREAK。要中断并退出 ping，请按 CTRL-C。 <br>-lSize <br>指定发送的回响请求消息中&#8220;数据&#8221;字段的长度（以字节表示）。默认值为 32。size 的最大值是 65,527。 <br><br><br><br>十二、Rename (Ren) <br>更改文件的名称。 <br>例如 ren *.abc *.cba <br><br><br><br>十三、Set <br>显示、设置或删除环境变量。如果没有任何参数，set 命令将显示当前环境设置。 <br><br><br><br>十四、Shutdown <br>允许您关闭或重新启动本地或远程计算机。如果没有使用参数，shutdown 将注销当前用户。 <br>-m ComputerName <br>指定要关闭的计算机。 <br>-t xx <br>将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。 <br>-l <br>注销当前用户，这是默认设置。-m ComputerName 优先。 <br>-s <br>关闭本地计算机。 <br>-r <br>关闭之后重新启动。 <br>-a <br>中止关闭。除了 -l 和 ComputerName 外，系统将忽略其它参数。在超时期间，您只可以使用 -a。 <br><br><br><br>十五、System File Checker (sfc) <br>win下才有，在重新启动计算机后扫描和验证所有受保护的系统文件。 <br>/scannow <br>立即扫描所有受保护的系统文件。 <br>/scanonce <br>一次扫描所有受保护的系统文件。 <br>/purgecache <br>立即清除&#8220;Windows 文件保护&#8221;文件高速缓存，并扫描所有受保护的系统文件。 <br>/cachesize=x <br>设置&#8220;Windows 文件保护&#8221;文件高速缓存的大小，以 MB 为单位。 <br><br><br><br>十六、type <br>显示文本文件的内容。使用 type 命令查看文本文件或者是bat文件而不修改文件 <br><br><br><br>十七、Tree <br>图像化显示路径或驱动器中磁盘的目录结构。 <br><br><br><br>十八、Xcopy <br>复制文件和目录，包括子目录。 <br>/s <br>复制非空的目录和子目录。如果省略 /s，xcopy 将在一个目录中工作。 <br>/e <br>复制所有子目录，包括空目录。 <br><br><br><br>十九、copy <br>将一个或多个文件从一个位置复制到其他位置 <br><br><br><br>二十、del <br>删除指定文件。 <br>ftp和bat批命令和net和telnet由于子命令太多，这里不说了，不过这几个都是常用到的。
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/42739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-04-25 17:20 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/42739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOS基本知识</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/41354.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Sun, 23 Mar 2008 04:15:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/41354.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/41354.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/41354.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/41354.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/41354.html</trackback:ping><description><![CDATA[<p>&nbsp;好多朋友都和我说，都是什么年月了，你还说什么DOS，那东西都过时了，早已经没有人使用了！可是我这个人就是爱较真儿，我不但要说它没有过时，更要说它非常有用。换句话说：DOS不是万能的，可是没有DOS是万万不能的！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者说，windows用于简单的基本应用确实是不错，连小孩子看了就会使用的傻瓜软件，的确非常方便。但是到系统管理这样的层次，就十分困难了，此时，DOS会大显身手。所以说，WIndows是应用平台，DOS是管理平台。应用者人人可为，管理者并非人人可为了。</p>
<p>纯DOS 6.22的20个基本命令<br>(对7.0以上版本也适用)</p>
<p>&nbsp;&nbsp;&nbsp; DOS 6.22的命令有130多个，下面仅介绍其中的20个基本命令。其实各个命令，在无论是在DOS系统下还是Windows系统下都非常有效，特别是在Windows系统瘫痪之后，非常实用。换句话说，DOS命令并不是没有用了，只是在一般的使用当中不用或少用，在计算机的管理以及维护维修时，DOS命令时必不可少的。 </p>
<p>一、常用内部命令</p>
<p>&nbsp;&nbsp;&nbsp; 微机启动成功后，就归启动盘上的 DOS 管理了(假设有硬盘，硬盘上DOS的版本号是 6.22，而是从软盘上启动的微机，软盘上的 DOS 版本号是 3.31，则硬盘上的 6.22 的 DOS 命令使用无效，使用中系统提示使用正确的 DOS 版本。如果两者 DOS 版本相同，硬盘上的DOS命令虽然有效，但必须经过A盘上的 COMMAND. COM来解释才生效，即系统总是到 A 盘上读取 COMMAND)，此时所有的 DOS 的内部命令就可以随时随地任意使用。<br>&nbsp;&nbsp;&nbsp; 当然，我们的硬盘上安装的是Windows系统，此时，用软盘上的6.22的DOS系统启动计算机的话，硬盘上的Windows系统命令也是不可用的。<br>&nbsp;&nbsp;&nbsp; 总之，DOS的内部命令，就是计算机启动后可以随意使用的命令，它不以文件形式存储在磁盘上，哪怕是磁盘上只有IO.SYS、MSDOS.SYS、COMMAND.COM三个系统文件，就能够使用。 </p>
<p>&nbsp;&nbsp;&nbsp; 1.察看目录命令 DIR </p>
<p>&nbsp;&nbsp;&nbsp; 想要知道某个磁盘、某个目录有什么内容(子目录和文件、文件的详细情况)时使用此命令，命令名后面可以跟磁盘名、目录名、文件名等。<br>&nbsp;&nbsp;&nbsp; (1)方法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ① 直接敲入DIR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ② 敲入DIR 盘符(A:、B:、C:、D:...等)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ③ 敲入DIR 目录名(或盘符\目录名)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ④ 敲入DIR 文件名(或盘符\目录名\文件名) </p>
<p>&nbsp;&nbsp;&nbsp; (2)举例：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DIR&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 察看C盘根目录(当前目录)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;DIR&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 察看C盘UCDOS目录(当前目录)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DIR A:&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在C盘察看A盘的当前目录(可能是根目录也可能是某个子目录)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;DIR C:\&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在A盘察看C盘的根目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DIR UCDOS&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在C盘根目录查看当前盘UCDOS目录情况&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DIR *.EXE&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 察看当前目录下所有扩展名为 EXE 的文件 </p>
<p><br>&nbsp;&nbsp;&nbsp; 附：dir 命令的各个参数（适合较高版本的DOS）：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/w&nbsp;&nbsp;&nbsp; 横行显示&nbsp;&nbsp;&nbsp; DIR/P&nbsp;&nbsp; 分页显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A或DIR，&nbsp;&nbsp;&nbsp; 列出全部的隐藏含文件&nbsp;&nbsp;&nbsp; DIR/S&nbsp;&nbsp; 所有目录及其下所有子目录的文件&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/B&nbsp;&nbsp; 裸显示&nbsp;&nbsp;&nbsp; DIR/L&nbsp;&nbsp; 以小写方式显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/ah&nbsp;&nbsp; 列出全部的隐藏文件&nbsp;&nbsp;&nbsp; DIR/AS&nbsp;&nbsp; 列出全部系统文件&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O：C&nbsp;&nbsp; 显示文件压缩比(小到大，反之用-C)&#8230;&#8230;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A:A&nbsp;&nbsp; 压缩位置时显示&nbsp;&nbsp;&nbsp; DIR/A:-A&nbsp;&nbsp; 压缩位置位时不显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A:D&nbsp;&nbsp; 只显示目录&nbsp;&nbsp;&nbsp; DIR/A:-D&nbsp;&nbsp; 不显示目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A:R&nbsp;&nbsp; 只显示只读文件&nbsp;&nbsp;&nbsp; DIR/A:-R&nbsp;&nbsp; 不显示只读文件&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A:H&nbsp;&nbsp; 只显示隐含文件&nbsp;&nbsp;&nbsp; DIR/A:-H&nbsp;&nbsp; 不显示隐含文件&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/A:S&nbsp;&nbsp; 只显示系统文件&nbsp;&nbsp;&nbsp; DIR/A:-S&nbsp;&nbsp; 不显示系统文件&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O:E&nbsp;&nbsp; 按扩展名首字母顺序A—Z显示&nbsp;&nbsp;&nbsp; DIR/O:-E&nbsp;&nbsp; 按扩展名首字母顺序Z—A显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O:S&nbsp;&nbsp; 占用空间最小的优先显示&nbsp;&nbsp;&nbsp; DIR/O:-S&nbsp;&nbsp; 占用空间最大的优先显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O:D&nbsp;&nbsp; 创建时间最早的优先显示&nbsp;&nbsp;&nbsp; DIR/O:-D&nbsp;&nbsp; 创建时间最晚的优先显示&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O:G&nbsp;&nbsp; 先列目录，再列文件&nbsp;&nbsp;&nbsp; DIR/O:-G&nbsp;&nbsp; 先列文件再列目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIR/O:N&nbsp;&nbsp; 按A—Z字母顺序显示&nbsp;&nbsp;&nbsp; DIR/O:-N&nbsp;&nbsp; 按Z—A字母顺序显示&nbsp; <br>&nbsp;&nbsp;&nbsp; DIR的这些用法还可以组合使用，选择项之间不留空格。不过，这些只是在5.0以后版本的MS-DOS中才有，如果想要使这样的命令按照上述某一选择一直有效的话，就用set dircmd=switchs（es），把它加到自动批处理文件AUTOEXEC.BAT中，例如：在自动批处理文件AUTOEXEC.BAT中加入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set dircmd=/p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示一页之后暂停<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set dircmd=/s/p&nbsp;&nbsp;&nbsp; 分页显示当前目录及其所有子目录内的文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set dircmd=/W/L&nbsp;&nbsp;&nbsp; 用小写字母形式横向显示目录及文件<br>&nbsp;&nbsp;&nbsp; 既然如此，我们同样可以利用这种方法对命令进行加密，从而使一般的用户无法操作。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set dircmd=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让dir命令失效,键入dir命令，屏幕提示 File not found<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set dircmd=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 取消原有设置，命令恢复正常<br>&nbsp;&nbsp;&nbsp; 由此可见，DOS 命令可以用set命令进行改变。这是改变dir命令，其他命令的改变与此类似。 </p>
<p>&nbsp;&nbsp;&nbsp; 2.改变目录命令 CD(CHDIR) </p>
<p>&nbsp;&nbsp;&nbsp; 察看目录时看到第二列为〈DIR〉(目录标志) 的，就可以用此命令进入该目录当中，只要用&#8220;CD+空格+目录名&#8221;或&#8220;CD\目录名&#8221;就能够进入到该目录中。<br>&nbsp;&nbsp;&nbsp; (1)方法:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ① CD 目录名(或CD\目录名)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 逐层进入目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ② CD\目录名1\目录名2\目录名3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直接进入深层目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ③ CD..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 逐层退出目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ④ CD\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直接退出到根目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ⑤ C:\目录名1\目录名2&gt;CD\目录名3\目录名4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 退出某目录的同时进入目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ⑥ CD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前目录 </p>
<p>&nbsp;&nbsp;&nbsp; (2)举例:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;CD ucdos&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入ucdos目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;CD UCDOS\SRC&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入UCDOS目录下的SRC子目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS\SRC&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS\SRC&gt;CD..&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从深层子目录SRC中退出到上层目录UCDOS&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;CD..&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从子目录UCDOS中退出到根目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS\SRC&gt;CD\&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从深层子目录SRC中直接退出到根目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS\SRC&gt;CD\CAIDOS\ADS&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从SRC中退出的同时进入ADS&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\CAIDOS\ADS&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\CAI\ADS&gt;CD&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前目录&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\CAI\ADS </p>
<p><br>&nbsp;&nbsp;&nbsp; 3.清屏幕命令 CLS </p>
<p>&nbsp;&nbsp;&nbsp; CLS 命令的作用是把屏幕上显示的内容清除掉，以便于大家查看屏幕上即将显示的内容。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;cls&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清除屏幕内容 </p>
<p>&nbsp;&nbsp;&nbsp; 4.建立目录命令 MD(MKDIR) </p>
<p>&nbsp;&nbsp;&nbsp; MD 命令的作用是建立目录，以便于存放自己的文件。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;MD LYX&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 建立一个名为 LYX 的目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;MD C:\ABC&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 在C盘建立一个名为ABC的目录&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; 5.删除空目录命令 RD(RMDIR) </p>
<p>&nbsp;&nbsp;&nbsp; RD 命令的作用是删除里面没有子目录和文件的空的目录。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;RD LYX&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除掉名为 LYX 的没有内容的空子目录名<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;RD C:\ABC&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 删除掉C盘名为 ABC 的没有内容的空子目录名<br>&nbsp;&nbsp;&nbsp; RD 命令只能删除掉目录中没有任何子目录或文件的空的子目录，其中如有文件或目录，则需要首先删除其中的目录和文件，然后再删除这个目录。 </p>
<p>&nbsp;&nbsp;&nbsp; 6.文件改名命令 REN(RENAME) </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是把原来的文件名改成新的文件名。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;REN LYX.WPS ABC.TXT&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把文件 LYX.WPS 改成新名为 ABC.TXT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;ren A:\XYZ\123 234&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把A盘XYZ目录下的文件 123 改成新名为 234 </p>
<p>&nbsp;&nbsp;&nbsp; 7.拷贝文件命令 COPY </p>
<p>&nbsp;&nbsp;&nbsp; 拷贝也叫做复制，就是把原来的东西原样复制出一个新的副本。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;COPY C:\UCDOS\LYX.WPS C:\BOOK&#8595;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把C盘UCDOS目录下的LYX.WPS文件制作一个副本，并且放到C盘BOOK目录中文件名仍然用原名<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;COPY LYX.WPS LYX.TXT&#8595;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把文件LYX.WPS制作出个副本，以一个新的文件名LYX.TXT放到原来目录中 </p>
<p>&nbsp;&nbsp;&nbsp; 8.删除文件命令 DEL(ERASE) </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是把某个或某些磁盘文件从磁盘上删除掉。例如：要删除C盘UCDOS目录下的 LYX.WPS 文件,可以用下面的方法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;DEL LYX.WPS&#8595;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DEL C:\UCDOS\LYX.WPS&#8595; </p>
<p>&nbsp;&nbsp;&nbsp; 9.显示文件内容命令 TYPE </p>
<p>&nbsp;&nbsp;&nbsp; 显示文本文件的内容，通常情况下扩展名为TXT、BAT的文件都是文本文件，相当于我们所说的&#8220;书、本&#8221;类的文字内容的文件，可以是中文的、外文的。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\WB&gt;TYPE WB.TXT&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示 WB.TXT 文本文件的具体内容<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;TYPE UP.BAT&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示UCDOS目录下的文件名为UP 的批处理文件的具体内容。<br>&nbsp;&nbsp;&nbsp; 屏幕显示：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ECHO OFF<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RD16<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KNL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RDFNT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRNT </p>
<p>&nbsp;&nbsp;&nbsp; 10.显示修改日期命令 DATE </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是显示和修改系统时间。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;DATE&#8595; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current date 03-23-1998 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter new date:_<br>&nbsp;&nbsp;&nbsp; 直接按回车承认当前日期，不进行修改。如果需要修改，则按照要求的形式输入当前的具体日期后，回车即可，时间修改成功。 </p>
<p>&nbsp;&nbsp;&nbsp; 11.显示修改时间命令 TIME </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是显示和修改系统时间。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;TIME&#8595; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current time 09:23:45.78p <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter new time:_ <br>&nbsp;&nbsp;&nbsp; 直接按回车承认当前时间，不进行修改。如果需要修改，则按照要求的形式输入当前的具体时间后，回车即可，时间修改成功。 </p>
<p>&nbsp;&nbsp;&nbsp; 12.显示 DOS 版本命令 VER </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是显示启动微机时用的DOS的版本号。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;VER&#8595;&nbsp;&nbsp;&nbsp; 命令执行后屏幕显示：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MS-DOS Version 6.22 </p>
<p>&nbsp;&nbsp;&nbsp; 13.显示磁盘卷标命令 VOL </p>
<p>&nbsp;&nbsp;&nbsp; 此命令的作用是显示磁盘卷标，即显示一下磁盘的名字。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;VOL&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令执行后屏幕显示为：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume in drive C is LYX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume Serial Number is 2425-98D1 </p>
<p>&nbsp;&nbsp;&nbsp; 14.显示或设置路径命令 PATH </p>
<p>&nbsp;&nbsp;&nbsp; PATH 命令可以显示、设置磁盘目录路径。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;PATH&#8595; 显示磁盘目录路径， 屏幕可能会显示类似下面的内容：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PATH=C:\;C:\DOS;C:\UCDOS;C:\Windows; <br>&nbsp;&nbsp;&nbsp; 或者是：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No Path (没有路径)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;PATH=C:\WPS&#8595;&nbsp;&nbsp;&nbsp; 设置C盘的WPS目录路径，即使WPS目录下的可执行文件在任何磁盘、任何目录下可以随意调用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;PATH=C:\DOS&#8595;&nbsp;&nbsp;&nbsp; 设置C盘的DOS目录路径，使DOS的外部命令随处可用<br>&nbsp;&nbsp;&nbsp; 设置了PATH=C:\DOS后，就可以像执行内部命令一样执行外部命令。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;XCOPY C:\UCDOS\BOOK A:\BOOK/S <br>&nbsp;&nbsp;&nbsp; 此操作为拷贝C盘UCDOS下BOOK目录及其下的子目录到A盘为BOOK目录，本来应该在C盘DOS目录下操作的命令，或者不在C盘DOS目录下执行也得指明此命令是C 盘的DOS目录下的外部命令，却可以直接使用。试比较：<br>&nbsp;&nbsp;&nbsp; 设置路径前的操作：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;XCOPY C:\UCDOS\BOOK A:\BOOK/S&#8595;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者用：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;C:\DOS\XCOPY C:\UCDOS\BOOK A:\BOOK/S&#8595;<br>&nbsp;&nbsp;&nbsp; 但是设置 PATH=C:\DOS 后，就可以直接使用：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;XCOPY C:\UCDOS\BOOK A:\BOOK/S&#8595;<br>&nbsp;&nbsp;&nbsp; 此三种操作结果完全相同。 </p>
<p>二、常用外部命令 </p>
<p>&nbsp;&nbsp;&nbsp; 外部命令是指存放在 C或 A盘 DOS目录（或C:\Windows\command）中(或者是 A 盘根目录下)的扩展名为 COM 和 EXE 等的文件，使用这些命令时要先进入 DOS 目录（或C:\Windows\command）中(或者指明命令是在 C 或 A 盘的 DOS 目录中)，例如: </p>
<p>&nbsp;&nbsp;&nbsp; 1.显示磁盘目录的树形结构命令 TREE </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;TREE C:\&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示 C 盘根目录下磁盘上的目录树形结构<br>&nbsp;&nbsp;&nbsp; 命令执行后，屏幕显示类似于下面的内容：</p>
<p>&nbsp;&nbsp;&nbsp; 从屏幕显示的情况我们可以看出，在根目录下还有 KEYB、ZHIFA和 DOSCAI、DOS、WBZX、WINDOWS、WPS 七个子目录，WBZX 下有 WB、WT 和 WBXX 三个子目录，WINDOWS 下又有SYSTEM 和 WINABC 两个子目录，DOSCAI、DOS 和 WPS 目录下没有子目录。<br>&nbsp;&nbsp;&nbsp; 换句话说要想直接进入某一个深层子目录，需要是一条路径下的子目录，如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;CD\ZHIFA\ADS&#8595;&nbsp;&nbsp;&nbsp; 直接进入ZHIFA子目录下的ADS目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\ZHIFA\ADS&gt; <br>&nbsp;&nbsp;&nbsp; 如果使用下面的形式系统就会提示出错：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;CD\DSOCAI\WBXX&nbsp;&nbsp;&nbsp; 想要进入 DOSCAI 目录下的 WBXX 目录<br>&nbsp;&nbsp;&nbsp; 显然 DOSCAI下没有 WBXX子目录，WBXX 子目录是在 WBZX 目录下，系统提示：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Invalid directory<br>&nbsp;&nbsp;&nbsp; 说明不是一条路径，无法进入，此路不通。 </p>
<p>&nbsp;&nbsp;&nbsp; 2.删除目录树命令 DELTREE </p>
<p>&nbsp;&nbsp;&nbsp; 要想删除某一个目录及其下面的子目录、此目录和其下子目录中的所有文件时，使用这个命令。此命令功能强大，内容删除后不可恢复，不可随意乱用。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;C:\DOS\DELTREE C:\ABC&nbsp;&nbsp;&nbsp; 在A盘使用C盘DOS目录下的DELTREE命令进行删除C盘的ABC目录及其下的所有内容 </p>
<p>&nbsp;&nbsp;&nbsp; 3.磁盘格式化命令 FORMAT </p>
<p>&nbsp;&nbsp;&nbsp; 磁盘格式化的作用是给磁盘建立根目录和文件分配表，并且规划磁盘空间，使磁盘有利于数据的存储。需要时也可以使磁盘成为系统盘。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;FORMAT A:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把磁盘 A 格式化成为空磁盘<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;\DOS\FORMAT A:/S&nbsp;&nbsp;&nbsp; 把磁盘 A 格式化成为能够启动微机的系统盘 </p>
<p>&nbsp;&nbsp;&nbsp; 4.拷贝目录命令 XCOPY </p>
<p>&nbsp;&nbsp;&nbsp; XCOPY 的作用是拷贝整个目录以及其下的子目录和所有文件。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A:\&gt;C:\DOS\XCOPY A:\FOX C:\FOX/S<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 拷贝A盘FOX目录及其下面所有文件到C盘为FOX目录，/S参数意为包扩下面的子目录 </p>
<p>&nbsp;&nbsp;&nbsp; 5.整盘拷贝命令 DISKCOPY </p>
<p>&nbsp;&nbsp;&nbsp; 把一个磁盘上的全部内容依照原样完全复制到另一张磁盘上。例如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;DISKCOPY A: A: <br>&nbsp;&nbsp;&nbsp; 屏幕提示首先插入源盘，数据读出一部分后，要求插入目标盘，再提示插入源盘，读出部分数据后又提示插入目标盘，反复约三次，整盘拷贝完毕。<br>&nbsp;&nbsp;&nbsp; (1)拷贝的过程中目标盘直接被格式化，因此目标盘上原有数据会全部消失；<br>&nbsp;&nbsp;&nbsp; (2)必须是两个软盘间进行拷贝；<br>&nbsp;&nbsp;&nbsp; (3)可以在两个相同容量的驱动器间进行拷贝， 或者在同一驱动器中进行两个磁盘拷贝，不管怎样，两个磁盘的容量必须相同。 </p>
<p>&nbsp;&nbsp;&nbsp; DOS 的内部命令、外部命令有很多，这里只简单介绍几个常用的命令，想要了解更多的DOS命令，请参见DOS手册方面的资料。</p>
<p><br>&nbsp;&nbsp;&nbsp; 6.改变属性命令 ATTRIB </p>
<p>&nbsp;&nbsp;&nbsp; 给文件或目录增加或解除只读(R)、隐藏(H)、文档(A)和系统(S)4个属性。增加属性用&#8220;+&#8221;号，解除属性用&#8220;-&#8221;号。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;attrib -h -r -s -a c:\command.com&nbsp;&nbsp;&nbsp; (给C盘根目录下的COMMAND.COM文件去掉各个属性)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\DOS&gt;attrib +h +r +s +a D:\lyx.wps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (给D盘根目录下的lyx.wps文件增加各个属性) </p>
<p>三、在DOS状态下调用程序的多种方法 </p>
<p>&nbsp;&nbsp; 1.进入目录再敲目录名 </p>
<p>&nbsp;&nbsp; 所谓的进入目录再敲目录名，实际上是进入目录后执行的是和目录名相同的扩展名为.COM、.EXE和.BAT的文件名。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;cd zhifa&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入ZHIFA目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\ZHIFA&gt;zhifa&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 执行文件名为ZHIFA的程序<br>&nbsp;&nbsp; 又如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;cd wb&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入WB目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\WB&gt;wb&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行文件名为WB的程序 </p>
<p>&nbsp;&nbsp; 2.进入目录再敲扩展名为COM、EXE、BAT文件的文件名 </p>
<p>&nbsp;&nbsp; 进入目录之后，不管目录名是什么，再敲扩展名为COM、EXE、BAT文件的文件名。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;cd ucdos&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入UCDOS目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;UCDOS&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 执行文件名为UCDOS的程序<br>&nbsp;&nbsp; 我们还可以执行其他扩展名为.COM、.EXE和.BAT的程序：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;wps&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行文件名为WPS的程序<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\UCDOS&gt;quit&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 执行文件名为QUIT的程序 </p>
<p>&nbsp;&nbsp; 3.指明所要执行的程序所在的盘符、路径、文件名 </p>
<p>&nbsp;&nbsp; 指明所要执行的程序所在的盘符、路径、文件名，实际就是不在程序所在的目录内，执行程序。比如，C盘的根目录有WB子目录，该目录中有WB.EXE、WT.LIB、WB1.TXT、WB2.TXT、WB3.TXT等文件。现在我们要在 D盘执行这个WB.EXE程序，执行命令的方法是：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;C:\WB\WB&#8595; </p>
<p>&nbsp;&nbsp; 4.用Path命令为指定目录下的可执行文件设置查询路径； </p>
<p>&nbsp;&nbsp; 如果我们总是进入目录去执行程序，或者是指明程序所在的盘符、路径、文件名，那样十分不便，用Path命令为指定目录下的可执行文件设置查询路径后，就可以直接执行程序，就象在程序所在的目录中执行程序一样。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;path C:\WB&#8595;&nbsp;&nbsp;&nbsp; 给C盘的WB目录中的可执行文件设置路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;WB&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置路径后直接执行C盘的WB目录中的可执行文件WB.EXE<br>&nbsp;&nbsp;&nbsp; 当然，如果每次都这样使用的话也还是不方便，因此可以把PATH C:\UCDOS这样的命令加在自动批处理文件AUTOEXEC.BAT中。以后只要计算机一启动，这个路径就存在，就可以在任何位置直接执行这个程序了。 </p>
<p>&nbsp;&nbsp;&nbsp; 5.用 Append 命令为指定目录下的非可执行文件设置查询路径。 </p>
<p>&nbsp;&nbsp; 并不是所有的程序都能在用Path命令为指定目录下的可执行文件设置查询路径后，就都有效，有时我们还需要再用 Append 命令为指定目录下的非可执行文件设置查询路径。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;path C:\KV300&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给C盘的KV300目录中的可执行文件设置路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;C:\DOS\append C:\KV300&#8595;&nbsp;&nbsp;&nbsp;&nbsp; 给C盘的KV300目录中的非可执行文件设置路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\&gt;KV300&#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置路径后直接执行C盘的KV300目录中的可执行文件KV300.EXE</p>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/41354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-03-23 12:15 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/41354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows常用命令</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/40730.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 10 Mar 2008 03:19:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/40730.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/40730.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/40730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/40730.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/40730.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;windows常用命令一，ping 它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说，ping命令是第一个必须掌握的DOS命令，它所利用的原理是这样的：网络上的机器都有唯一确定的IP地址，我们给目标IP地址发送一个数据包，对方就要返回一个同样大小的数据包，根据返回的数据包我们可以确定目标主机的存在，可以初步判断目标主机的操作系统等。下面就...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yang55xiaoguang/articles/40730.html'>阅读全文</a><img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/40730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-03-10 11:19 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/40730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组策略打不开的原因</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/40727.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 10 Mar 2008 03:12:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/40727.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/40727.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/40727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/40727.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/40727.html</trackback:ping><description><![CDATA[<pre>解决办法如下：
方法一、1、点击『开始』菜单
2、点击&#8220;运行&#8221;
3、键入"regedit"（不包括引号）
4、在注册表键值HKEY_CURRENT_USERSoftwarePoliciesMicrosoftMMC
请将 RestrictToPermittedSnapins 的值设置为 0
方法二、1、点击『开始』菜单
2、点击&#8220;运行&#8221;
3、键入"regedit"（不包括引号）
4、在注册表键值 HKEY_CURRENT_USERSoftwarePoliciesMicrosoftMmc{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}Restrict_Run
和HKEY_CURRENT_USERSoftwarePoliciesMicrosoftMMC{0F6B957E-509E-11D1-A7CC-0000F87571E3}Restrict_Run
请将 Restrict_Run 的值设置为 0
5、修改完毕后重启。
方法三、1、点击『开始』菜单
2、点击&#8220;运行&#8221;
3、键入"regedit"（不包括引号）
4、在注册表键值HKEY_CLASSES_ROOTCLSID{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}InProcServer32
把其中的default改成：
%SystemRoot%System32GPEdit.dll
5、修改完毕后重启。
方法四、检查环境变量：
a、点击『开始』菜单
b、点击&#8220;控制面板&#8221;
c、在&#8220;控制面板&#8221;中打开&#8220;系统&#8221;
d、在&#8220;系统属性&#8221;中点击&#8220;高级&#8221;标签
e、在&#8220;高级&#8221;标签页中点击&#8220;环境变量&#8221;按钮
f、在&#8220;环境变量&#8221;中的&#8220;系统变量&#8221;框中的变量名为Path中修改变量值为：
%Systemroot%System32;%Systemroot%;%Systemroot%system32WBEM
方法五、运行regsvr32 filemgmt.dll
a、点击『开始』菜单
b、点击&#8220;运行&#8221;
c、键入"regsvr32 filemgmt.dll"（不包括引号）
方法六、如果组策略找不到 framedyn.dll，就可能会出现这种错误。
如果使用安装脚本，要确保脚本置于系统路径中的%windir%system32wbem 目录下。
默认情况下，%windir%system32wbem 已经存在于系统路径中，因此，如果您不使用安装脚本，
就不可能遇到这个问题。或试着将将Framedyn.dll文件从windowssystem32wbem目录下拷贝到windowssystem32目录下！</pre>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/40727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-03-10 11:12 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/40727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ping 命令的应用</title><link>http://www.cnitblog.com/yang55xiaoguang/articles/40725.html</link><dc:creator>可冉</dc:creator><author>可冉</author><pubDate>Mon, 10 Mar 2008 03:09:00 GMT</pubDate><guid>http://www.cnitblog.com/yang55xiaoguang/articles/40725.html</guid><wfw:comment>http://www.cnitblog.com/yang55xiaoguang/comments/40725.html</wfw:comment><comments>http://www.cnitblog.com/yang55xiaoguang/articles/40725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yang55xiaoguang/comments/commentRss/40725.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yang55xiaoguang/services/trackbacks/40725.html</trackback:ping><description><![CDATA[<pre>ping命令的用法
2003-10-26　网友评论 54 条　点击进入论坛
验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
参数
-t
Ping 指定的计算机直到中断。
-a
将地址解析为计算机名。
-n count
发送 count 指定的 ECHO 数据包数。默认值为 4。
-l length
发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节；最大值是 65,527。
-f
在数据包中发送&#8220;不要分段&#8221;标志。数据包就不会被路由上的网关分段。
-i ttl
将&#8220;生存时间&#8221;字段设置为 ttl 指定的值。
-v tos
将&#8220;服务类型&#8221;字段设置为 tos 指定的值。
-r count
在&#8220;记录路由&#8221;字段中记录传出和返回数据包的路由。count 可以指定最少 1 台，最多 9 台计算机。
-s count
指定 count 指定的跃点数的时间戳。
-j computer-list
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔（路由稀疏源）IP 允许的最大数量为 9。
-k computer-list
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔（路由严格源）IP 允许的最大数量为 9。
-w timeout
指定超时间隔，单位为毫秒。
destination-list
指定要 ping 的远程计算机
</pre>
<img src ="http://www.cnitblog.com/yang55xiaoguang/aggbug/40725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yang55xiaoguang/" target="_blank">可冉</a> 2008-03-10 11:09 <a href="http://www.cnitblog.com/yang55xiaoguang/articles/40725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>