﻿<?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博客-黑虫Linux空间</title><link>http://www.cnitblog.com/CrackSky/</link><description>人与人之间的区别在于思维方式的不同！</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 06:00:40 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 06:00:40 GMT</pubDate><ttl>60</ttl><item><title>MySQL服务器安装完之后如何调节性能[转载]</title><link>http://www.cnitblog.com/CrackSky/archive/2008/08/29/48500.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Fri, 29 Aug 2008 02:03:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2008/08/29/48500.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/48500.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2008/08/29/48500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/48500.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/48500.html</trackback:ping><description><![CDATA[<span class=oblog_text>
<p><span class=oblog_text><span class=oblog_text>转自：<a href="http://news.csdn.net/n/20061122/98014.html">http://news.csdn.net/n/20061122/98014.html</a></span></span></p>
<p><br><span class=oblog_text><span class=oblog_text></span></span></p>
</span>
<div style="TEXT-ALIGN: center"><span class=oblog_text>
<p><a href="http://news.csdn.net/n/20061122/98014.html"><span class=oblog_text><strong>MySQL服务器安装完之后如何调节性能</strong></span></a></p>
</span></div>
<span class=oblog_text>
<p>My favorite question during Interview for people to work as MySQL DBAs oｒ be involved with MySQL Performance in some way is to ask them what should be tuned in MySQL Server straight after installation, assuming it was installed with default settings.</p>
<p>在面试MySQL DBA或者那些打算做MySQL性能优化的人时，我最喜欢问题是：MySQL服务器按照默认设置安装完之后，应该做哪些方面的调节呢？</p>
<p>I&#8217;m surprised how many people fail to provide any reasonable answer to this question, anｄ how many servers are where in wild which are running with default settings.</p>
<p>令我很惊讶的是，有多少人对这个问题无法给出合理的答案，又有多少服务器都运行在默认的设置下。</p>
<p>Even though you can tune quite a lot of variables in MySQL Servers only few of them are really important for most common workload. After you get these settings right other changes will most commonly offer only incremental performance improvements.</p>
<p>尽管你可以调节很多MySQL服务器上的变量，但是在大多数通常的工作负载下，只有少数几个才真正重要。如果你把这些变量设置正确了，那么修改其他变量最多只能对系统性能改善有一定提升。</p>
<p><strong>key_buffer_size</strong> - Very important if you use MyISAM tables. Set up to 30-40% of available memory if you use MyISAM tables exclusively. Right size depends on amount of indexes, data size anｄ workload - remember MyISAM uses OS cache to cache the data so you need to leave memory for it as well, anｄ data can be much larger than indexes in many cases. Check however if all of key_buffer is used over time - it is not rare to see key_buffer being set to 4G while combined size of .MYI files is just 1GB. This would be just a waste. If you use few MyISAM tables you&#8217;ll want to keep it lower but still at least 16-32Mb so it is large enough to accommodate indexes for temporary tables which are created on disk.</p>
<p><strong>key_buffer_size</strong> - 这对MyISAM表来说非常重要。如果只是使用MyISAM表，可以把它设置为可用内存的 30-40%。合理的值取决于索引大小、数据量以及负载 -- 记住，MyISAM表会使用操作系统的缓存来缓存数据，因此需要留出部分内存给它们，很多情况下数据比索引大多了。尽管如此，需要总是检查是否所有的 key_buffer 都被利用了 -- .MYI 文件只有 1GB，而 key_buffer 却设置为 4GB 的情况是非常少的。这么做太浪费了。如果你很少使用MyISAM表，那么也保留低于 16-32MB 的 key_buffer_size 以适应给予磁盘的临时表索引所需。</p>
<p><strong>innodb_buffer_pool_size</strong> This is very important variable to tune if you&#8217;re using Innodb tables. Innodb tables are much more sensitive to buffer size compared to MyISAM. MyISAM may work kind of OK with default key_buffer_size even with large data set but it will crawl with default innodb_buffer_pool_size. Also Innodb buffer pool caches both data anｄ index pages so you do not need to leave space for OS cache so values up to 70-80% of memory often make sense for Innodb only installations. Same rules as for key_buffer apply - if you have small data set anｄ it is not going to grow dramatically do not oversize innodb_buffer_pool_size you might find better use for memory available.</p>
<p><strong>innodb_buffer_pool_size</strong> - 这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以，然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来，无需留给操作系统太多的内存，因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 -- 如果你的数据量不大，并且不会暴增，那么无需把 innodb_buffer_pool_size 设置的太大了。</p>
<p><strong>innodb_additional_pool_size</strong> This one does not really affect performance too much, at least on OS with decent memory allocators. Still you might want to have it 20MB (sometimes larger) so you can see how much memory Innodb allocates for misc needs.</p>
<p><strong>innodb_additional_pool_size</strong> - 这个选项对性能影响并不太多，至少在有差不多足够内存可分配的操作系统上是这样。不过如果你仍然想设置为 20MB(或者更大)，因此就需要看一下Innodb其他需要分配的内存有多少。</p>
<p><strong>innodb_log_file_size</strong> Very important for write intensive workloads especially for large data sets. Larger sizes offer better performance but increase recovery times so be careful. I normally use values 64M-512M depending on server size.</p>
<p><strong>innodb_log_file_size</strong> 在高写入负载尤其是大数据集的情况下很重要。这个值越大则性能相对越高，但是要注意到可能会增加恢复时间。我经常设置为 64-512MB，跟据服务器大小而异。</p>
<p><strong>innodb_log_buffer_size </strong>Default for this one is kind of OK for many workloads with medium write load anｄ shorter transactions. If you have updatｅ activity spikes however oｒ work with blobs a lot you might want to increase it. Do not set it too high however as it would be waste of memory - it is flushed every 1 sec anyway so you do not need space for more than 1 sec worth of updates. 8MB-16MB are typically enough. Smaller installations should use smaller values.</p>
<p><strong>innodb_log_buffer_size </strong>默认的设置在中等强度写入负载以及较短事务的情况下，服务器性能还可以。如果存在更新操作峰值或者负载较大，就应该考虑加大它的值了。如果它的值设置太高了，可能会浪费内存 -- 它每秒都会刷新一次，因此无需设置超过1秒所需的内存空间。通常 8-16MB 就足够了。越小的系统它的值越小。</p>
<p><strong>innodb_flush_logs_at_trx_commit</strong> Crying about Innodb being 100 times slower than MyISAM ? You probably forgot to adjust this value. Default value of 1 will mean each updatｅ transaction commit (or each statement outside of transaction) will need to flush log to the disk which is rather expensive, especially if you do not have Battery backed up cache. Many applications, especially those moved from MyISAM tables are OK with value 2 which means do not flush log to the disk but only flush it to OS cache. The log is still flushed to the disk each second so you normally would not loose more than 1-2 sec worth of updates. Value 0 is a bit faster but is a bit less secure as you can lose transactions even in case MySQL Server crashes. Value 2 only cause data loss with full OS crash.</p>
<p><strong>innodb_flush_logs_at_trx_commit</strong> 是否为Innodb比MyISAM慢1000倍而头大？看来也许你忘了修改这个参数了。默认值是 1，这意味着每次提交的更新事务（或者每个事务之外的语句）都会刷新到磁盘中，而这相当耗费资源，尤其是没有电池备用缓存时。很多应用程序，尤其是从 MyISAM转变过来的那些，把它的值设置为 2 就可以了，也就是不把日志刷新到磁盘上，而只刷新到操作系统的缓存上。日志仍然会每秒刷新到磁盘中去，因此通常不会丢失每秒1-2次更新的消耗。如果设置为 0 就快很多了，不过也相对不安全了 -- MySQL服务器崩溃时就会丢失一些事务。设置为 2 指挥丢失刷新到操作系统缓存的那部分事务。</p>
<p><strong>table_cache</strong> - Opening tables can be expensive. For example MyISAM tables mark MYI header to mark table as currently in use. You do not want this to happen so frequently anｄ it is typically best to size your cache so it is large enough to keep most of your tables open. It uses some OS resources anｄ some memory but for modern hardware it is typically not the problem. 1024 is good value for applications with couple hundreds tables (remember each connection needs its own entry) if you have many connections oｒ many tables increase it larger. I&#8217;ve seen values over 100.000 used.</p>
<p><strong>table_cache</strong> -- 打开一个表的开销可能很大。例如MyISAM把MYI文件头标志该表正在使用中。你肯定不希望这种操作太频繁，所以通常要加大缓存数量，使得足以最大限度地缓存打开的表。它需要用到操作系统的资源以及内存，对当前的硬件配置来说当然不是什么问题了。如果你有200多个表的话，那么设置为 1024 也许比较合适（每个线程都需要打开表），如果连接数比较大那么就加大它的值。我曾经见过设置为 100,000 的情况。</p>
<p><strong>thread_cache</strong> Thread creation/destructions can be expensive, which happen at each connect/disconnect. I normally set this value to at least 16. If application has large jumps in amount of concurrent connections anｄ I see fast growth of<br><strong>Threads_Created</strong> variable I boost it higher. The goal is not to have threads created in normal operation.</p>
<p><strong>thread_cache</strong> -- 线程的创建和销毁的开销可能很大，因为每个线程的连接/断开都需要。我通常至少设置为 16。如果应用程序中有大量的跳跃并发连接并且 <strong>Threads_Created</strong> 的值也比较大，那么我就会加大它的值。它的目的是在通常的操作中无需创建新线程。</p>
<p><strong>query_cache</strong> If your application is read intensive anｄ you do not have application level caches this can be great help. Do not set it too large as it may slow things down as its maintenance may get expensive. Values from 32M to 512M normally make sense. Check it however after a while anｄ see if it is well used. For certain workloads cache hit ratio is lower than would justify having it enabled. </p>
<p><strong>query_cache</strong> -- 如果你的应用程序有大量读，而且没有应用程序级别的缓存，那么这很有用。不要把它设置太大了，因为想要维护它也需要不少开销，这会导致MySQL变慢。通常设置为 32-512Mb。设置完之后最好是跟踪一段时间，查看是否运行良好。在一定的负载压力下，如果缓存命中率太低了，就启用它。</p>
<p><strong>Note:</strong> as you can see all of these are global variables. These variables depend on hardware anｄ mix of storage engines, while per session variables are typically workload specific. If you have simple queries there is no reason to increase <strong>sort_buffer_size</strong> even if you have 64GB of memory to waste. Furthermore doing so may decrease performance.<br>I normally leave per session variable tuning to second step after I can analyze workload.</p>
<p><strong>注意：</strong>就像你看到的上面这些全局表量，它们都是依据硬件配置以及不同的存储引擎而不同，但是会话变量通常是根据不同的负载来设定的。如果你只有一些简单的查询，那么就无需增加 <strong>sort_buffer_size</strong> 的值了，尽管你有 64GB 的内存。搞不好也许会降低性能。<br>我通常在分析系统负载后才来设置会话变量。</p>
<p>P.S Note MySQL distribution contains bunch of sample my.cnf files which may be great templates to use. Typically they would already be much better than defaults if you chose correct one. </p>
<p>P.S，MySQL的发行版已经包含了各种 my.cnf 范例文件了，可以作为配置模板使用。通常这比你使用默认设置好的多了。</p>
</span>
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script><img src ="http://www.cnitblog.com/CrackSky/aggbug/48500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2008-08-29 10:03 <a href="http://www.cnitblog.com/CrackSky/archive/2008/08/29/48500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]LINUX双网卡绑定一个IP步骤</title><link>http://www.cnitblog.com/CrackSky/archive/2008/07/10/46551.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Thu, 10 Jul 2008 03:57:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2008/07/10/46551.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/46551.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2008/07/10/46551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/46551.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/46551.html</trackback:ping><description><![CDATA[<p>1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件<br>------------------------------------------------------------<br>DEVICE=bond0<br>ONBOOT=yes<br>BOOTPROTO=none<br>IPADDR=192.168.128.225<br>NETMASK=255.255.255.224<br>GATEWAY=192.168.128.233<br>USERCTL=no<br>-------------------------------------------------------------</p>
<p>2.更改/etc/sysconfig/network-scripts/ifcfg-eth0网卡属性<br>-------------------------------------------------------------<br>DEVICE=eth0<br>ONBOOT=yes<br>BOOTPROTO=none<br>MASTER=bond0<br>USERCTL=no<br>-------------------------------------------------------------</p>
<p>3.更改/etc/sysconfig/network-scripts/ifcfg-eth1网卡的属性<br>-------------------------------------------------------------<br>DEVICE=eth1<br>ONBOOT=yes<br>BOOTPROTO=none<br>MASTER=bond0<br>USERCTL=no<br>-------------------------------------------------------------</p>
<p>4.编辑/etc/modprobe.conf文件,加入以下内容<br>-------------------------------------------------------------<br>alias bond0 bonding<br>options bond0 miimon=100 mode=0<br>-------------------------------------------------------------</p>
<p>5.加入/etc/rc.d/rc.local启动项<br>-------------------------------------------------------------<br>ifenslave bond0 eth0 eth1<br>-------------------------------------------------------------</p>
<p>6.启动网卡<br>-------------------------------------------------------------<br>ifconfig bond0 192.168.128.225 up<br>ifenslave bond0 eth0 eth1<br>-------------------------------------------------------------</p>
注:完成以上步骤一定要重启计算机,由于bonding需要加载驱动,本环境在CentOS4.5测试通过. 
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script><img src ="http://www.cnitblog.com/CrackSky/aggbug/46551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2008-07-10 11:57 <a href="http://www.cnitblog.com/CrackSky/archive/2008/07/10/46551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]SHELL脚本删除指定的文件夹</title><link>http://www.cnitblog.com/CrackSky/archive/2008/02/02/39561.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Sat, 02 Feb 2008 07:08:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2008/02/02/39561.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/39561.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2008/02/02/39561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/39561.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/39561.html</trackback:ping><description><![CDATA[文件夹的格式：<br>
例如&nbsp;&nbsp; 20071201-10&nbsp;&nbsp;&nbsp;&nbsp; 20071211-20&nbsp;&nbsp;&nbsp;&nbsp; 20071221-31<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 20080101-10&nbsp;&nbsp;&nbsp;&nbsp; 20080111-20&nbsp;&nbsp;&nbsp;&nbsp; 20080121-31<br>
<br>
注：以下SHELL脚本删除以上指定的文件夹<br>
<br>
#!/bin/bash<br>
#==================================<br>
#<br>
#Author: accepting<br>
#<br>
#Email: accepting@126.com<br>
#<br>
#Data:&nbsp; 2008.02.02<br>
#<br>
#Http://accepting.sharera.com<br>
#<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOWNLOADS="/home/medialib/download"<br>
#==================================<br>
#<br>
if [ $# -eq 0 ] ; then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CurYear=`date&nbsp;&nbsp; +%Y`&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; CurMonth=`date&nbsp;&nbsp; +%m`&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CurDay=`date&nbsp;&nbsp; +%d`&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetYear="$CurYear"&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMonth="`expr $CurMonth`"&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetDay="`expr $CurDay - 1`"<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ "$GetDay" -eq 10 ] ; then<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rm -rf "$DOWNLOADS$GetYear$GetMonth"01-10<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$GetYear$GetMonth"01-10<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif [ "$GetDay" -eq 20 ] ; then<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rm -rf "$DOWNLOADS$GetYear$GetMonth"11-20<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$GetYear$GetMonth"11-20<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif [ "$GetDay" -le 0 ] ; then<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMonth="`expr $CurMonth - 1`"<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ "$GetMonth" -le 0 ] ; then&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; GetYear=`expr $CurYear - 1`&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; GetMonth=12&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ `echo "$GetMonth" | wc -m` -ne 3 ] ; then&nbsp; <br>
&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; GetMonth=0$GetMonth&nbsp; <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rm -rf "$DOWNLOADS$GetYear$GetMonth"21-30<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$GetYear$GetMonth"21-31<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo --==该文件夹不存在!!!!==--<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br>
<br>
fi<br>
<br>  <img src ="http://www.cnitblog.com/CrackSky/aggbug/39561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2008-02-02 15:08 <a href="http://www.cnitblog.com/CrackSky/archive/2008/02/02/39561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]让cron自动压缩apache日志的shell脚本</title><link>http://www.cnitblog.com/CrackSky/archive/2008/01/11/38766.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Fri, 11 Jan 2008 10:10:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2008/01/11/38766.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/38766.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2008/01/11/38766.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/38766.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/38766.html</trackback:ping><description><![CDATA[#!/bin/sh<br>
#==================================<br>
#<br>
#Author: accepting<br>
#<br>
#Email: accepting@126.com<br>
#<br>
#Date:&nbsp;&nbsp;2008.01.11<br>
#<br>
#Http://accepting.sharera.com<br>
#<br>
#==================================<br>
#<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;LOG_FILE="/root/log/"&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//存放apache日志目录<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;end_filename="_access.log"&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//apache日志的命名格式后一部分<br>
#======================================================================<br>
if [ $# -eq 0 ] ; then<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CurYear=`date&nbsp; &nbsp;+%Y`&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;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CurMonth=`date&nbsp; &nbsp;+%m`&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CurDay=`date&nbsp; &nbsp;+%d`&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;GetYear="$CurYear"&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;GetMonth="$CurMonth"&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;GetDay="`expr&nbsp; &nbsp;$CurDay&nbsp; &nbsp;-&nbsp; &nbsp;1`"&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp; &nbsp;[&nbsp; &nbsp;"$GetDay"&nbsp; &nbsp;-le&nbsp; &nbsp;0&nbsp; &nbsp;]&nbsp; &nbsp;;&nbsp; &nbsp;then&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; GetMonth=`expr&nbsp; &nbsp;$CurMonth&nbsp; &nbsp;-&nbsp; &nbsp;1`&nbsp;&nbsp;<br>
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if&nbsp; &nbsp;[&nbsp; &nbsp;"$GetMonth"&nbsp; &nbsp;-le&nbsp; &nbsp;0&nbsp; &nbsp;]&nbsp; &nbsp;;&nbsp; &nbsp;then&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; GetYear=`expr&nbsp; &nbsp;$CurYear&nbsp; &nbsp;-&nbsp; &nbsp;1`&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; GetMonth=12&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; fi&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; case&nbsp; &nbsp;"$GetMonth"&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; in&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;1|3|5|7|8|10|12)&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;GetDay=31;;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;4|6|9|11)&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;GetDay=30;;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;2)&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if&nbsp; &nbsp;[&nbsp; &nbsp;`expr&nbsp; &nbsp;"$CurYear"&nbsp; &nbsp;%&nbsp; &nbsp;400`&nbsp; &nbsp;-eq&nbsp; &nbsp;0&nbsp; &nbsp;]&nbsp; &nbsp;;&nbsp; &nbsp;then&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;GetDay=29&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;elif&nbsp;&nbsp;[&nbsp;&nbsp;`expr&nbsp;&nbsp;"$CurYear" % 4` -eq&nbsp;&nbsp;0&nbsp;&nbsp;-a&nbsp;&nbsp;`expr&nbsp;&nbsp;"$CurYear"&nbsp;&nbsp;%&nbsp;&nbsp;100` -ne&nbsp;&nbsp;0 ]&nbsp;&nbsp;;&nbsp;&nbsp;then <br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;GetDay=29&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&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;GetDay=28&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;fi&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; esac&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;fi&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp; &nbsp;[&nbsp; &nbsp;`echo&nbsp; &nbsp;"$GetMonth"&nbsp; &nbsp;|&nbsp; &nbsp;wc&nbsp; &nbsp;-m`&nbsp; &nbsp;-ne&nbsp; &nbsp;3&nbsp; &nbsp;]&nbsp; &nbsp;;&nbsp; &nbsp;then&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; GetMonth=0$GetMonth&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;fi&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp; &nbsp;[&nbsp; &nbsp;`echo&nbsp; &nbsp;"$GetDay"&nbsp; &nbsp;|&nbsp; &nbsp;wc&nbsp; &nbsp;-m`&nbsp; &nbsp;-ne&nbsp; &nbsp;3&nbsp; &nbsp;]&nbsp; &nbsp;;&nbsp; &nbsp;then&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; GetDay=0$GetDay&nbsp;&nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;fi<br>
&nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//得到apache日志命名格式前一部分<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;first_filename=$GetYear$GetMonth$GetDay<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//判断apache日志是否存在<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;[ -f $LOG_FILE$first_filename$end_filename&nbsp; &nbsp; ]&nbsp; &nbsp;&nbsp; &nbsp;;&nbsp; &nbsp;then<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; gzip $LOG_FILE$first_filename$end_filename<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo =========== $first_filename$end_filename ===========<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo Compress $first_filename$end_filename is successfull!<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo ===========================================<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo&nbsp; &nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;else&nbsp; &nbsp;<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo ======== $first_filename$end_filename ========<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo $first_filename$end_filename not exist!<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo =====================================<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;fi<br>
<br>
fi
<br><br>这是我在为了方便维护服务器写的shell脚本,想让该脚本为你实现自动压缩请设置cron,apache还要设置时间记录日志格式,如:CustomLog "|/usr/sbin/rotatelogs /var/log/apache/default_log.%y%m%d 86400 480｜gzip" combined
。<br>
我不是程序员，只是喜欢玩一下新奇的玩法，请各路高手不要见笑。现在分享给有需要的朋友，如果有转载，请注明出处，本脚本第一次发布在<a href="http://accepting.sharera.com/" target="_blank">http://accepting.sharera.com</a>空间。
<br>
<br><br><br>   <img src ="http://www.cnitblog.com/CrackSky/aggbug/38766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2008-01-11 18:10 <a href="http://www.cnitblog.com/CrackSky/archive/2008/01/11/38766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]shell脚本创建多层目录</title><link>http://www.cnitblog.com/CrackSky/archive/2008/01/07/38553.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Mon, 07 Jan 2008 06:19:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2008/01/07/38553.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/38553.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2008/01/07/38553.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/38553.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/38553.html</trackback:ping><description><![CDATA[[原创—shell脚本第一次发布在http://accepting.sharera.com空间上]<br><br>#!/bin/bash<br>
for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z<br>
do<br>
&nbsp;&nbsp;&nbsp; mkdir /var/spool/mail/$file<br>
&nbsp;&nbsp;&nbsp; for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z<br>
&nbsp;&nbsp;&nbsp; do<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd /var/spool/mail/$file<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mkdir $file<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; done<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd ..<br>
&nbsp;&nbsp;&nbsp; done<br>
done<br><br>注：这是我为了创建哈希二级目录写的脚本，高手不要见笑！！！<br><br>   
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script><img src ="http://www.cnitblog.com/CrackSky/aggbug/38553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2008-01-07 14:19 <a href="http://www.cnitblog.com/CrackSky/archive/2008/01/07/38553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下sendmail的配置详解</title><link>http://www.cnitblog.com/CrackSky/archive/2007/11/25/36860.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Sun, 25 Nov 2007 11:23:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2007/11/25/36860.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/36860.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2007/11/25/36860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/36860.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/36860.html</trackback:ping><description><![CDATA[<p><strong><span>Linux</span></strong><strong><span>下</span></strong><strong><span>sendmail</span></strong><strong><span>的配置详解</span></strong><strong></strong></p>
<p><span>首先我确定一下我要完成的任务</span></p>
<p><span>第一部，<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>完成邮件正常接收</span></p>
<p><span>第二部，<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>优化</span><span>sendmail</span><span>邮件服务器。</span></p>
<p><span>第三部，<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>配置带认证的邮件服务器。</span></p>
<p><span>第四部，<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>安装</span><span>openmail</span><span>。</span><span>web</span><span>页面的</span><span>sendmail</span></p>
<p><strong>&nbsp;</strong></p>
<p><strong><font size=3><span>（一）安装前的准备：</span></font></strong></p>
<p><span>1</span><span>，</span><span>Linux</span><span>版本：我的是（企业版，至于红帽</span><span>9</span><span>已经不能得到升级和技术支持，所以现在都用企业版。）：</span></p>
<p><span>[root@tpwb /]# uname -r</span></p>
<p><strong><span>2.6.9-34.EL</span></strong><strong><span>（版本内核）</span></strong><strong></strong></p>
<p><span>2</span><span>，</span><span>Sendmail</span><span>版本：</span><span>8.13.1.2 (</span><span>系统自带的</span><span>) </span><span>应该是现在的最新版本。</span></p>
<p><span>[root@tpwb mail]# rpm -qa|grep sendmail</span></p>
<p><span>sendmail-cf-8.13.1-2</span></p>
<p><span>sendmail-devel-8.13.1-2</span></p>
<p><span>sendmail-doc-8.13.1-2</span></p>
<p><span>sendmail-8.13.1-2</span></p>
<p><strong><span>3</span></strong><strong><span>，远程软件</span></strong><strong></strong></p>
<p><span>SecureCRT5,</span><span>去百度搜索一下多的事。也可以从我网吧的网页下载。</span><span><a href="http://www.tpwb.cn/"><font color=#0000ff>http://www.tpwb.cn</font></a></span></p>
<p><span>上面也有如何使用这款软件的说明。当然你不用也可以。</span></p>
<p><strong><span>4</span></strong><strong><span>，命令术语的了解：</span></strong><strong></strong></p>
<p><span>要用到的命令：</span><span>rpm </span><span>，</span><span>ls, cd, m4 &gt;, makemap hash, vi</span><span>，</span><span>netstat ,reboot</span><span>，</span><span>service,</span></p>
<p><span>关于</span><span>linux</span><span>基础知识你可以去看我的另一篇文章&#8220;</span><span>linux</span><span>基础知识&#8221;</span></p>
<p><span>在这里我只讲</span><span>Sendmail</span><span>的配置，同样推荐一个网址：上面也有关于</span><span>Sendmail</span><span>配置的信息。</span></p>
<p><span>可以作为参考</span></p>
<p><span>http://www.testtimes.net/blog/blog.php?do-showone-tid-23.html</span></p>
<p><strong><span>5</span></strong><strong><span>关于邮件服务器的一些相关知识（强烈建议先看一下）</span></strong><strong></strong></p>
<p><strong><span>一，电子邮件系统的组成</span></strong><strong></strong></p>
<p><span>5</span><span>部分：</span><span>MTA</span><span>，</span><span>MSA</span><span>，</span><span>MUA</span><span>，</span><span>MDA</span><span>，</span><span>MAA</span></p>
<p><span>1，<span>&nbsp;&nbsp; </span></span><span>邮件用户代理（</span><span>Mail User Agent</span><span>，</span><span>MUA</span><span>）</span></p>
<p><span>MUA</span><span>是一个邮件系统的客户端程序，它提供了阅读，发送和接受电子邮件的用户接口。</span></p>
<p><span>最常用的</span><span>MUA</span><span>有：</span><span>linux</span><span>中的</span><span>mail</span><span>，</span><span>elm</span><span>，</span><span>pine</span><span>等。</span><span>Windows</span><span>的</span><span>outlook </span><span>，</span><span>foxmail</span><span>等</span></p>
<p><span>2，<span>&nbsp;&nbsp; </span></span><span>邮件代理器（</span><span>Mail Transfer Agent</span><span>，</span><span>MTA</span><span>）</span></p>
<p><span>MTA</span><span>负责邮件的存储和转发（</span><span>store and forward</span><span>）。</span><span>MTA</span><span>监视用户代理的请求，根据电子邮件的目标地址找出对应的邮件服务器，将信件在服务器之间传输并且将接受到的邮件进行缓冲。</span></p>
<p><span>在</span><span>linux</span><span>下的</span><span>MTA</span><span>程序有：</span><span>sendmail</span><span>，</span><span>qmail</span><span>等，</span></p>
<p><span>3，<span>&nbsp;&nbsp; </span></span><span>邮件提交代理（</span><span>Mail Submmission Agent</span><span>，</span><span>MSA</span><span>）</span></p>
<p><span>MSA</span><span>负责消息有</span><span>MTA</span><span>发送之前必须完成的所有准备工作和错误检测，</span><span>MSA</span><span>就像在</span><span>MUA</span><span>和</span><span>MTA</span><span>之间插入了一个头脑清醒的检测员对所有的主机名，从</span><span>MUA</span><span>得到的信息头等信息进行检测。</span></p>
<p><span>4，<span>&nbsp;&nbsp; </span></span><span>邮件投递代理（</span><span>Mail Ddlivery Agent</span><span>，</span><span>MDA</span><span>）</span></p>
<p><span>MDA</span><span>从</span><span>MTA</span><span>接收邮件并进行适当的本地投递，可以投递个一个本地用户，一个邮件列表，一个文件或是一个程序。</span></p>
<p><span>Linux</span><span>下常用的</span><span>MDA</span><span>是</span><span>mail.local</span><span>，</span><span>smrsh</span><span>和</span><span>procmail</span><span>（</span><span>www.procmail.org</span><span>）</span></p>
<p><span>5，<span>&nbsp;&nbsp; </span></span><span>邮件访问代理（</span><span>Mail Access Agent</span><span>，</span><span>MAA</span><span>）</span></p>
<p><span>MAA</span><span>用于将用户连接到系统邮件库，使用</span><span>POP</span><span>或</span><span>IMAP</span><span>协议收取邮件。</span></p>
<p><span>Linux</span><span>下常用的</span><span>MAA</span><span>有</span><span>UW-IMAP</span><span>，</span><span>Cyrus-IMAP</span><span>，</span><span>COURIER-IMAP</span><span>等</span></p>
<p>&#160;</p>
<p>&nbsp;</p>
<p><span><span><strong>二，电子邮件协议</strong></span></p>
<p><span><span>1，<span>&nbsp;&nbsp; </span></span></span><span>SMTP</span></p>
<p><span>SMTP(Simple Mail Transfer Potocol,</span><span>简单邮件传输协议</span><span>)</span><span>，是用来接受和发送电子邮件的</span><span>TCP/IP</span><span>协议，通常用于把电子邮件从客户端传输到服务器，或者从某一台服务器传输到另一个服务器。工作方式是连接远程主机的</span><span>25</span><span>端口，然后以</span><span>SMTP</span><span>命令上传邮件。它是目前</span><span>Internet</span><span>上传电子邮件的</span><span> </span><span>协议，一般主机与主机之间交换邮件大部分都是用此协议。</span></p>
<p><span><span>2，<span>&nbsp;&nbsp; </span></span></span><span>POP3</span></p>
<p><span>POP3</span><span>（</span><span>Post Office Protocol,</span><span>邮局协议，目前上第三版本）是关于接受电子邮件的客户机</span><span>/</span><span>服务器协议。工作方式是客户端程序连接远程主机的</span><span>110</span><span>端口，然后一</span><span>POP</span><span>命令下载服务器上的邮件到本地硬盘，然后本机就可在离线的情况下阅读邮件，</span><span>POP3</span><span>是</span><span>initernet</span><span>上传输电子邮件到本机的第一标准协议。</span></p>
<p><span><span>3，<span>&nbsp;&nbsp; </span></span></span><span>IMAP</span></p>
<p><span>IMAP</span><span>（</span><span>Internet Message Access Protocol,</span><span>网际消息访问协议目前</span><span> </span><span>第四版）类似</span><span>POP3</span><span>，但比</span><span>POP3</span><span>功能更强大</span></p>
<p><span><span>4，<span>&nbsp;&nbsp; </span></span></span><span>MIME</span></p>
<p><span>MIME</span><span>（</span><span>Multipurpose Internet Mail Extension.</span><span>多用途因特网邮件扩充）是为了帮助协调和统一为发送二进制数据而发明的多种编码方案。</span></p>
<p><span>三，电子邮件与</span><span>DNS</span></p>
<p><span>当邮件服务器程序得到一封待发的邮件时，它首先需要根据目标地址确定将信件投递给哪一个服务器。这是通过</span><span>DNS</span><span>实现的</span></p>
<p><span>在</span><span>DNS</span><span>数据库中，有一个很重要的记录，就是邮件交换（</span><span>Mail Exchange </span><span>，</span><span>MX</span><span>）记录</span></p>
<p><span>MX</span><span>记录用于告知</span><span>MTA</span><span>将邮件传递到何处。</span><span>MX</span><span>记录中包含了出现在电子邮件地址中的主机名。</span></p>
<p><span>四，邮件中继</span></p>
<p><span>就是当邮件向目的地址传输时，一旦源地址和目的地址都不是本地系统，那么本地系统就是邮件的中继（中转站）</span></p>
<p></span>&nbsp;</p>
<p><span><font color=#ff0000>&nbsp;</font></span></p>
<p><strong><span><font color=#ff0000>只要你仔细阅读了上面的文章，相信你会对邮件服务器有更深刻的了解，同时也能更准确的排除邮件服务器系统一些错误。</font></span></strong><strong></strong></p>
<p>&nbsp;</p>
<p><strong>&nbsp;</strong></p>
<p><font size=3><strong><span>（二）</span><span>Sendmail</span></strong><strong><span>的配置</span></strong></font></p>
<p><span>配置前我先说一下：我采用的是公网</span><span>IP</span><span>。所用域名是：</span><span>tpwb.cn</span><span>。</span></p>
<p><span>我们先确定一下自己的</span><span>NDS</span><span>服务器。看看我们开通</span><span>MX</span><span>记录没有。</span></p>
<p><span>开通</span><span>MX</span><span>记录后我们才能用域名来收发邮件</span></p>
<p><span>如何开通，我推荐一个网址：</span><strong></strong></p>
<p><strong><span><a href="http://www.magicwinmail.com/technic_net_mx.htm"><font color=#800080>http://www.magicwinmail.com/technic_net_mx.htm</font></a></span></strong></p>
<p><span>注：如果你是免费域名，采用花生壳等软件的话，一样要开通</span><span>MX</span></p>
<p><span>如何开通，网上有。如果你找不到的话，或者在</span><span>linux</span><span>下安装花生壳有问题的话可以给我留言。我会尽快给你答复。这里不做讨论了。</span><strong></strong></p>
<p><strong><span>下面看一下我的</span></strong><strong><span>MX</span></strong></p>
<p><span>[root@tpwb mail]# nslookup</span></p>
<p><span>&gt; set q=mx</span></p>
<p><span>&gt; tpwb.cn</span></p>
<p><span>Server:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>202.106.196.115</span></p>
<p><span>Address:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>202.106.196.115#53</span><strong></strong></p>
<p><span>Non-authoritative answer:</span></p>
<p><strong><span>tpwb.cn mail exchanger = 10 211.101.46.251. </span></strong><strong><span>（或者是你的域名）</span></strong><strong></strong></p>
<p><span>211.101.46.251</span><span>是我的</span><span>IP</span><span>，</span><span>tpwb.cn</span><span>是我的域名。</span></p>
<p><span>如果你和我的类似，那么咱们开始下一部</span></p>
<p><span>我们先查看一下</span><span>mail</span><span>目录下的文件，我们一会将会对它们进行更改</span></p>
<p><span>[root@tpwb ~]# cd /etc/mail</span></p>
<p><span>[root@tpwb mail]# ls</span></p>
<p><strong><span>access&nbsp;</span></strong><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>helpfile<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Makefile<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>submit.cf<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>virtusertable</span></p>
<p><span>access.db<span>&nbsp;&nbsp;&nbsp; </span></span><strong><span><span>&nbsp;&nbsp;&nbsp;</span>local-host-names</span></strong><span>&nbsp;sendmail.cf<span>&nbsp;&nbsp; </span>submit.cf.bak&nbsp;virtusertable.db</span><strong></strong></p>
<p><span>domaintable<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>mailertable<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>&nbsp;sendmail.mc </span></strong><span><span>&nbsp;&nbsp;</span>submit.mc</span></p>
<p><span>domaintable.db&nbsp;mailertable.db<span>&nbsp;&nbsp;&nbsp; </span>spamassassin&nbsp;trusted-users</span><strong></strong></p>
<p><span>1，<span>&nbsp;&nbsp; </span></span><strong><span>access </span></strong><span>数据库文件，用于配置邮件中继。</span></p>
<p><strong><span>2，<span>&nbsp;&nbsp; </span></span></strong><strong><span>sendmail.mc</span></strong><span>，</span><span>sendmail</span><span>的主要配置文件。</span><strong></strong></p>
<p><span>3</span><span>、</span><strong><span>local-host-names</span></strong><span>域名文件</span><span> </span><span>可以用他来实现虚拟域名或多域名支持。</span></p>
<p><span>4</span><span>、</span><span>mail</span><span>别名文件</span><span>aliases</span><span>。</span></p>
<p><span>5</span><span>、邮件控制文件</span></p>
<p><span>relay</span><span>、</span><span>ok</span><span>、</span><span>reject</span><span>和</span><span>discard</span><span>。</span><span> </span></p>
<p><span>relay: </span><span>可以实现转发。</span><span> </span></p>
<p><span>ok: </span><span>是用来允许用户的任意访问，它会覆盖任何其它已建立的检查（实际设置中，最好不要设为这项，除非你对该用户是绝对信任的）；</span><span> </span></p>
<p><span>reject: </span><span>可以实现对来访地址的拒绝，它根本就不容许该地址与你的邮件服务器进行连接通信；</span><span> </span></p>
<p><span>discard: </span><span>的作用是在接收到传输的邮件消息后，把它丢弃掉。在发送者看来，他的邮件的确是接收了，但他并不知道，发送的目的地址根本不可能接收到他的邮件，服务器巧妙地欺骗了他。</span></p>
<p><strong><span>我在这里这是简单介绍一下，详细的解释自己去查找资料，我以后也会在写关于服务器相关术语的文章。</span></strong><strong></strong></p>
<p><span>我们首先看一下</span><span>sendmail.mc</span><span>这个文件的内容</span></p>
<p><span>[root@tpwb ~]# cat /etc/mail/sendmail.mc</span></p>
<p><span>divert(-1)dnl</span></p>
<p><span>dnl #</span></p>
<p><span>dnl # This is the sendmail macro config file for m4. If you make changes to</span></p>
<p><span>dnl # /etc/mail/sendmail.mc, you will need to regenerate the</span></p>
<p><span>dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is</span></p>
<p><span>dnl # installed and then performing a</span></p>
<p><span>dnl #</span></p>
<p><span>dnl #<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>make -C /etc/mail</span></p>
<p><span>dnl #</span></p>
<p><strong><span>include(`/usr/share/sendmail-cf/m4/cf.m4')dnl<span>&nbsp;&nbsp; </span></span></strong><strong><span>（将</span></strong><strong><span>sendmail-cf/m4/cf.m4</span></strong><strong><span>包含进来）</span></strong><strong></strong></p>
<p><strong><span>VERSIONID(`setup for Red Hat Linux')dnl </span></strong><strong><span>（定义版本信息）</span></strong><strong></strong></p>
<p><strong><span>OSTYPE(`linux')dnl </span></strong><strong><span>（选择包含操作系统指定属性的文件）</span></strong><strong></strong></p>
<p><span>dnl #</span></p>
<p><span>dnl # default logging level is 9, you might want to set it higher to</span></p>
<p><span>dnl # debug the configuration<br></span></p>
<p><span
<div %><br><br>文章来自：<a href="http://blog.chinaunix.net/u/12857/showart_239525.html">http://blog.chinaunix.net/u/12857/showart_239525.html</a></p>
</span>
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script>
 <img src ="http://www.cnitblog.com/CrackSky/aggbug/36860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2007-11-25 19:23 <a href="http://www.cnitblog.com/CrackSky/archive/2007/11/25/36860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通用Linux启动服务SHELL</title><link>http://www.cnitblog.com/CrackSky/archive/2007/09/02/32757.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Sat, 01 Sep 2007 22:04:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2007/09/02/32757.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/32757.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2007/09/02/32757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/32757.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/32757.html</trackback:ping><description><![CDATA[<p>#!/bin/sh</p>
<p># Source function library.<br>. /etc/rc.d/init.d/functions</p>
<p># See how we were called.<br>case "$1" in<br>&nbsp; start)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -n "Starting XXXXX: "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# daemon XXXXX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/sbin/XXXXX start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动服务程序的路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "&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;&nbsp; [&nbsp; OK&nbsp; ]"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch /var/lock/subsys/XXXXX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>&nbsp; stop)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -n "Shutting down XXXXX: "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;killproc XXXXX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f /var/lock/subsys/XXXXX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f /var/run/XXXXX.pid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>&nbsp; status)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status XXXXX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>&nbsp; restart)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$0 stop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$0 start<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>&nbsp; reload)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -n "Reloading XXXXX: "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;killproc XXXXX -HUP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>&nbsp; *)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Usage: $0 {start|stop|restart|reload|status}"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br>esac<br>&nbsp;<br>exit 0<br><br>注：XXXXX是服务名称。</p>
<img src ="http://www.cnitblog.com/CrackSky/aggbug/32757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2007-09-02 06:04 <a href="http://www.cnitblog.com/CrackSky/archive/2007/09/02/32757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VI编辑命令及实例</title><link>http://www.cnitblog.com/CrackSky/archive/2007/08/30/32627.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Thu, 30 Aug 2007 05:38:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2007/08/30/32627.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/32627.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2007/08/30/32627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/32627.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/32627.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！ <br><br>进入vi的命令 <br>vi filename :打开或新建文件，并将光标置于第一行首 <br>vi +n filename ：打开文件，并将光标置于第n行首 <br>vi + filename ：打开文件，并将光标置于最后一行首 <br>vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处 <br>vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename <br>vi filename....filename ：打开多个文件，依次进行编辑 <br><br>移动光标类命令<br>h ：光标左移一个字符 <br>l ：光标右移一个字符 <br>space：光标右移一个字符 <br>Backspace：光标左移一个字符 <br>k或Ctrl+p：光标上移一行 <br>j或Ctrl+n ：光标下移一行 <br>Enter ：光标下移一行 <br>w或W ：光标右移一个字至字首 <br>b或B ：光标左移一个字至字首 <br>e或E ：光标右移一个字至字尾 <br>) ：光标移至句尾 <br>( ：光标移至句首 <br>}：光标移至段落开头 <br>{：光标移至段落结尾 <br>nG：光标移至第n行首 <br>n+：光标下移n行 <br>n-：光标上移n行 <br>n$：光标移至第n行尾 <br>H ：光标移至屏幕顶行 <br>M ：光标移至屏幕中间行 <br>L ：光标移至屏幕最后行 <br>0：（注意是数字零）光标移至当前行首 <br>$：光标移至当前行尾 <br><br>屏幕翻滚类命令 <br>Ctrl+u：向文件首翻半屏 <br>Ctrl+d：向文件尾翻半屏 <br>Ctrl+f：向文件尾翻一屏 <br>Ctrl＋b；向文件首翻一屏 <br>nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。 <br><br>插入文本类命令 <br>i ：在光标前 <br>I ：在当前行首 <br>a：光标后 <br>A：在当前行尾 <br>o：在当前行之下新开一行 <br>O：在当前行之上新开一行 <br>r：替换当前字符 <br>R：替换当前字符及其后的字符，直至按ESC键 <br>s：从当前光标位置处开始，以输入的文本替代指定数目的字符 <br>S：删除指定数目的行，并以所输入文本代替之 <br>ncw或nCW：修改指定数目的字 <br>nCC：修改指定数目的行 <br><br>删除命令 <br>ndw或ndW：删除光标处开始及其后的n-1个字 <br>do：删至行首 <br>d$：删至行尾 <br>ndd：删除当前行及其后n-1行 <br>x或X：删除一个字符，x删除光标后的，而X删除光标前的 <br>Ctrl+u：删除输入方式下所输入的文本 <br><br>搜索及替换命令 <br>/pattern：从光标开始处向文件尾搜索pattern <br>?pattern：从光标开始处向文件首搜索pattern <br>n：在同一方向重复上一次搜索命令 <br>N：在反方向上重复上一次搜索命令 <br>：s/p1/p2/g：将当前行中所有p1均用p2替代 <br>：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代 <br>：g/p1/s//p2/g：将文件中所有p1均用p2替换 <br><br>选项设置 <br>all：列出所有选项设置情况 <br>term：设置终端类型 <br>ignorance：在搜索中忽略大小写 <br>list：显示制表位(Ctrl+I)和行尾标志（$) <br>number：显示行号 <br>report：显示由面向行的命令修改过的数目 <br>terse：显示简短的警告信息 <br>warn：在转到别的文件时若没保存当前文件则显示NO write信息 <br>nomagic：允许在搜索模式中，使用前面不带&#8220;\&#8221;的特殊字符 <br>nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始 <br>mesg：允许vi显示其他用户用write写到自己终端上的信息 <br><br>最后行方式命令 <br>：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下 <br>：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下 <br>：n1,n2 d ：将n1行到n2行之间的内容删除 <br>：w ：保存当前文件 <br>：e filename：打开文件filename进行编辑 <br>：x：保存当前文件并退出 <br>：q：退出vi <br>：q!：不保存文件并退出vi <br>：!command：执行shell命令command <br>：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入 <br>：r!command：将命令command的输出结果放到当前行 <br><br>寄存器操作 <br>"?nyy：将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字 <br>"?nyw：将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字 <br>"?nyl：将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字 <br>"?p：取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字 <br>ndd：将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中。<br><br><strong>VI的使用</strong><br>--------------------------------------------------------------------------------<br><br><br>一、插入文本 <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├──┼────────────┤ <br>│i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │在当前字符前插入文本&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│ <br>├──┼────────────┤ <br>│I&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>├──┼────────────┤ <br>│a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │在当前字符后添加文本&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│ <br>├──┼────────────┤ <br>│A&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>├──┼────────────┤ <br>│o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │在当前行后面插入一空行&nbsp;&nbsp;&nbsp;&nbsp;│ <br>├──┼────────────┤ <br>│O&nbsp;&nbsp;&nbsp;&nbsp; │在当前行前面插入一空行&nbsp;&nbsp;&nbsp;&nbsp;│ <br>├──┼────────────┤ <br>│R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │以改写方式输入文本&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>└──┴────────────┘ <br>二、移动光标 <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├─────┼───────────┤ <br>│j或下箭头&nbsp;&nbsp; │向下移动一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├─────┼───────────┤ <br>│k或上箭头 │向上移动一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├─────┼───────────┤ <br>│h或左箭头 │左移一个字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├─────┼───────────┤ <br>│l或右箭头&nbsp;&nbsp; │右移一个字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├─────┼───────────┤ <br>│w&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; │ <br>├─────┼───────────┤ <br>│W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │右移一个以空格分隔的词│ <br>├─────┼───────────┤ <br>│b&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; │ <br>├─────┼───────────┤ <br>│B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│左移一个以空格分隔的词│ <br>├─────┼───────────┤ <br>│0&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;&nbsp;&nbsp;&nbsp; │ <br>│Ctrl-F&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; │ <br>├─────┼───────────┤ <br>│Ctrl-B&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; │ <br>├─────┼───────────┤ <br>│nG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │到第n行&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>├─────┼───────────┤ <br>│G&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; │ <br>└─────┴───────────┘ <br>三、替换文本 <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; │ <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; │ <br>├─────┼──────┤ <br>│(&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; │到句子的末尾│ <br>├─────┼──────┤ <br>│{&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;│到段落的末尾│ <br>└─────┴──────┘ <br><br>四、删除文本 <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├───┼───────────┤ <br>│r&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>├───┼───────────┤ <br>│c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │修改文本直到按下Esc健&nbsp;&nbsp; │ <br>├───┼───────────┤ <br>│cw&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>├───┼───────────┤ <br>│cnw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │修改接下来的n个词&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>└───┴───────────┘ <br>五、文本编辑 <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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├──┼──────────────────────┤ <br>│yy&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; │ <br>├──┼──────────────────────┤ <br>│yn&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; │ <br>├──┼──────────────────────┤ <br>│ynw&nbsp; │将后面的n个词移到缺省缓冲区中&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>├──┼──────────────────────┤ <br>│p&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;&nbsp;&nbsp; │ <br>│&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├──┼──────────────────────┤ <br>│P&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; │ <br>│&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>└──┴──────────────────────┘ <br>六、保存退出 <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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├───────────┼───────────────┤ <br>│zz&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;&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;│ <br>├───────────┼───────────────┤ <br>│:w filename&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;&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>├───────────┼───────────────┤ <br>│:W&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;&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;│ <br>├───────────┼───────────────┤ <br>│:x&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; │保存(如果当前文件修改过)并退出│ <br>├───────────┼───────────────┤ <br>│:q!&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>├───────────┼───────────────┤ <br>│:q&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; │退出vi&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ <br>└───────────┴───────────────┘ <br><br><br><br>VI常用技巧<br><br>ideal(2002-01-29 11:24)<br><br>〖返回〗〖转发〗<br><br>VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，但是因为它的命令集众多，很多人都不习惯使用它，其实您只需要掌握基本命令，然后加以灵活运用，就会发现它的优势，并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。 <br><br>一、基本命令介绍 <br><br>---- 1．光标命令 <br><br>k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键，但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。 <br>nG——跳转命令。n为行数，该命令立即使光标跳到指定行。 <br>Ctrl+G——光标所在位置的行数和列数报告。 <br>w、b——使光标向前或向后跳过一个单词。 <br>---- 2．编辑命令 <br>i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。 <br>cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。 <br>x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。 <br>---- 3．查找命令 <br>---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。 <br>---- 4．拷贝复制命令 <br>---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。 <br><br>二、常见问题及应用技巧 <br><br>---- 1．在一个新文件中读/etc/passwd中的内容，取出用户名部分。 <br>---- vi file <br>---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd <br>---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 <br>---- 您也可以在指定的行号后读入文件内容，例如使用命令&#8220;:3r /etc/passwd&#8221;从新文件的第3行开始读入 /etc/passwd的所有内容。 <br>---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 <br>---- #cat squid.conf.default | grep -v ^$ | grep -v ^# <br><br>---- 2．在打开一个文件编辑后才知道登录的用户对该文件没有写的权限，不能存盘，需要将所做修改存入临时文件。 <br>---- vi file <br>---- :w /tmp/1 保存所做的所有修改，也可以将其中的某一部分修改保存到临时文件，例如仅仅把第20～59行之间的内容存盘成文件/tmp/1，我们可以键入如下命令。 <br>---- vi file <br>---- :20,59w /tmp/1 <br><br>---- 3．用VI编辑一个文件，但需要删除大段的内容。 <br>---- 首先利用编辑命令&#8220;vi file&#8221;打开文件，然后将光标移到需要删除的行处按Ctrl+G显示行号，再到结尾处再按Ctrl+G，显示文件结尾的行号。 <br>---- :23,1045d 假定2次得到的行号为23和1045，则把这期间的内容全删除，也可以在要删除的开始行和结束行中用ma、mb命令标记，然后利用&#8220;:a,bd&#8221;命令删除。 <br><br>---- 4．在整个文件的各行或某几行的行首或行尾加一些字符串。 <br>---- vi file <br>---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入&#8220;some string&#8221;。 <br>---- :%s/$/some string/g 在整个文件每一行的行尾添加&#8220;some string&#8221;。 <br>---- :%s/string1/string2/g 在整个文件中替换&#8220;string1&#8221;成&#8220;string2&#8221;。 <br>---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的&#8220;string1&#8221;成&#8220;string2&#8221;。 <br>---- 注意: 其中s为substitute，%表示所有行，g表示global。 <br><br>---- 5．同时编辑2个文件，拷贝一个文件中的文本并粘贴到另一个文件中。 <br>---- vi file1 file2 <br>---- yy 在文件1的光标处拷贝所在行 <br>---- :n 切换到文件2 (n=next) <br>---- p 在文件2的光标所在处粘贴所拷贝的行 <br>---- :n 切换回文件1 <br><br>---- 6．替换文件中的路径。 <br>---- 使用命令&#8220;:%s#/usr/bin#/bin#g&#8221;可以把文件中所有路径/usr/bin换成/bin。也可以使用命令&#8220;:%s//usr/bin//bin/g&#8221;实现，其中&#8220;&#8221;是转义字符，表明其后的&#8220;/&#8221;字符是具有实际意义的字符，不是分隔符&nbsp;</p>
<br>
<script src=http://u.wyunion.com/l/tan/wytan.php?hl=akawks></script>
 <img src ="http://www.cnitblog.com/CrackSky/aggbug/32627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2007-08-30 13:38 <a href="http://www.cnitblog.com/CrackSky/archive/2007/08/30/32627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】Linux实践工程师学习笔记十六：DHCP服务器</title><link>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30943.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Mon, 30 Jul 2007 10:14:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30943.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/30943.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/30943.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/30943.html</trackback:ping><description><![CDATA[rpm包在第4张光盘dhcp-3.0.3-26.i386.rpm<br>编译安装方法<br>#tar zxvf dhcp-latest.tar.gz<br>#cd dhcp-3.0.3<br>#./configure<br>#make<br>#make install<br>#vi /etc/dhcpd.conf<br>#touch /var/state/dhcp/dhcpd.leases&nbsp;&nbsp;&nbsp;&nbsp; rpm安装不用touch，文件默认安装在/var/lib/dhcpd/dhcpd.leases<br>#dhcpd<br>&nbsp;<br>主要配置选项<br>1.默认网关<br>2.IP地址<br>3.子网掩码<br>4.DNS服务器地址<br>5.租用时间<br>/etc/dhcpd.conf：<br>ddns-update-style none;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须有的一句<br>subnet 192,168.0.0 netmask 255.255.255.0 {&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; option&nbsp;&nbsp;&nbsp;&nbsp; routers&nbsp;&nbsp;&nbsp; 192.168.0.22<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option&nbsp;&nbsp;&nbsp;&nbsp; subnet-mask&nbsp;&nbsp; 255.255.255.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option&nbsp;&nbsp;&nbsp;&nbsp; domain-name&nbsp; &#8220;chinaitlab.com&#8221;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option&nbsp;&nbsp;&nbsp;&nbsp; domain-name-servers&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.22;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.128 192.168.0.254;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-lease-time&nbsp;&nbsp; 21600;&nbsp;&nbsp;&nbsp; 6小时<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max-lease-time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 43200;&nbsp;&nbsp;&nbsp; 12小时<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; host mail {&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据网卡地址分配一个固定的IP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hardware Ethernet 12:34:56:78:ab:cd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fixed-address&nbsp; 192.168.0.5;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br>&nbsp;<br>服务器默认UDP67端口。<br>&nbsp;<br>Linux客户机的配置<br>修改/etc/sysconfig/network-scripts/ifcfg-eth0:<br>DEVICE=eth0<br>ONBOOT=yes<br>BOOTPROTO=dhcp<br>或使用netconfig配置动态地址，然后运行#service network restart<br>设定1分钟后执行指定操作：<br>#at now+1minutes<br>at&gt;&nbsp;&nbsp; service network restart<br>ctrl+D结束<br>调试服务器：<br>#tail /var/log/messages&nbsp;&nbsp; 查看日志信息<br>#more /var/lib/dhcpd/dhcpd.leases&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看IP分配情况<br>调试客户机：<br>Under unix:<br>#dhclient eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DHCP客户端工具，刷新网卡eh0，发送一个广播，重新请求一个IP<br>Under windows:<br>C:\&gt;ipconfig /renew<br>&nbsp;<br>应用案例<br>要求：<br>配置一台DHCP服务器，为100台主机分配地址，使用192.168.0.0/24网段，静态主机地址如下：<br>默认网关：192.168.0.254<br>DNS服务器：192.168.0.1<br>邮件服务器：192.168.0.2<br>DHCP服务器：192.168.0.254<br>解决方法：<br>option routers 192.168.0.254;<br>option domain-name-server 192.168.0.1;<br>range 192.168.0.3 192.168.0.102;<br>host ns {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hardware Ethernet 12:24:34:34:as:de;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fixed-address 192.168.0.1;<br>}<br>host mail {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hardware Ethernet 12:34:56:78:ab:cd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fixed-address 192.168.0.2;<br>}&nbsp; 
<img src ="http://www.cnitblog.com/CrackSky/aggbug/30943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2007-07-30 18:14 <a href="http://www.cnitblog.com/CrackSky/archive/2007/07/30/30943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】Linux实践工程师学习笔记十五：DNS服务器</title><link>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30942.html</link><dc:creator>黑虫</dc:creator><author>黑虫</author><pubDate>Mon, 30 Jul 2007 10:13:00 GMT</pubDate><guid>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30942.html</guid><wfw:comment>http://www.cnitblog.com/CrackSky/comments/30942.html</wfw:comment><comments>http://www.cnitblog.com/CrackSky/archive/2007/07/30/30942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/CrackSky/comments/commentRss/30942.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/CrackSky/services/trackbacks/30942.html</trackback:ping><description><![CDATA[<span style="FONT-WEIGHT: bold">安装BIND</span><br>1.去http://www.isc.org下载最新版本，如bind-9.3.2.tar.gz<br>2.编译安装<br>#tar zxvf bind-9.3.2.tar.gz<br>#cd bind-9.3.2<br>#./configure --sysconfdir=/etc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置文件放在/etc<br>#make<br>#make install<br>rpm包安装，程序放在/usr/sbin目录下，默认编译安装程序放在/usr/local目录下，编译安装需手工创建主配置文件<br>#vi /etc/named.conf<br>编译时，注意大括号前后需有空格，光盘有一个叫caching-nameserver的软件包，装完后会自动复制一份默认的一些配置文件。这里我们都是手工创建<br>option {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory &#8220;/var/named&#8221;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定服务器工作目录<br>};<br>zone &#8220;.&#8221; {&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; 根区，服务器必须知道如何查找根，因为这里没有根服务器的数据库。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type hint;&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; 所以定义为hint，链接到根的数据库，并指定链拉文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &#8220;name.ca&#8221;;<br>};<br>&nbsp;<br>#mkdir /var/named<br>named.ca用来保存根域服务器的地址，但现在不知道根域服务器地址到底是多少。下面演示如何查找根服务器地址产生named.ca文件：<br>首先我们找一个可用的DNS IP，利用此DNS查找根地址。<br>#echo &#8220;nameserver 192.58.128.30&#8221; &gt; /etc/resolv.conf<br>#dig -t NS .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (dig是一个挖掘DNS记录的工具)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t 指定类型为NS，即查找根DNS记录，查找后的结果：左边是根的域，右边是根服务器的主机名<br>#dig -t NS . &gt; /var/named/named.ca<br>有了根服务器后，这台DNS服务器就可启动了。<br>&nbsp;<br>用RNDC控制服务器<br>1.产生rndc控制文件<br>#rndc-confgen &gt;/etc/rndc.conf<br>#tail +13 /etc/rndc.conf &gt;&gt;/etc/named.conf<br>将配置文件13行起到结尾的内容追加到named.conf<br>2.启动named服务器，监视/var/log/messages<br>#named<br>#tail /var/log/messages<br>如有错误，根据提示解决，例如RPM包安装可能会提示无法打开/var/run/named/named.pid<br>可以用root用户删除/var/run/named目录，再重建一个。<br>3.测试rndc和解析效果<br>#rndc status<br>#echo &#8220;nameserver 127.0.0.1&#8221; &gt; /etc/resolv.conf<br>#host www.chinaunix.com<br>第一次解析主机后将信息存入缓存，以后再解析时就很快，只要有了根区就可以查到整个互联网。<br>&nbsp;<br>host,dig都是通过DNS查询，对于一台服务器来说，我们自己的应用环境总有一台叫localhost的主机，默认情况下localhost的主机总是在hosts文件定义，为取代hosts文件，需要把localhost加进DNS服务器，任何一台有网络的主机都 会有一个回环设备地址，回环设备地址没有相应的主机名，很多服务都 会起不来。<br>添加localhost域<br>#vi /etc/named.conf 添加<br>zone &#8220;localhost&#8221; {&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; 区名叫localhost<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;&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;&nbsp;&nbsp;&nbsp;&nbsp; file &#8220;named.local&#8221;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库文件（区文件）位置<br>};<br>编缉/var/named/named.local<br>@ 1D IN SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost. root (<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; 2006081201编号更新一次自己加1，当发生改变时，会通知其他域名服务器更新数据库<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; 1H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多少时间刷新其他DNS的数据库记录<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; 15M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主向从DNS服务器发送信息出现错误，会隔15分钟再重试<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; 1W&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1D )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 缓存保存时间，默认为1天<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&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; 指定这个域的DNS服务器<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定DNS服务器的IP地址<br>&nbsp;<br>在这个文件里必须指定这个文件所服务的域的范围，到底为哪个域服务，第一个字段，一般是域名或主机名，@表示当前的域名，就是前面zone后面的那句&#8221;localhost&#8221;,localhost将作为一个变量传递给named.local文件<br>第二个字段，表示域类型，IN为互联网类型<br>第三个字段，记录类型，任何区文件里都有一条SOA记录。还有其他记录类型，如NS域名服务器，A地址，接着后面是当前域的域名和管理者信息，管理者信息是一个邮箱地址，上面使用了缩写，全写应该是root.localhost.<br>注意不能用@,因为前面说过了，这是表示当前域名，并且最后是以点结束。<br>小括号前后要有空格，小括号包括的是整个域的管理信息。<br>localhost. IN NS localhost.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示localhost. 域的DNS服务器为localhost<br>localhost. IN A 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示localhost主机IP地址为127.0.0.1<br>主机名，域名要以点结尾，表示结束。相同记录可省略某个字段<br><br><span style="FONT-WEIGHT: bold">增加一个正向区</span><br>/etc/named.conf 添加<br>zone &#8220;chinaitlab.com&#8221; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &#8220;chinaitlab.com.zone&#8221;;<br>};<br>&nbsp;<br>/var/named/chinaitlab.com.zone:<br>@&nbsp;&nbsp;&nbsp; 1D&nbsp;&nbsp; IN&nbsp;&nbsp; SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chinaitlab.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root (<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; 2006081201<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; 1H<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; 15M<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; 1W<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; 1D )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; ns<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; MX 10 mail<br>ns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.22<br>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.1<br>news&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; CNAME&nbsp; www<br>&nbsp;<br>FQDN:完整的域名<br>A表示地址记录<br>SOA后跟当前域名，如果全写用点号结束，缩写则不用<br>root默认跟当前域名后缀，上面的root全写应为root.chinaitlab.com.<br>NS后必须跟主机名，不能跟IP地址<br>MX邮件交换机，指出当前域的邮件服务器<br>10为优先级<br>当指定了NS,MX记录，必须为他们指定一个IP地址<br>news是www的别名<br>#rndc reload&nbsp;&nbsp; 重新加载配置文件named.conf<br>#dig chinaitlab.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 测试，查询chinaitlab.com这个域的信息<br>#host www.chinaitlab.com&nbsp;&nbsp;&nbsp; 查询www.chinaitlab.com主机的IP（默认查询的是A记录）<br>&nbsp;<br>有时候NS记录会这样写<br>&#8230;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; @<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.22<br>前面省略的表示当前的域名，后面@表示当前域，这台主机虽然前后都可以用@，但@在NS表示的意思是主机而不是域。<br>#host -t NS chinaitlab.com<br>查询chinaitlab.com的DNS服务器是谁<br>#host -t A chinaitlab.com<br>查询chinaitlab.com这个域的A记录，即这个域的DNS服务器的IP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t 表示记录类型，可以跟SOA，NS，A等<br>dig&nbsp;&nbsp; 查询比较详细，host查询信息比较简洁。<br>为了可以使用缩写的主机名，可以<br>#echo &#8220;search chinaitlab.com&#8221; &gt;&gt;/etc/resolv.conf<br>这样#host www时，会自动在www后面补全要搜索的域名，相当于#host www.chinaitlab.com<br>小括号里的管理信息主要应用在主域服务器和辅助服务器之间。<br>可以在第一行加上一个全局变量$TTL 1D 表示生存周期，这样关于生存周期的字段就可省略。<br>（正向）一个区文件必须有一条SOA记录，NS记录和这条NS记录对应指出NS IP地址的记录<br>（反向）一个反向文件，必须有一条SOA，一条NS,一条PTR记录<br>&nbsp;<br><span style="FONT-WEIGHT: bold">127.0.0的反向区</span><br>反向区的区名由其IP反过来写加上.in-addr.arpa后缀，如127.0.0的反向区名：0.0.127.in-addr.arpa<br>vi /etc/named.conf 追加<br>zone &#8220;0.0.127.in-addr.arpa&#8221; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file&nbsp;&nbsp; &#8220;127.0.0.zone&#8221;;<br>};<br>编缉/var/named/127.0.0.zone:<br>$TTL 1D<br>@&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @&nbsp;&nbsp;&nbsp; root.localhost. (<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; 2006081201<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; 1H<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; 15M<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; 1W<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; 1D )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; localhost.<br>1&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PTR localhost.<br>在这个反向区文件里@表示0.0.127.in-addr.arpa区名，所以root不能简写，SOA后跟当前的服务范围，@表示服务范围是当前区，最后一条表示把127.0.0.1指向localhost.。1是简写，它表示1.0.0.127.in-addr.arpa<br>&nbsp;<br>如果是rpm包安装可以使用<br>#service named restart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重启服务器<br>#service named reload&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重新加载配置文件<br>但编译安装只能使用rndc<br>#rndc reload<br>测试<br>#host 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询地址指向的名称<br>#dig -x 127.0.0.1<br>&nbsp;<br>技巧：如在putty中运行vi,在vi里无法使用小键盘，设置putty的Teminal&#224;Features,打勾Disable application keypad mode<br>vi中删除行首字符<br>:.,$-1s/^#\ //<br>.当前行&nbsp;&nbsp; s 替换&nbsp;&nbsp;&nbsp; // 删除<br>,到&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^# 行首#<br>$-1 倒数第二行&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp; 转义空格字符<br><br><span style="FONT-WEIGHT: bold">增加一个真实的反向区</span><br>反向区为192.168.0<br>/etc/named.conf<br>zone &#8220;0.168.192.in-addr.arpa&#8221; {<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; type master;<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; file &#8220;192.168.0.zone&#8221;;<br>};<br>/var/named/192.168.0.zone:<br>@&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chinaitlab.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.chinaitlab.com.&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006091201<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; 36000<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; 7200<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; 3600000<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; 86400 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chinaitlab.com.<br>1&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www.chinaitlab.com.<br>2&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftp.chinaitlab.com.<br>3.0.168.192.in-addr.arpa.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mail.chinaitlab.com.<br>&nbsp;<br>NS记录指出当前区的DNS服务器，DNS必须能找到，必须有NS的正向解析，由于前面曾在chinaitlab.com域中解析了chinaitlab.com，所以这里的名为chinaitlab.com的DNS主机是能找到的。如果前面解析了ns.chinaitlab.com为DNS服务器，则这里就应该改成ns.chinaitlab.com.<br>能不能缩写一定要区分，在反向区文件中，主机名是不能缩写的，但地址可以。只要弄清@字符所代表的含义就行，它就是缩写了的内容。<br>&nbsp;<br>测试：<br>#rndc reload<br>#host 192.168.0.2<br>&nbsp;<br>技巧：<br>#history&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示历史记录（执行过的命令）<br>#history 20&nbsp;&nbsp;&nbsp;&nbsp; 显示最近20条操作记录<br>#history -c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清空历史记录<br>vi中查找&#8220;-c&#8221;字符，使用&#8220;:/\-c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /代表查找&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \代表转义<br><br style="FONT-WEIGHT: bold"><span style="FONT-WEIGHT: bold">子域授权</span><br>主服务器的/etc/named/chinaitlab.com.zone<br>domain&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; ns.domain<br>ns.domain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.2<br>在父域chinaitlab.com的区文件中，指定子域domain的DNS服务器为ns.domain，并添加A记录。当查询domain.chinaitlab.com域的主机时，将会通过ns.domain.chinaitlab.com这台子域服务器来查询，但无法子域服务中查找父域中的主机，说明父域和子域之间是单向的。<br>当使用#host ns.domina.chinaitlab.com查询时，仍无法查询成功，虽然区文件中定义了ns.domain的A记录，但我们查询的是domain子域的主机，它将去192.168.0.2的子域服务器中查找主机记录，但现在子域服务器还没有配置。<br>上面的ns.domain也可改成：<br>domain&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; domain<br>domain&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.2<br>用父域的domain主机名指向domain子域，不管子域DNS主机名怎 么改，只要能指向子域的DNS服务器就行。<br>&nbsp;<br>登录子域服务器192.168.0.2<br>按照以前的设置编译安装或rpm安装，然后<br>#named -u named&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启动<br>在/etc/named.conf添加<br>zone &#8220;domain.chinaitlab.com&#8221; {<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; type master;<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; file &#8220;domain.chinaitlab.com.zone&#8221;;<br>};<br>编缉/var/named/domain.chinaitlab.com.zone<br>$TTL 1D<br>@&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @&nbsp;&nbsp;&nbsp; root (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006091201<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1H<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15M<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1W<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1D )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; NS&nbsp;&nbsp; ns.<br>ns&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.2<br>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.3<br>&nbsp;<br>#rndc reload<br>#echo &#8220;nameserver 127.0.0.1&#8221; &gt; /etc/resolv.conf<br>#host ns.domain.chinaitlab.com<br>#host www.domain.chinaitlab.com<br>&nbsp;<br>现在如果resolv.conf文件的nameserver是子域的192.168.0.2，那么只能解析到子域的主机，不能找到父域的主机。但是如果nameserver是主域的DNS192.168.0.22，可以查询到父域和子域中的主机，所以我们使用时，客户机只要将DNS指向主的DNS服务器，这里也就是那台192.168.0.22，这样就可以解析到整个域中的主机。<br><br><span style="FONT-WEIGHT: bold">辅助域名服务器</span><br>辅助域名服务器的作用就是备份主域服务器的数据，当主服务器崩溃或暂时离线时，可代替主服务器来工作，一般机可以设置两个DNS服务器，一个主的，一个备份的。<br>首先要保证主服务器能正常工作，这样辅助服务器才能同步主服务器的数据。我们主要是在辅助域名服务器上做配置。<br>登录辅助服务器192.168.0.2<br>主配置文件/etc/named.conf添加<br>zone &#8220;chinaitlab.com&#8221; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type&nbsp; slave;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &#8220;chinaitlab.com.zone&#8221;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; masters { 192.168.0.22; };<br>};<br>辅助域名配置很简单，只需在主配置文件增加一个区即可，也不用配置区文件，它由服务器同步自动产生。<br>slave表示辅助服务器<br>chinaitlab.com.zone不用创建会自动产生。<br>等同步完以后，我们可以看看它的内容，应该和主服务器的区文件是一致的。masters指定主域服务器，注意其中的格式，大括号前后的空格，分号。<br>#rndc reload<br>#tail /var/log/messages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发现同步时出现错误，这是由于/var/named目录权限不允许named用户写，而named服务是由named用户启动的，所以我们要修改一下/var/named目录权限<br>#ls -ld /var/named/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d表示目录信息<br>#chmod g+w /var/named<br>rndc reload<br>测试，在辅助服务器中，nameserver是自己。<br>#host www.chinaitlab.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 成功解析<br>主从服务器的同步和更新主要是通过区文件中的SOA记录来实现 的。以前面为例，第一次同步，从主服务器下载数据库文件（区文件），每隔1小时更新管理信息，如发现编号发生变化，则同步数据库文件，同步时向主服务器发送请求失败，每隔15分钟重试，当重试了1周后仍无法成功，则过期不再送请求，缓存保存时间为1天。<br>&nbsp;<br>以普通用户身份执行<br>首先修改named.conf,设置pid.file选项值<br>option {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pid-file &#8220;/var/run/named/named.pid&#8221;;<br>};<br>#useradd -s /bin/false -d /dev/null named&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (不允许登录，没有home目录)<br>#mkdir /var/run/named<br>#chown named.named /var/run/named<br>#chmod 700 /var/run/named<br>#named -u named<br>#echo &#8220;/usr/local/sbin/named -u named&#8221; &gt;&gt;/etc/rc.local<br>根据需要修改/var/named目录的属性。使用named用户运行，确保服务器的安全性，防止服务器受到攻击后得到root权限。<br>#ps aux | grep named<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aux&nbsp; 打印进程的用户身份<br>如果是rpm安装，则<br>#echo &#8220;/usr/sbin/named -u named&#8221; &gt;&gt;/etc/rc.local<br>如果是rpm安装，创建用户、目录、目录权限等已经自动完成了。如果是辅助服务器，同步时需要写/var/named，但named用户是无权写入的，所以应该修改/var/named目录权限，允许named组写。<br>&nbsp;<br>常用配置选项<br>options {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory &#8220;/var/named&#8221;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认工作目录，数据库文件存放的位置<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forwarders { 192.168.2.1; };&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当服务器无法解析请求时，转发给192.168.2.1来解析，再无法解析就请求根<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-transfer { 192.168.1.1; };&nbsp;&nbsp;&nbsp; 允许哪台服务器同步数据库文件，一般来用控制辅助服务器，这里为全局设置<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-query { 192.168.0/24; };&nbsp;&nbsp;&nbsp;&nbsp; 允许某台主机或某个网段访问这台DNS服务器<br>};<br>zone &#8220;chinaitlab.com&#8221; {&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; type master;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &#8220;chinaitlab.com.zone&#8221;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-transfer { 192.168.1.1; };<br>};<br>&nbsp;<br>1.编缉/etc/named.conf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置options选项<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个根区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 自己需要解析的区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 及相应的反向区<br>2.rndc-confgen产生rndc.conf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 并把最后几行追加到named.conf<br>3.根区数据库文件，可使用dig工具产生，其它区文件手工编辑。 <br>
<img src ="http://www.cnitblog.com/CrackSky/aggbug/30942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/CrackSky/" target="_blank">黑虫</a> 2007-07-30 18:13 <a href="http://www.cnitblog.com/CrackSky/archive/2007/07/30/30942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>