<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/">
<channel rdf:about="http://www.517sou.net">
<title>flyinweb 's BLOG</title>
<link>http://www.517sou.net</link>
<description>flyinweb 's BLOG</description>
<dc:language>zh-cn</dc:language>
<dc:creator>shanyiwan@hotmail.com</dc:creator>
<items>
<rdf:Seq>
<item rdf:about="http://www.517sou.net/blogview.asp?logID=1644"><title>BIND 9的FAQ</title><description><![CDATA[本文译自BIND主网站上的一篇文章：http://www.isc.org/products/BIND/FAQ.html。应该说，这些问题都非常典型，对BIND&nbsp;9用户的日常维护和管理可以提供不小的帮助。&nbsp;<br><br>1.&nbsp;当我在Linux&nbsp;2.2.x上使用以--enable-threads选项编译的bind程序时，为什么-u参数不起作用？<br>答：Linux线程并没有完全实现Posix线程（pthreads）标准。特别是setuid()只能对当前线程起作用，而不适用于整个进程。正是由于此项限制，Linux上的BIND&nbsp;9就无法像在其他支持的系统平台上一样使用setuid()。在创建线程之前不能调用setuid()，因为服务器只有在线程启动之后才能开始监听预留端口。<br>对于2.2.18或2.3.99-pre3以及更新的内核而言，则能在调用setuid()之后仍然保持可用性。这使得BIND&nbsp;9可以更早些调用setuid()，而同时又保持了绑定预留端口的能力。这是针对Linux所作的特别处理。]]></description><content:encoded><![CDATA[本文译自BIND主网站上的一篇文章：<a href="http://www.isc.org/products/BIND/FAQ.html" target="_blank">http://www.isc.org/products/BIND/FAQ.html</a>。应该说，这些问题都非常典型，对BIND&nbsp;9用户的日常维护和管理可以提供不小的帮助。&nbsp;<br><br>1.&nbsp;当我在Linux&nbsp;2.2.x上使用以--enable-threads选项编译的bind程序时，为什么-u参数不起作用？<br>答：Linux线程并没有完全实现Posix线程（pthreads）标准。特别是setuid()只能对当前线程起作用，而不适用于整个进程。正是由于此项限制，Linux上的BIND&nbsp;9就无法像在其他支持的系统平台上一样使用setuid()。在创建线程之前不能调用setuid()，因为服务器只有在线程启动之后才能开始监听预留端口。<br>对于2.2.18或2.3.99-pre3以及更新的内核而言，则能在调用setuid()之后仍然保持可用性。这使得BIND&nbsp;9可以更早些调用setuid()，而同时又保持了绑定预留端口的能力。这是针对Linux所作的特别处理。<br>在2.2内核上，BIND&nbsp;9的确放弃了许多root权限，所以相对于那些没有放弃权限的root进程而言，这会更加安全一些。<br>如果Linux线程已经正常工作，那么这项限制也就不复存在。<br>用户可以使用--disable-threads选项（这是默认选项）来编译BIND9，这样会生成一个非线程的版本，用户能够使用-u选项。<br><br>2、为什么named的日志中会给出警告信息&quot;no&nbsp;TTL&nbsp;specified&nbsp;-&nbsp;using&nbsp;SOA&nbsp;MINTTL&nbsp;instead&quot;？<br>答：你的zone文件不符合RFC1035标准。你可以使用两种方法来解决此问题：<br>1）在zone文件的开头加入一行对TTL的定义，例如：$TTL&nbsp;86400<br>2）在zone文件的第一条记录中包含TTL字段，例如：example.com.&nbsp;86400&nbsp;IN&nbsp;SOA&nbsp;ns&nbsp;hostmaster&nbsp;<br><br>3、为什么我在Linux上会看到5个（或者更多）的named副本？<br>答：在ps下每个Linux线程也会像进程一样显示出来。一般运行的线程个数为n+4，这里n表示CPU的数目。注意在内存量的使用上并不遵从累加的原则；如果每个进程使用10M内存，那么所有线程总共也只使用10M内存。<br><br>4、为什么即便我在Linux系统上用root身份运行BIND&nbsp;9，在访问配置文件或zone文件时，仍然会得到关于&quot;permission&nbsp;denied&quot;错误的日志？<br>答：在Linux上，BIND&nbsp;9在启动时就放弃了绝大部分root权限，这其中就包括打开其他用户所属文件的权限。因此，如果服务器是以root身份运行的，那么配置文件和zone文件也应该由root所有。<br><br>5、为什么我得到类似于&quot;dns_zone_load:&nbsp;zone&nbsp;foo/IN:&nbsp;loading&nbsp;master&nbsp;file&nbsp;bar:&nbsp;ran&nbsp;out&nbsp;of&nbsp;space&quot;的错误提示？<br>答：这通常是由于TXT记录中少了一个引号所致。检查所有TXT记录是否都包含了完整的引号。<br><br>6、我怎样能够在Linux上从多线程named生成一个可用的core文件？<br>答：如果Linux内核是2.4.7或更新的版本，多线程core导出（dump）是可用的（也就是说，将导出正确的线程）。否则，如果使用的是2.2内核，那么需要应用在contrib/linux/coredump-patch中的内核补丁并重新编译内核。该补丁可以使多线程程序导出正确的线程。<br><br>7、我怎样限制别人查询我的服务器版本？<br>答：在named.conf的&quot;options&quot;段中放置&quot;version&quot;选项，并将其值设成与你实际使用版本不同的其他版本。注意：这样做不能避免攻击，反而可能会妨碍别人对你服务器问题的诊断尝试，而且这同样可能成为别人鉴别你服务器的标志。<br><br>8、我怎样限制只有远程用户才能查询服务器版本？<br>答：当存有版本信息的内部视图被最后匹配时，下面的视图语句将拦截查询。上面一问回答中的警告在这里同样适用。<br>view&nbsp;&quot;chaos&quot;&nbsp;chaos&nbsp;{&nbsp;<br>match-clients&nbsp;{&nbsp;;&nbsp;};<br>allow-query&nbsp;{&nbsp;none;&nbsp;};<br>zone&nbsp;&quot;.&quot;&nbsp;{&nbsp;<br>type&nbsp;hint;<br>file&nbsp;&quot;/dev/null&quot;;&nbsp;//&nbsp;or&nbsp;any&nbsp;empty&nbsp;file&nbsp;<br>};&nbsp;<br>};<br><br>9、&quot;no&nbsp;source&nbsp;of&nbsp;entropy&nbsp;found&quot;或&quot;could&nbsp;not&nbsp;open&nbsp;entropy&nbsp;source&nbsp;foo&quot;是什么意思？<br>答：服务器需要信息熵（entropy）源来执行特定的操作，通常这与DNSSEC相关。这些信息提示没有信息熵源。在有/dev/random或类似设备的系统上，默认会使用它们。信息源也可以通过named.conf中的random-device选项来定义。<br><br>10、我安装了BIND&nbsp;9并且重新启动了named，但是它仍然是BIND&nbsp;8，这是为什么？<br>答：BIND&nbsp;9默认安装在/usr/local下。而BIND&nbsp;8通常安装在/usr下。检查是否正确的named在运行。<br><br>11、我尝试使用TSIG来验证动态更新或者zone传输。我确信密钥设置是正确的，但是服务器仍然拒绝TSIG，为什么？<br>答：这可能是时钟不准的问题。检查客户端的时钟和服务器上的是否同步（例如使用ntp）。<br><br>12、我尝试编译BIND&nbsp;9，但&quot;make&quot;却因为某些文件无法找到而失败了。为什么？<br>答：使用并行或分布式的&quot;make&quot;来编译BIND&nbsp;9是不支持的，而且也无法工作。如果你确实使用的是它们中一种，建议你使用一般的make或gmake来替代。<br><br>13、我有一台BIND&nbsp;9的主服务器和一台BIND&nbsp;8.2.3的从服务器，而主服务器记录到类似于&quot;notify&nbsp;to&nbsp;10.0.0.1#53&nbsp;failed:&nbsp;unexpected&nbsp;end&nbsp;of&nbsp;input&quot;的错误信息。哪有问题？<br>答：该错误信息是由BIND&nbsp;8.2.3中一个已知的bug所致，这在BIND&nbsp;8.2.4中得到了修复。你可以完全不必理会它&nbsp;-&nbsp;不管错误信息如何，notify都在正常工作着。<br><br>14、我不断地得到如下的日志信息，为什么？<br>Dec&nbsp;4&nbsp;23:47:59&nbsp;client&nbsp;10.0.0.1#1355:&nbsp;updating&nbsp;zone&nbsp;&#39;example.com/IN&#39;:&nbsp;update&nbsp;failed:&nbsp;&#39;RRset&nbsp;exists&nbsp;(value&nbsp;dependent)&#39;&nbsp;prerequisite&nbsp;not&nbsp;satisfied&nbsp;(NXRRSET)&nbsp;<br>答：DNS更新程序允许更新请求在进行更新之前进行测试以确认特定的条件是否满足。以上信息说明条件不满足，无法继续进行更新。参看doc/rfc/rfc2136.txt以获知关于前提条件的更多信息。<br><br>15、我不断地得到如下的日志信息，为什么？<br>Jun&nbsp;21&nbsp;12:00:00.000&nbsp;client&nbsp;10.0.0.1#1234:&nbsp;update&nbsp;denied&nbsp;<br>答：有人在尝试使用RFC2136动态更新协议来更新你的DNS数据。Windows&nbsp;2000的机器有这样的习惯：无需事先配置就发送动态更新请求给DNS服务器。如果更新请求来自于Windows&nbsp;2000机器，请参看&lt;<a href="http://support.microsoft.com/support/kb/articles/q246/8/04.asp&gt;&nbsp;" target="_blank">http://support.microsoft.com/support/kb/articles/q246/8/04.asp&gt;&nbsp;</a>以了解如何关闭它。<br><br>16、我看到如下的日志信息，为什么？<br>couldn&#39;t&nbsp;open&nbsp;pid&nbsp;file&nbsp;&#39;/var/run/named.pid&#39;:&nbsp;Permission&nbsp;denied&nbsp;<br>答：很可能你是以非root用户在运行named，而该用户又对/var/run没有写权限。通常的修复方法是创建由named用户所有的/var/run/named目录并设置pid文件为&quot;/var/run/named/named.pid&quot;，或者设置pid文件为&quot;named.pid&quot;，这将把该文件放到由directory选项指定的目录（在此情况下，该目录必须对named用户可写）下去。<br><br>17、当我在执行“dig&nbsp;.&nbsp;ns&quot;时，许多关于root服务器的A记录都丢失了。为什么？<br>答：这是正常的情况，并无大碍。在BIND&nbsp;9实现RFC&nbsp;2181的信任级别（trust&nbsp;ranking）的方法和BIND&nbsp;9对避免相关数据（glue）进入回答所作的努力上，有些令人迷惑的副面效果。<br>当BIND&nbsp;9第一次启动并初始化其缓冲时，它接收根服务器地址作为根服务器权威响应的附加数据，并且这些记录符合包含在响应中作为附加数据的条件。随后，它接收根服务器地址的子集作为根服务器的非权威（推荐）响应的附加数据。这导致这些地址现在被视为非权威的（相关的）数据，它们不适合包含在响应中。<br>服务器的确总是有一组完整的根服务器地址作为缓冲，只是有可能没有包括全部的地址作为附加数据，这取决于它们最后接收的是响应还是相关数据。你通常可以使用显式查询如“dig&nbsp;a.root-servers.net&nbsp;A&quot;来查找这些地址。<br><br>18、从BIND&nbsp;9主服务器传输zone到Windows&nbsp;2000从服务器失败了。为什么？<br>答：这可能是由于Windows&nbsp;2000&nbsp;DNS服务器的一个bug所致，在Windows机器上，大于16K的DNS消息就无法正确处理。这可以通过设置选项&quot;transfer-format&nbsp;one-answer;&quot;来解决。也可以检查你的zone是否包含了内嵌的空格或其他的特殊字符，例如&quot;John\032Doe\213s\032Computer&quot;，因为根据已知信息，这些名字也会导致Windows&nbsp;2000从服务器不正确地拒绝zone。<br><br>19、为什么当我在执行&quot;rndc&nbsp;reload&quot;或SIGHUP时，我的zone文件并不重新载入？<br>答：既可以通过编辑zone文件并重新引导服务器来更新zone文件，也可以通过动态更新来实现，但不能同时使用两种方法。如果你已经针对zone使用了&quot;allow-update&quot;选项来激活动态更新，那你就不能再手工编辑zone文件，此时服务器将不再尝试重新载入zone文件。<br><br>20、我可以在域名服务器上查询域名服务器，但不能从其他机器上查到。为什么？<br>答：这通常是由防火墙配置阻止了查询和/或响应所导致的结果。<br><br>21、我怎样可以让服务器同时作为内部和外部视图的从服务器？当我试着这样做时，从服务器上的两个视图传输了主服务器上的同一视图。<br>答：你应该为主服务器和从服务器设定多IP地址。例如：<br>主服务器：&nbsp;10.0.1.1&nbsp;(internal),&nbsp;10.0.1.2&nbsp;(external,&nbsp;IP&nbsp;alias)<br>internal:<br>match-clients&nbsp;{&nbsp;!10.0.1.2;&nbsp;!10.0.1.4;&nbsp;10.0.1/24;&nbsp;};<br>notify-source&nbsp;10.0.1.1;<br>transfer-source&nbsp;10.0.1.1;<br>query-source&nbsp;address&nbsp;10.0.1.1;<br>external:<br>match-clients&nbsp;{&nbsp;any;&nbsp;};<br>recursion&nbsp;no;&nbsp;//&nbsp;don&#39;t&nbsp;offer&nbsp;recursion&nbsp;to&nbsp;the&nbsp;world<br>notify-source&nbsp;10.0.1.2;<br>transfer-source&nbsp;10.0.1.2;<br>query-source&nbsp;address&nbsp;10.0.1.2;<br>从服务器：10.0.1.3&nbsp;(internal),&nbsp;10.0.1.4&nbsp;(external,&nbsp;IP&nbsp;alias)<br>internal:<br>match-clients&nbsp;{&nbsp;!10.0.1.2;&nbsp;!10.0.1.4;&nbsp;10.0.1/24;&nbsp;};<br>notify-source&nbsp;10.0.1.3;<br>transfer-source&nbsp;10.0.1.3;<br>query-source&nbsp;address&nbsp;10.0.1.3;<br>external:<br>match-clients&nbsp;{&nbsp;any;&nbsp;};<br>recursion&nbsp;no;&nbsp;//&nbsp;don&#39;t&nbsp;offer&nbsp;recursion&nbsp;to&nbsp;the&nbsp;world<br>notify-source&nbsp;10.0.1.4;<br>transfer-source&nbsp;10.0.1.4;<br>query-source&nbsp;address&nbsp;10.0.1.4;<br>将external地址设为别名，这样所有在这台机器上的dns客户端默认看到的是internal视图。<br><br>22、当我尝试使用rndc时，我得到错误信息&quot;network&nbsp;unreachable&quot;或&quot;connection&nbsp;refused&quot;，尽管我知道named正在运行。<br>答：你可能在/etc/rndc.conf中有&quot;default-server&nbsp;localhost&quot;，你的/etc/hosts或DNS将&quot;localhost&quot;同时解析成IPv4回退地址127.0.0.1和IPv6回退地址::1，而此时你的IPv6根本无法工作。将&quot;default-server&nbsp;localhost&quot;改作&quot;default-server&nbsp;127.0.0.1&quot;以确保rndc不会尝试使用IPv6连接域名服务器。<br><br>23、我用的是Freebsd&nbsp;4.4，运行&quot;rndc-confgen&nbsp;-a&quot;就停在那儿不动？<br>答：没有配置/dev/random。使用rundcontrol(8)告知内核使用特定中断作为随机事件的源。你可以通过在/etc/rc.conf中设置rand_irqs来使之永久生效。<br>/etc/rc.conf<br>rand_irqs=&quot;3&nbsp;14&nbsp;15&quot;<br><br>24、为什么named监听的UDP端口不是53？<br>答：named使用系统选定的端口连接到其他域名服务器进行查询。这可以通过使用query-source进行覆盖以锁定端口和/或地址。<br><br>25、当传输zone文件时，我得到错误信息如&quot;multiple&nbsp;RRs&nbsp;of&nbsp;singleton&nbsp;type&quot;以及&quot;CNAME&nbsp;and&nbsp;other&nbsp;data&quot;。这是什么意思？<br>答：这提示了主zone文件不正确。你可以通过使用dig来找到zone传输所包含的记录，然后在其上运行named-checkzone。<br>dig&nbsp;axfr&nbsp;example.com&nbsp;@master-server&nbsp;&gt;&nbsp;tmp<br>named-checkzone&nbsp;example.com&nbsp;tmp&nbsp;<br><br>26、我得到错误信息如&quot;named.conf:&nbsp;99&nbsp;:&nbsp;unexpected&nbsp;end&nbsp;of&nbsp;input&quot;，这里99是named.conf的最后一行。<br>答：有些文本编辑器（记事本和写字板）无法在文本文件的最后一行放置行终止标识（例如CR/LF）。这可以通过在文件的最后“加入”一空行来修复。named期望在EOL后紧跟的是一个EOF，如果不符合此条件，它就当作被删除了。<br><br>27、我得到警告信息如&quot;zone&nbsp;example.com/IN:&nbsp;refresh:&nbsp;failure&nbsp;trying&nbsp;master&nbsp;1.2.3.4#53:&nbsp;timed&nbsp;out&quot;.<br>答：1）检查你是否可以由从服务器到主服务器进行UDP查询：<br>dig&nbsp;+norec&nbsp;example.com&nbsp;soa&nbsp;@1.2.3.4<br>2）你可能生成的查询超过了从服务器所能处理的能力。降低串行查询率。<br>serial-query-rate&nbsp;5;&nbsp;//&nbsp;default&nbsp;20]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1644</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-16 17:58:09</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1643"><title>Red Hat Enterprise Linux在IBM xSeries服务器上的调优</title><description><![CDATA[供稿人：吴晓鹏&nbsp;<br>[b]一.理解Linux的性能[/b]&nbsp;<br>我们可以在文章的开始就列出一个列表，列出可能影响Linux操作系统性能的一些调优参数，但这样做其实并没有什么价值。因为性能调优是一个非常困难的任务，它要求对硬件、操作系统、和应用都有着相当深入的了解。如果性能调优非常简单的话，那些我们要列出的调优参数早就写入硬件的微码或者操作系统中了，我们就没有必要再继续读这篇文章了。正如下图所示，服务器的性能受到很多因素的影响。&nbsp;<br>[img]attachments/month_0906/2009061611274281405_0.jpg[/img]&nbsp;<br>当面对一个使用单独IDE硬盘的有20000用户的数据库服务器时，即使我们使用数周时间去调整I/O子系统也是徒劳无功的，通常一个新的驱动或者应用程序的一个更新却可以使这个服务器的性能得到明显的提升。正如我们前面提到的，不要忘记系统的性能是受多方面因素影响的。理解操作系统管理系统资源的方法将帮助我们在面对问题时更好的判断应该对哪个子系统进行调整。&nbsp;]]></description><content:encoded><![CDATA[供稿人：吴晓鹏&nbsp;<br><strong>一.理解Linux的性能</strong>&nbsp;<br>我们可以在文章的开始就列出一个列表，列出可能影响Linux操作系统性能的一些调优参数，但这样做其实并没有什么价值。因为性能调优是一个非常困难的任务，它要求对硬件、操作系统、和应用都有着相当深入的了解。如果性能调优非常简单的话，那些我们要列出的调优参数早就写入硬件的微码或者操作系统中了，我们就没有必要再继续读这篇文章了。正如下图所示，服务器的性能受到很多因素的影响。&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061611274281405_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />&nbsp;<br>当面对一个使用单独IDE硬盘的有20000用户的数据库服务器时，即使我们使用数周时间去调整I/O子系统也是徒劳无功的，通常一个新的驱动或者应用程序的一个更新却可以使这个服务器的性能得到明显的提升。正如我们前面提到的，不要忘记系统的性能是受多方面因素影响的。理解操作系统管理系统资源的方法将帮助我们在面对问题时更好的判断应该对哪个子系统进行调整。&nbsp;<br>下面的部分对Linux操作系统的架构进行了简单的介绍，对Linux内核的完整的分析超出了我们这本红皮书的内容，感兴趣的读者可以寻找相关文档做更深入的研究。本书对Linux性能的调整主要针对Red&nbsp;Hat发行版本。&nbsp;<br>1．Linux的CPU调度&nbsp;<br>任何计算机的基本功能都十分简单，那就是计算。为了实现计算的功能就必须有一个方法去管理计算资源、处理器和计算任务（也被叫做线程或者进程）。非常感谢Ingo&nbsp;Molnar，他为Linux内核带来了O（1）CPU调度器，区别于旧有的O（n）调度器，新的调度器是动态的，可以支持负载均衡，并以恒定的速度进行操作。&nbsp;<br>新调度器的可扩展性非常好，无论进程数量或者处理器数量，并且调度器本身的系统开销更少。新调取器的算法使用两个优先级队列。&nbsp;<br>活动运行队列&nbsp;<br>过期运行队列&nbsp;<br>调度器的一个重要目标是根据优先级权限有效地为进程分配CPU&nbsp;时间片，当分配完成后它被列在CPU的运行队列中，除了&nbsp;CPU&nbsp;的运行队列之外，还有一个过期运行队列。当活动运行队列中的一个任务用光自己的时间片之后，它就被移动到过期运行队列中。在移动过程中，会对其时间片重新进行计算。如果活动运行队列中已经没有某个给定优先级的任务了，那么指向活动运行队列和过期运行队列的指针就会交换，这样就可以让过期优先级列表变成活动优先级的列表。通常交互式进程（相对与实时进程而言）都有一个较高的优先级，它占有更长的时间片，比低优先级的进程获得更多的计算时间，但通过调度器自身的调整并不会使低优先级的进程完全被饿死。新调度器的优势是显著的改变Linux内核的可扩展性，使新内核可以更好的处理一些有大量进程、大量处理器组成的企业级应用。新的O(1)调度器包含仔2.6内核中，但是也向下兼容2.4内核。&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061611274281405_1.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />&nbsp;<br>新调度器另外一个重要的优势是体现在对NUMA(non-uniform&nbsp;memory&nbsp;architecture)和SMP（symmetric&nbsp;multithreading&nbsp;processors）的支持上，例如INTEL@的超线程技术。&nbsp;<br>改进的NUMA支持保证了负载均衡不会发生在CECs或者NUMA节点之间，除非发生一个节点的超出负载限度。Linux的CPU调度器没有使用大部分UNIX和Windows操作系统使用的进程－线程模式，它只使用了线程。在Linux中一个进程表示为一组线程，可以用线程组ID或者TDGID代替标准UNIX中的进程ID或者PID。然而大多数Linux命令例如ps和top都使用PIDs表达，因此在下面的文章中我们会经常使用进程和线程组。&nbsp;<br>2．Linux的内存架构&nbsp;<br>今天我们面对选择32位操作系统还是64位操作系统的情况。对企业级用户它们之间最大的区别是64位操作系统可以支持大于4GB的内存寻址。从性能角度来讲，我们需要了解32位和64位操作系统都是如何进行物理内存和虚拟内存的映射的。&nbsp;<br>在下面图示中我们可以看到64位和32位Linux内核在寻址上有着显著的不同。探究物理内存到虚拟内存的映射超出了本文研究的范围，因此这里我们只是着重研究一下Linux内存架构的特点。&nbsp;<br>在32位架构中，比如IA-32，Linux内核可以直接寻址的范围只有物理内存的第一个GB（如果去掉保留部分还剩下896MB），访问内存必须被映射到这小于1GB的所谓ZONE_NORMAL空间中，这个操作是由应用程序完成的。但是分配在ZONE_HIGHMEM中的内存页将导致性能的降低。&nbsp;<br>在另一方面，64位架构比如x86-64（也称作EM64T或者AMD64）。ZONE_NORMAL空间将扩展到64GB或者128GB（实际上可以更多，但是这个数值受到操作系统本身支持内存容量的限制）。正如我们看到的，使用64位操作系统我们排除了因ZONE_HIGHMEM部分内存对性能的影响的情况。&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061611274281405_2.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />&nbsp;<br><br><strong>二．性能监测工具<br></strong>Linux开放和灵活的特性使得它有很多的性能监测软件，这些工具中有的是传统UNIX系统的Linux版本，其他是专门为Linux设计的工具，大部分Linux性能监测工具都是基于proc虚拟文件系统的。<br>在这一章里我们介绍一些常用性能监测工具和讨论一些有用的命令。所有我们讨论的工具，除了Capacity&nbsp;Manager，都是Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;(RHEL)所提供的，不需要从网络下载或者其他途径得到。<br>1．uptime<br>Uptime命令的显示结果包括服务器已经运行了多长时间，有多少登陆用户和对服务器性能的总体评估（load&nbsp;average）。load&nbsp;average值分别记录了上个1分钟，5分钟和15分钟间隔的负载情况，load&nbsp;average不是一个百分比，而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞（意味着CPU没有时间处理它），load&nbsp;average值将增加。另一方面，如果每个进程都可以立刻得到访问CPU的时间，这个值将减少。<br>load&nbsp;average的最佳值是1，这说明每个进程都可以立刻被CPU处理。在不同的系统间这个值也是不同的，例如一个单CPU的工作站，load&nbsp;average为1或者2都是可以接受的，但是在一个多CPU的系统中这个值通常为8或者10。<br>你可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如，如果一个网络应用运行性能不理想，运行uptime检查系统负载是否比较高，如果不是这个问题更可能出现在你的网络上。<br>Uptime命令执行示例<br><img src="attachments/m&#111;nth_0906/2009061611274281405_3.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>Tip:你可以用w命令代替uptime，w命令也可以提供目前登陆用户的信息。<br>2．Dmesg<br>Dmesg的主要功能是显示内核信息，当硬件或者内核中加载的模块出现问题的时候dmesg可以提供一些有用的信息。另外，利用dmesg你可以查看有哪些硬件安装在你的服务器上。在每次启动的时候，Linux检查硬件并且记录这些信息。你可以使用/bin/dmesg命令来查看这些信息。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_4.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>3．Top<br>Top命令显示了实际CPU使用情况，默认情况下，它显示了服务器上占用CPU的任务信息并且每5秒钟刷新一次。你可以通过多种方式分类它们，包括PID、时间和内存使用情况。<br>下图是一个top命令结果的示例，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_5.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>你可以使用renice命令为一个进程分配新的优先级。如果一个进程宕掉或者占用了太多的内存，可以使用kill命令杀死进程。下面是输出值的介绍，<br>PID：进程标识<br>USER；进程所有者的用户名<br>PRI：进程的优先级<br>NI：nice级别<br>SIZE：进程占用的内存数量（代码＋数据＋堆栈）<br>RSS；进程使用的物理内存数量<br>SHARE；该进程和其他进程共享内存的数量<br>STAT：进程的状态：S＝休眠状态，R＝运行状态，T＝停止状态，D＝中断休眠状态，Z＝僵尸状态<br>%CPU：共享的CPU使用<br>%MEM；共享的物理内存<br>TIME：进程占用CPU的时间<br>COMMAND：启动任务的命令行（包括参数）<br>Top命令有下面几个有用的热键，包括<br>t：是否显示概要信息<br>m：是否显示内存信息<br>A：通过不同的系统资源情况分类显示结果，对快速判断系统中影响性能的进程十分有效<br>f：输入一个top的交互式的配置画面<br>o：激活交换式的分类的选择<br>进程的优先级和nice级别<br>进程优先级是一个决定进程被CPU执行优先顺序的参数，内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。（nice值越低优先级越高）<br>进程优先级是无法去手动改变的，只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了，你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然，这意味着其他的一些进程将被分配更少的CPU资源，运行更慢一些。Linux支持nice值的范围是19（低优先级）到-20（高优先级），默认的值是0。如果需要改变一个进程的nice值为负数（高优先级），必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例，<br>以nice值-5开始程序xyz<br>#nice&nbsp;–n&nbsp;-5&nbsp;xyz<br>改变已经运行的程序的nice值<br>#renice&nbsp;level&nbsp;pid<br>将pid为2500的进程的nice值改为10<br>#renice&nbsp;10&nbsp;2500<br>僵尸进程<br>当一个进程被结束，在它结束之前通常需要用一些时间去完成所有的任务（比如关闭打开的文件），在一个很短的时间里，这个进程的状态为僵尸状态。在进程完成所有关闭任务之后，会向父进程提交它关闭的信息。有些情况下，一个僵尸进程不能关闭它自己，这时这个进程状态就为z（zombie）。不能使用kill命令杀死僵尸进程，因为它已经标志为“dead”。如果你无法摆脱一个僵尸进程，你可以杀死它的父进程，这个僵尸进程也就消失了。然而，如果父进程是init进程，你不能杀死init进程，因为init是一个重要的系统进程，这种情况下你只能通过一次重新启动来摆脱僵尸进程。<br>4．iostat<br>iostat是sysstat的一部分，如果你没有安装这个包，在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux光盘中找到sysstat的rpm包进行安装。Iostat显示自系统启动后的平均CPU时间（与uptime类似），它也可以显示磁盘子系统的使用情况，iostat可以用来监测CPU利用率和磁盘利用率。下图是一个命令输出的示例，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_6.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>CPU利用率分四个部分：<br>%user：user&nbsp;level（应用）的CPU占用率情况<br>%nice：加入nice优先级的user&nbsp;level的CPU占用率情况<br>％sys：system&nbsp;level（内核）的CPU占用情况<br>%idle：空闲的CPU资源情况<br>磁盘占用率有下面几个部分：<br>Device：块设备名<br>Tps：设备每秒进行传输的数量（每秒的I/O请求）。多个单独的I/O请求可以被组成一个传输操作，因为一个传输操作可以是不同的容量。<br>Blk_read/s,&nbsp;Blk_wrtn/s：该设备每秒读写的块的数量。块可能为不同的容量。块的大小一般为1024、2048、4048byte。例如，块设备/dev/sda1的块大小可以通过下面命令查看<br>#&nbsp;dumpe2fs&nbsp;-h&nbsp;/dev/sda1&nbsp;|grep&nbsp;-F&nbsp;&quot;Block&nbsp;size&quot;<br>会得到类似下面的输出<br>dumpe2fs&nbsp;1.34&nbsp;(25-Jul-2003)<br>Block&nbsp;size:&nbsp;1024<br>Blk_read,&nbsp;Blk_wrtn：自系统启动以来读写的块设备的总量。<br>5．Vmstat<br>Vmstat命令提供了对进程、内存、页面I/O块和CPU等信息的监控，vmstat可以显示检测结果的平均值或者取样值，取样模式可以提供一个取样时间段内不同频率的监测结果。下面是一个vmstat命令的输出结果的示例。<br>注：在取样模式中需要考虑在数据收集中可能出现的误差，将取样频率设为比较低的值可以尽可能的减小误差的影响。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_7.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>下面介绍一下各列的含义<br>·process（procs）<br>r：等待运行时间的进程数量<br>b：处在不可中断睡眠状态的进程<br>w：被交换出去但是仍然可以运行的进程，这个值是计算出来的<br>·memoryswpd：虚拟内存的数量<br>free：空闲内存的数量<br>buff：用做缓冲区的内存数量<br>·swap<br>si：从硬盘交换来的数量<br>so：交换到硬盘去的数量<br>·IO<br>bi：向一个块设备输出的块数量<br>bo：从一个块设备接受的块数量<br>·system<br>in：每秒发生的中断数量，&nbsp;包括时钟<br>cs：每秒发生的context&nbsp;switches的数量<br>·cpu(整个cpu运行时间的百分比)<br>us：非内核代码运行的时间（用户时间，包括nice时间）<br>sy：内核代码运行的时间（系统时间）<br>id：空闲时间，在Linux&nbsp;2.5.41之前的内核版本中，这个值包括I/O等待时间<br>等待I/O操作的时间，在Linux&nbsp;2.5.41之前的内核版本中这个值为0<br>Vmstat命令提供了大量的附加参数，可以参考vmstat的man手册去查询所有的参数，下面列举几个十分有用的参数。<br>·m：显示内核的内存利用率<br>·a：显示内存页面信息，包括活跃和不活跃的内存页面<br>·n：显示报头行，这个参数在使用取样模式并将命令结果输出到一个文件时非常有用。例如root#vmstat&nbsp;–n&nbsp;2&nbsp;10以2秒的频率显示10输出结果<br>·当使用-p&nbsp;{分区}时，vmstat提供对I/O结果的统计<br>6.ps和pstree<br>ps和pstree命令是系统分析最常用的基本命令，ps命令提供了一个正在运行的进程的列表，列出进程的数量取决于命令所附加的参数。例如ps&nbsp;–A&nbsp;命令列出所有进程和它们相应的进程ID（PID），进程的PID是使用其他一些工具之前所必须了解的，例如pmap或者renice。<br>在运行java应用的系统上，ps&nbsp;–A&nbsp;命令的输出很容易就会超过屏幕的显示范围，这样就很难得到所有进程的完整信息。这时，使用pstree命令可以以树状结构来显示所有的进程信息并且可以整合子进程的信息。Pstree命令对分析进程的来源十分有用。下面是命令的示例，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_8.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>7.Numastat<br>随着NUMA架构的不断发展，例如eServer&nbsp;xSeries&nbsp;445及其后续产品eServer&nbsp;xSeries&nbsp;460，现在NUMA架构已经成为了企业级数据中心的主流。然而，NUMA架构在性能调优方面面临了新的挑战，例如内存分配的问题在NUMA系统之前并没人感兴趣，Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;4提供了一个监测NUMA架构的工具。Numastat命令提供了本地内存与远程内存使用情况的对比和各个节点的内存使用情况。Numa_miss列显示分配失败的本地内存，numa_foreign列显示分配远程内存（访问速度慢）信息，过多的调用远程内存将增加系统的延迟从而影响整个系统的性能。使运行在一个节点上的进程都访问本地内存将极大的改善系统的性能。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_9.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>8.sar<br>sar程序是sysstat安装包的一部分，如果你没有安装这个包，在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux的源文件中寻找这个rpm包进行安装，sar命令用于收集、报告和保存系统的信息。Sar命令由三个应用组成：sar，用与显示数据；sa1和sa2，用于收集和存储数据。关于sar工具的详细参数说明可以参考man手册。<br>为了以后分析日志，可以使用sa1和sa2配置系统获得并且记录日志信息。为了实现这个目的，如下图例所示向/etc/crontab中加入相应的内容。注意默认的情况下cron每天都会定时的运行sar命令，如果系统安装了sar相应的安装包。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_10.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>sar命令所生成的数据保存在/var/log/sa/目录下，数据按照时间保存，可以根据时间来查询相应的性能数据。例如，显示21号的网络信息使用下面的命令sar&nbsp;-n&nbsp;DEV&nbsp;-f&nbsp;sa21|less，命令结果如下，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_11.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>你也可以使用sar在命令行下得到一个实时的执行结果，收集的数据可以包括CPU利用率、内存页面、网络I/O等等。如下例所示，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_12.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>9．KDE&nbsp;System&nbsp;Guard<br>KDE&nbsp;System&nbsp;Guard&nbsp;(KSysguard)是一个KDE的任务管理器和性能监测工具。它是一个客户端/服务器结构的应用，因此可以监测本地或者远程主机。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_13.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>图形界面中可以用左侧的Sensor选择显示的信息，一个Sensor可以返回一个简单的值或者更复杂的信息例如表格。针对每一类信息都提供了一个或多个显示信息，这些显示信息可以保存或者互相独立的在工作表中加载。<br>KSysguard窗口中包括菜单栏、工具栏和状态栏，页面浏览和工作区。当你第一次打开时，可以看到默认的情况：本地主机做为localhost列在Sensor浏览里，在工作区中有两个表格。每个Sensor监测某些系统参数，所有的Sensor显示可以在工作区中以拖拽的形式操作，有下面三个选项：<br>·可以在工作区中删除和代替Sensor<br>·可以编辑工作表的属性以增加显示的行数和列数<br>·可以建立新的工作表并且加入新的Sensor以满足应用的需要<br>下面介绍一下工作区，如下图所示工作区中显示两张表，<br>·system&nbsp;load：在启动KSysguard中默认显示的<br>·process&nbsp;Table<br><img src="attachments/m&#111;nth_0906/2009061611274281405_14.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>System&nbsp;load工作表中包括四个Sensor窗口，cpu负载、平均负载、物理内存和交换空间。多个Sensor可以被显示在一个窗口中，如果想查看窗口中正在监测的分Sensor信息，将鼠标移到图标上，相应的说明会显示出来。也可以在图标上点鼠标右键选择Properties，然后选择页面表，就可以看到相应的说明信息。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_15.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>点击Process&nbsp;Table表将显示所有在服务器上运行进程的信息，这个表默认显示的是系统CPU的利用率，但是它可以通过选择其他分页来显示其他信息。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_16.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>因为环境或者应用的需要，你可能有多种不同的Sensor需要监测，实现这个最好的方法就是自定义一个工作表。下面就简单的指导一下如何根据需要建立自定义的工作表。<br>（1）．创建一个空的工作表，点击File&nbsp;→&nbsp;New。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_17.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>（2）．输入标题、工作表的行数和列数，也就是监测窗口的数量，在例子中是4个。当信息输入完成后，点击ok建立空工作表。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_18.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>(3)．在窗口左边将需要的Sensor拖到右边的窗口中。<br>(4)．点击File&nbsp;→&nbsp;Save保存新的工作表。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_19.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如果想要了解关于KDE&nbsp;System&nbsp;Guard的更多信息请访问下面的链接<br><font color="#0000ff"><a target="_blank" href="http://docs.kde.org/en/3.2/kdebase/ksysgaurd">http://docs.kde.org/en/3.2/kdebase/ksysgaurd</a></font><br>10．Gnome&nbsp;System&nbsp;Monitor<br>虽然没有KDE&nbsp;System&nbsp;Guard那么强大的功能，Gnome桌面环境也有自己的图形化的性能监测工具。Gnome&nbsp;System&nbsp;Monitor可以图形化的显示系统性能相关的参数，所有的统计结果都是实时的，如果需要长时间的统计结果需要通过其他的性能监测工具来实现。<br>11．free<br>free命令显示系统的所有内存的使用情况，包括空闲内存、被使用的内存和交换内存空间。Free命令显示也包括一些内核使用的缓存和缓冲区的信息。下面是命令结果的示例，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_20.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>当使用free命令的时候，需要记住linux的内存结构和虚拟内存的管理方法，比如空闲内存数量的限制，还有swap空间的使用并不标志一个内存瓶颈的出现。<br>Free命令有用的参数：<br>·-b,-k,-m和-g分别按照bytes,&nbsp;kilobytes,&nbsp;megabytes,&nbsp;gigabytes显示结果。<br>·-l区别显示low和high内存<br>·-c&nbsp;{count}显示free输出的次数<br>12．Pmap<br>pmap命令显示一个或者多个进程使用内存的数量，你可以用这个工具来确定服务器上哪个进程占用了过多的内存从而导致内存瓶颈。<br>命令格式：pmap&nbsp;<br>关于pmap命令的详细语法可以使用下面命令查询<br>pmap&nbsp;-?<br><img src="attachments/m&#111;nth_0906/2009061611274281405_21.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>13．Strace<br>strace截取和记录进程的系统调用信息，还包括进程接受的命令信号。这是一个有用的诊断和调试工具，系统管理员可以通过strace来解决程序上的问题。<br>命令格式，需要指定需要监测的进程ID，下图是一个命令结果的示例。<br>strace&nbsp;-p&nbsp;<br>使用下面命令可以获得关于strace的完整语法信息<br>strace&nbsp;-?<br>注：当针对某个进程执行strace命令时，对该进程的运行性能将产生很大的影响，所以这个命令仅仅应该用在收集数据的时候。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_22.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>14．ulimit<br>这个命令是基于bash的，可以通过ulimit来控制系统资源的使用，使用-a参数列出所有可调的参数。<br>ulimit&nbsp;–a<br><img src="attachments/m&#111;nth_0906/2009061611274281405_23.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>-H和-S参数可以对指定的资源进行软限制和硬限制，如果超过了软限制，系统管理员会接收到一个警告，在达到硬限制的时候命令就会提示报错。<br>例如，为系统打开文件的数量设定一个硬限制<br>ulimit&nbsp;-Hn&nbsp;4096<br>为打开文件设定一个软限制<br>ulimit&nbsp;-Sn&nbsp;1024<br>查看硬限制和软限制的值<br>ulimit&nbsp;-Hn<br>ulimit&nbsp;-Sn<br>这是一个很有用的命令，例如现在想在系统启动时对Oracle用户进行限制，在/etc/security/limits.conf中加入如下两行：<br>soft&nbsp;nofile&nbsp;4096<br>hard&nbsp;nofile&nbsp;10240<br>另外确保/etc/pam.d/system-auth文件有下面内容<br>session&nbsp;required&nbsp;/lib/security/$ISA/pam_limits.so<br>这一行确保系统会执行这个限制。<br>如果要查看ulimit命令的详细语法，可以执行<br>ulimit&nbsp;-?<br>15．Mpstat<br>mpstat命令是sysstat包的一部分，如果没有安装sysstat包，可以在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux安装源文件中找到并且安装这个rpm包。Mpstat命令用于监测一个多CPU系统中每个可用CPU的情况。Mpstat命令可以显示每个CPU或者所有CPU的运行情况，同时也可以像vmstat命令那样使用参数进行一定频率的采样结果的监测。下面是使用mpstat&nbsp;-P&nbsp;ALL命令的显示结果的示例，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_24.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>关于完整的命令语法请用下面命令查看<br>mpstat&nbsp;-?<br>16.&nbsp;Capacity&nbsp;Manager<br>Capacity&nbsp;Manager是<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director系统管理的一个附加组件，可以提供对不同平台下的多个系统进行长期的性能监测。除了对性能的监测，Capacity&nbsp;Manager还包括对容量的计划，提供对系统将来可能的容量的分析和建议。Capacity&nbsp;Manager可以输出多种文件格式包括HTML,&nbsp;XML和GIF。<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director可以被应用在不同操作系统平台下，这样就为在异构环境下对数据的收集和分析提供了有力的工具。<br>如果使用Capacity&nbsp;Manager，必须在系统中安装相关的rpm包。安装完成后在<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director&nbsp;Console中选择Capacity&nbsp;Manager&nbsp;→Monitor&nbsp;Activator<br><img src="attachments/m&#111;nth_0906/2009061611274281405_25.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>拖拽Monitor&nbsp;Activator图标到一个单独的或者一组已经安装相应程序的系统，在接下来的窗口中可以选择多种子系统进行监测。Capacity&nbsp;Manager在Linux下会有少部分功能受一些参数的限制。<br><img src="attachments/m&#111;nth_0906/2009061611274281405_26.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>Monitor&nbsp;Activator窗口在右边的窗口中显示相关系统目前的状态，在左边的窗口中显示显示可用的性能监测。添加一个新的监测，选择相应的监测图标点击On。改变将在Monitor&nbsp;Activator窗口关闭后马上生效，配置完成后，<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director将开始收集并且存储所要求的性能数据。如果要为收集的信息创建一个报告，选择Capacity&nbsp;Manager&nbsp;→&nbsp;Report&nbsp;Generator并且拖拽操作你想监测的单个或者一组系统，<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director将显示下面的界面，<br><img src="attachments/m&#111;nth_0906/2009061611274281405_27.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>在这里根据你的需要选择是立刻执行或者指定时间执行。在生产环境中，在固定的时间收集Capacity&nbsp;Manager报告是一个比较好的方法，我们可以选择在每周末系统并不繁忙的时候产生一次系统报告。一旦报告收集完成将存储在<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director服务器上，可以通过Report&nbsp;Viewer任务来查看。<br>下图是一个报告结果的示例<br><img src="attachments/m&#111;nth_0906/2009061611274281405_28.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>在Report&nbsp;Viewer窗口中可以选择需要查看的不同性能参数，Capacity&nbsp;Manager的结果可以被输出为HTML或者XML文件，为了分析需要可以被显示在内部的web服务器上<br>（注：本文来自红皮书Tuning&nbsp;Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;on&nbsp;<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;eServer&nbsp;xSeries&nbsp;Servers&nbsp;redp3861.pdf）<br><br>6．Linux文件系统&nbsp;<br>Linux作为一个开源操作系统的优势之一就是为用户提供了多种操作系统的支持。现代Linux内核几乎可以支持所有计算机系统常用的文件系统，从基本的FAT到高性能的文件系统例如JFS。因为Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux主要支持两种文件系统（ext2和ext3），我们将主要介绍它们的特点，对其他Linux文件系统我们仅做简要介绍。&nbsp;<br>（1）ext2&nbsp;<br>ext2文件系统是ext3文件系统的前身。是一个快速、简便的文件系统，它与目前大部分文件系统的显著不同就是ext2不支持日志。&nbsp;<br>（2）ext3，Red&nbsp;Hat默认的文件系统&nbsp;<br>自从Red&nbsp;Hat&nbsp;7.2开始，安装默认的文件系统就是ext3。Ext3是应用广泛的ext2文件系统的更新版本，它加入了对日志的支持。下面列举了这个文件系统的一些特性。&nbsp;<br>可用性：ext3可以保证数据写入磁盘的一致性，万一出现了非正常的关机（电源的失效或者系统的崩溃），服务器不需要花费时间去校验数据的一致性，因此极大的减少了系统恢复的时间。&nbsp;<br>数据完整性：加入特殊的日志功能，所有数据，包括文件数据和元数据都是有日志记录的。&nbsp;<br>速度：通过data=writeback参数，你可以根据应用的需要来调整数据的写入速度。&nbsp;<br>灵活性：从ext2转换到ext3文件系统是非常简单的并且不需要重新格式化硬盘。通过执行tune2fs命令和编辑/etc/fstab文件，你可以非常容易的将ext2文件系统更新到ext3文件系统。Ext3文件系统也可以禁用日志后作为ext2使用。利用一些第三方的工具软件可以更灵活的使用ext3文件系统，比如PartitionMagic可以编辑ext3分区。&nbsp;<br>（3）ReiserFS&nbsp;<br>ReiserFS是一个快速的日志文件系统，它优化了磁盘空间的使用、加快了故障恢复速度。今天ReiserFS是SUSE&nbsp;Linux默认的文件系统。&nbsp;<br>（4）JFS&nbsp;<br>JFS是一个完全64位的文件系统，它可以支持非常大的文件和分区。JFS是由<a href="http://www.ibm.com/cn" target="_blank">IBM</a>为AIX系统开发的，现在在GPL&nbsp;license下以及可以使用了。JFS对大容量的分区和文件，尤其是HPC和数据库应用来说是一种理想的操作系统。如果你想了解更多关于JFS的信息，请访问下面链接&nbsp;<br><a target="_blank" href="http://jfs.sourceforge.net/"><font color="#5c81a7">http://jfs.sourceforge.net</font></a>&nbsp;<br>(5)XFS&nbsp;<br>XFS是SGI为IRIX系统开发的高性能的日志文件系统。它的特点和应用都和JFS相当接近。&nbsp;<br>7．Proc文件系统&nbsp;<br>proc文件系统不是一个实时文件系统，但是它的作用却非常大。它提供了一个运行中的内核的接口，并不存储实际的数据。Proc文件系统使系统管理员可以监控和调整内核运行状态。下图描述了一个proc文件系统的示例，大部分Linux性能调优工具都需要借助proc文件系统的信息来进行工作。&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061611274281405_29.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />&nbsp;<br>在proc文件系统中，我们可以看到分别记录不同信息的多个子目录，但是proc目录下的大部分文件可读性都不是很强，建议最好使用可读性更强的工具例如vmstat等来查看proc中记录的信息。请牢记proc目录的相应目录结构。&nbsp;<br>在/proc目录下的文件&nbsp;<br>proc根目录下保存着一些记录了系统信息的文件，这些文件你可以通过vmstat和cpuinfo等工具来读取。&nbsp;<br>数字1到X&nbsp;<br>各个以数字为名称的文件夹，代表的是运行进程的PID。例如，目录1记录了init进程的一些统计信息。&nbsp;<br>acpiapci是一个现代桌面和笔记本电脑的电源配置和管理接口，因为apci主要是一个个人电脑的技术，所以在一些服务器系统上经常被禁用。可以访问下面链接获得更多acpi的相关信息&nbsp;<br><a target="_blank" href="http://www.apci.info/"><font color="#5c81a7">http://www.apci.info</font></a>&nbsp;<br>bus&nbsp;<br>这个子目录记录了系统的总线子系统的信息，例如pci总线或者usb接口。&nbsp;<br>irq&nbsp;<br>irq子目录下记录了系统的中断信息。&nbsp;<br>net&nbsp;<br>net子目录记录了一些关于你的网卡的重要信息，比如接收的多点广播封包或者每个网卡的路由。&nbsp;<br>scsi&nbsp;<br>scsi子目录包含了关于系统的scsi子系统的信息，例如连接的设备或者驱动的版本。ips子目录是记录关于<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;ServerRAID阵列卡信息的。&nbsp;<br>sys&nbsp;<br>sys目录下包含了一些可以调整的内核参数。&nbsp;<br>tty&nbsp;<br>tty子目录包含了系统虚拟终端的信息。&nbsp;<br><br><strong>8．理解Linux调优参数&nbsp;</strong><br>在我们介绍Linux系统的各种调优参数和性能监测工具之前，需要先讨论一些关于性能调优的参数。因为Linux是一个开源操作系统，所以又大量可用的性能监测工具。对这些工具的选择取决于你的个人喜好和对数据细节的要求。所有的性能监测工具都是按照同样的规则来工作的，所以无论你使用哪种监测工具都需要理解这些参数。下面列出了一些重要的参数，有效的理解它们是很有用处的。&nbsp;<br>（1）处理器参数&nbsp;<br>CPU&nbsp;utilization&nbsp;<br>这是一个很简单的参数，它直观的描述了每个CPU的利用率。在xSeries架构中，如果CPU的利用率长时间的超过80％，就可能是出现了处理器的瓶颈。&nbsp;<br>Runable&nbsp;processes&nbsp;<br>这个值描述了正在准备被执行的进程，在一个持续时间里这个值不应该超过物理CPU数量的10倍，否则CPU方面就可能存在瓶颈。&nbsp;<br>Blocked&nbsp;<br>描述了那些因为等待I/O操作结束而不能被执行的进程，Blocked可能指出你正面临I/O瓶颈。&nbsp;<br>User&nbsp;time&nbsp;<br>描述了处理用户进程的百分比，包括nice&nbsp;time。如果User&nbsp;time的值很高，说明系统性能用在处理实际的工作。&nbsp;<br>System&nbsp;time&nbsp;<br>描述了CPU花费在处理内核操作包括IRQ和软件中断上面的百分比。如果system&nbsp;time很高说明系统可能存在网络或者驱动堆栈方面的瓶颈。一个系统通常只花费很少的时间去处理内核的操作。&nbsp;<br>Idle&nbsp;time&nbsp;<br>描述了CPU空闲的百分比。&nbsp;<br>Nice&nbsp;time&nbsp;<br>描述了CPU花费在处理re-nicing进程的百分比。&nbsp;<br>Context&nbsp;switch&nbsp;<br>系统中线程之间进行交换的数量。&nbsp;<br>Waiting&nbsp;<br>CPU花费在等待I/O操作上的总时间，与blocked相似，一个系统不应该花费太多的时间在等待I/O操作上，否则你应该进一步检测I/O子系统是否存在瓶颈。&nbsp;<br>Interrupts&nbsp;<br>Interrupts值包括硬Interrupts和软Interrupts，硬Interrupts会对系统性能带来更多的不利影响。高的Interrupts值指出系统可能存在一个软件的瓶颈，可能是内核或者驱动程序。注意Interrupts值中包括CPU时钟导致的中断（现代的xServer系统每秒1000个Interrupts值）。&nbsp;<br>（2）内存参数&nbsp;<br>Free&nbsp;memory&nbsp;<br>相比其他操作系统，Linux空闲内存的值不应该做为一个性能参考的重要指标，因为就像我们之前提到过的，Linux内核会分配大量没有被使用的内存作为文件系统的缓存，所以这个值通常都比较小。&nbsp;<br>Swap&nbsp;usage&nbsp;<br>这个值描述了已经被使用的swap空间。Swap&nbsp;usage只表示了Linux管理内存的有效性。对识别内存瓶颈来说，Swap&nbsp;In/Out才是一个比较又意义的依据，如果Swap&nbsp;In/Out的值长期保持在每秒200到300个页面通常就表示系统可能存在内存的瓶颈。&nbsp;<br>Buffer&nbsp;and&nbsp;cache&nbsp;<br>这个值描述了为文件系统和块设备分配的缓存。注意在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;3和更早一些的版本中，大部分空闲内存会被分配作为缓存使用。在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;4以后的版本中,你可以通过修改/proc/sys/vm中的page_cache_tuning来调整空闲内存中作为缓存的数量。&nbsp;<br>Slabs&nbsp;<br>描述了内核使用的内存空间，注意内核的页面是不能被交换到磁盘上的。&nbsp;<br>Active&nbsp;versus&nbsp;inactive&nbsp;memory&nbsp;<br>提供了关于系统内存的active内存信息，Inactive内存是被kswapd守护进程交换到磁盘上的空间。&nbsp;<br>（3）网络参数&nbsp;<br>Packets&nbsp;received&nbsp;and&nbsp;sent&nbsp;<br>这个参数表示了一个指定网卡接收和发送的数据包的数量。&nbsp;<br>Bytes&nbsp;received&nbsp;and&nbsp;sent&nbsp;<br>这个参数表示了一个指定网卡接收和发送的数据包的字节数。&nbsp;<br>Collisions&nbsp;per&nbsp;second&nbsp;<br>这个值提供了发生在指定网卡上的网络冲突的数量。持续的出现这个值代表在网络架构上出现了瓶颈，而不是在服务器端出现的问题。在正常配置的网络中冲突是非常少见的，除非用户的网络环境都是由hub组成。&nbsp;<br>Packets&nbsp;dropped&nbsp;<br>这个值表示了被内核丢掉的数据包数量，可能是因为防火墙或者是网络缓存的缺乏。&nbsp;<br>Overruns&nbsp;<br>Overruns表达了超出网络接口缓存的次数，这个参数应该和packets&nbsp;dropped值联系到一起来判断是否存在在网络缓存或者网络队列过长方面的瓶颈。&nbsp;<br>Errors&nbsp;<br>这个值记录了标志为失败的帧的数量。这个可能由错误的网络配置或者部分网线损坏导致，在铜口千兆以太网环境中部分网线的损害是影响性能的一个重要因素。&nbsp;<br>（4）块设备参数&nbsp;<br>Iowait&nbsp;<br>CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。&nbsp;<br>Average&nbsp;queue&nbsp;length&nbsp;<br>I/O请求的数量，通常一个磁盘队列值为2到3为最佳情况，更高的值说明系统可能存在I/O瓶颈。&nbsp;<br>Average&nbsp;wait&nbsp;<br>响应一个I/O操作的平均时间。Average&nbsp;wait包括实际I/O操作的时间和在I/O队列里等待的时间。&nbsp;<br>Transfers&nbsp;per&nbsp;second&nbsp;<br>描述每秒执行多少次I/O操作（包括读和写）。Transfers&nbsp;per&nbsp;second的值与kBytes&nbsp;per&nbsp;second结合起来可以帮助你估计系统的平均传输块大小，这个传输块大小通常和磁盘子系统的条带化大小相符合可以获得最好的性能。&nbsp;<br>Blocks&nbsp;read/write&nbsp;per&nbsp;second&nbsp;<br>这个值表达了每秒读写的blocks数量，在2.6内核中blocks是1024bytes，在早些的内核版本中blocks可以是不同的大小，从512bytes到4kb。&nbsp;<br>Kilobytes&nbsp;per&nbsp;second&nbsp;read/write&nbsp;<br>按照kb为单位表示读写块设备的实际数据的数量。<br>]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1643</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-16 11:27:48</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1642"><title>Linux 性能调优的几种方法</title><description><![CDATA[按照传统，Linux不同的发行版本和不同的内核对各项参数及设置均做了改动，从而使得系统能够获得更好的性能。下边将分四部分介绍在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS和SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server系统下，如何用以下几种技巧进行性能的优化：<br>1、Disabling&nbsp;daemons&nbsp;（关闭&nbsp;daemons)<br>2、Shutting&nbsp;down&nbsp;the&nbsp;GUI&nbsp;(关闭GUI)<br>3、Changing&nbsp;kernel&nbsp;parameters&nbsp;(改变内核参数）<br>4、Kernel&nbsp;parameters&nbsp;（内核参数）]]></description><content:encoded><![CDATA[按照传统，Linux不同的发行版本和不同的内核对各项参数及设置均做了改动，从而使得系统能够获得更好的性能。下边将分四部分介绍在Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS和SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server系统下，如何用以下几种技巧进行性能的优化：<br>1、Disabling&nbsp;daemons&nbsp;（关闭&nbsp;daemons)<br>2、Shutting&nbsp;down&nbsp;the&nbsp;GUI&nbsp;(关闭GUI)<br>3、Changing&nbsp;kernel&nbsp;parameters&nbsp;(改变内核参数）<br>4、Kernel&nbsp;parameters&nbsp;（内核参数）<br>5、Tuning&nbsp;the&nbsp;processor&nbsp;subsystem（处理器子系统调优）<br>6、Tuning&nbsp;the&nbsp;memory&nbsp;subsystem&nbsp;（内存子系统调优）<br>7、Tuning&nbsp;the&nbsp;file&nbsp;system（文件系统子系统调优）<br>8、Tuning&nbsp;the&nbsp;network&nbsp;subsystem（网络子系统调优）<br><strong>1&nbsp;关闭daemons</strong><br>有些运行在服务器中的daemons&nbsp;(后台服务)，并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下，多数服务器都可以安全地停掉几个daemons。<br>Table&nbsp;10-1列出了Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS下的可调整进程.<br>Table&nbsp;10-2列出了SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server下的可调整进程<br><img src="attachments/m&#111;nth_0906/2009061610202025710_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>注意：关闭xfs&nbsp;daemon将导致不能启动X，因此只有在不需要启动GUI图形的时候才可以关闭xfs&nbsp;daemon。使用startx命令前，开启xfs&nbsp;daemon，恢复正常启动X。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_1.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>可以根据需要停止某个进程，如要停止sendmail&nbsp;进程，输入如下命令：<br>Red&nbsp;Hat:&nbsp;<strong>/sbin/service&nbsp;sendmail&nbsp;stop</strong><br>SUSE&nbsp;LINUX:&nbsp;<strong>/etc/init.d/sendmail&nbsp;stop</strong><br>也可以配置在下次启动的时候不自动启动某个进程，还是sendmail：<br>Red&nbsp;Hat:&nbsp;<strong>/sbin/chkconfig&nbsp;sendmail&nbsp;off</strong><br>SUSE&nbsp;LINUX:&nbsp;<strong>/sbin/chkconfig&nbsp;-s&nbsp;sendmail&nbsp;off</strong><br>除此之外，LINUX还提供了图形方式下的进程管理功能。对于Red&nbsp;Hat，启动GUI，使用如下命令：<strong>&nbsp;/usr/bin/redhat-config-services&nbsp;</strong>或者鼠标点击<strong>&nbsp;Main&nbsp;Menu&nbsp;</strong>-&gt;&nbsp;<strong>System&nbsp;Settings&nbsp;</strong>-&gt;<br><strong>Server&nbsp;Settings&nbsp;</strong>-&gt;&nbsp;<strong>Services</strong>.<br><img src="attachments/m&#111;nth_0906/2009061610202025710_2.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>提示：</strong>并非所有的daemons都会显示在该配置界面，如要看到全部的daemons，使用如下命令：<br>/sbin/chkconfig&nbsp;–list<br>对于SUSE&nbsp;LINUX,图形界面是YaST2,&nbsp;可用如下命令来启动<br><strong>/sbin/yast2&nbsp;runlevel&nbsp;</strong>或者如Figure&nbsp;10-2所示用鼠标点击<br><strong>Browse:&nbsp;YaST/&nbsp;</strong>−&gt;&nbsp;<strong>YaST&nbsp;modules&nbsp;</strong>−&gt;&nbsp;<strong>System&nbsp;</strong>−&gt;&nbsp;<strong>Runlevel&nbsp;editor</strong><br><img src="attachments/m&#111;nth_0906/2009061610202025710_3.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>2&nbsp;关闭GUI</strong><br>只要有可能，就不要在Linux&nbsp;server上启动GUI图形，通常在Linux&nbsp;server上，没有必要启动GUI。，所有的管理任务均可在命令行方式下完成、或者通过重定向X和Web浏览器界面。有几个可用的基于Web的工具(例如webmin,&nbsp;Linuxconf,&nbsp;和SWAT).<br>需要的时候启动GUI，用完马上关闭GUI。多数情况，服务器运行在runlevel&nbsp;3，即在机器启动的时候不进入GUI。命令行方式下，执行<strong>startx</strong>&nbsp;来启动Xserver.<br>1.&nbsp;查看runlevel的命令：runlevel<br>会显示出上次和当前的runlevel&nbsp;(如N&nbsp;5&nbsp;表示没有上次的runlevel&nbsp;(N)&nbsp;，当前的runlevel是5).<br>2.&nbsp;在不同的runlevels之间切换，使用命令&nbsp;<strong>init&nbsp;</strong><br>如切换到run&nbsp;level&nbsp;3，键入命令init&nbsp;3<br>下边是对Linux中不同runlevels的简要描述<br>–&nbsp;0&nbsp;–&nbsp;Halt&nbsp;停机(不要将0设置为缺省，否则服务器启动后就会马上关闭)<br>–&nbsp;1&nbsp;-&nbsp;Single&nbsp;user&nbsp;mode&nbsp;单用户模式<br>–&nbsp;2&nbsp;-&nbsp;Multi-user&nbsp;不带NFS的多用户模式&nbsp;(如果没有网络，相当与3)<br>–&nbsp;3&nbsp;-&nbsp;Full&nbsp;multi-user&nbsp;mode&nbsp;完全多用户模式<br>–&nbsp;4&nbsp;–&nbsp;Unused&nbsp;未使用<br>–&nbsp;5&nbsp;-&nbsp;X11<br>–&nbsp;6&nbsp;–&nbsp;Reboot&nbsp;重启(不要将6设置为缺省，否则服务器会不断地重启)<br>修改文件/etc/inittab&nbsp;来设置机器启动的runlevel，如Figure&nbsp;10-3。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_4.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>对于SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server,&nbsp;执行<strong>YaST&nbsp;runlevel&nbsp;</strong>命令改变缺省runlevel值.&nbsp;<br>如图Figure&nbsp;10-2。<br>缺省情况下，保存了6个控制台：F1……F6。为节省内存，可以减少为3个。使用mingetty&nbsp;ttyx命令来实现，如图Figure&nbsp;10-3<br><strong>提示：</strong>即便是已经关闭了GUI，依然可以远程连接并启动GUI，可以使用<strong>ssh-x</strong>&nbsp;<br><br><strong>3&nbsp;改变内核参数<br></strong>Linux内核是操作系统的核心，对所有的Linux发行版本是通用的。内核参数可以改变，在命令行下执行<strong>sysctl&nbsp;</strong>命令。<br><strong>提示：</strong>缺省情况下，LINUX内核包括不必重启就可以使用<strong>sysctl</strong>命令的必要的模块。尽管如此，如果你在安装系统的时候选择移除该功能，那么你只有重新启动LINUX，才可以使得改变生效。&nbsp;<br>SUSE&nbsp;LINUX&nbsp;提供了图形界面下的修改方式。使用如下命令来启动powertweak工具：<br>/sbin/yast&nbsp;powertweak<br>使用如下命令启动基于字符的管理菜单：<br>/sbin/yast2&nbsp;powertweak<br><img src="attachments/m&#111;nth_0906/2009061610202025710_5.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>Red&nbsp;Hat也提供了图形界面下更改sysctl参数的方式：<br>/usr/bin/redhat-config-proc<br>如图Figure&nbsp;10-5&nbsp;<img src="attachments/m&#111;nth_0906/2009061610202025710_6.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Parameter&nbsp;storage&nbsp;locations</strong><br>内核参数保存在/proc(特别是/proc/sys)，提供了内核、处理器、内存、网络及其他组件的相关参数。每个执行的进程都有一个以相应PID命名的目录。Figure&nbsp;10-3列出了一些包括内核信息的文件。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_7.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><img src="attachments/m&#111;nth_0906/2009061610202025710_8.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>4&nbsp;内核的参数</strong><br>Table&nbsp;10-5&nbsp;列出了Red&nbsp;Hat&nbsp;V2.4与性能关系密切的一些内核参数。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_9.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><img src="attachments/m&#111;nth_0906/2009061610202025710_10.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>5&nbsp;处理器子系统调优</strong><br>处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。然而在这些系统中，CPU经常是性能的瓶颈。<br>在配有Xeon处理器的高端服务器中，你可以启用或者关闭Hyper-Threading（超线程功能）。Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS和SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server都支持该功能，从而可以使处理器在同一时刻执行两个线程或者进程。对于支持Hyper-Threading的操作系统和软件来说，不需要增加CPU时钟频率即可使性能得到明显的改进。例如，在4路的服务器上起用Hyper-Threading功能并使用性能监测工具（如top）来检测，可以看到8颗处理器。如图Figure&nbsp;10-6<br><img src="attachments/m&#111;nth_0906/2009061610202025710_11.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>提示，对于Hyper-Threading：<br>_&nbsp;基于SMP内核的LINUX才可以支持Hyper-Threading<br>_&nbsp;安装的CPU数量越多，从Hyper-Threading获得的性能上的提高就越少。可获得的性能提高大约为：<br>–&nbsp;2颗物理CPU:&nbsp;15-25%<br>–&nbsp;–&nbsp;4颗物理CPU:&nbsp;1-13%<br>–&nbsp;–&nbsp;8颗物理CPU:&nbsp;0-5%<br>–&nbsp;如需更多的关于Hyper-Threading信息，可浏览：<br><u><a target="_blank" href="http://www.intel.com/business/bss/products/hyperthreading/server/"><font color="#5c81a7">http://www.intel.com/business/bss/products/hyperthreading/server/</font></a></u><br>EM64T是<a href="http://www.intel.com/cd/corporate/home/apac/zho/" target="_blank"><img src="images/keywords/Intel.gif" border="0" align="absmiddle"> Intel</a>&nbsp;IA-32处理器的64-bit扩展。意思是，处理器能够支持更多的内存并支持64-bit应用同时完全兼容现存的32-bit应用。Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;3&nbsp;Update&nbsp;2&nbsp;和&nbsp;SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server&nbsp;9支持这种新的处理器。如需更多的EM64T信息，可浏览:<br><a target="_blank" href="http://www.intel.com/technology/64bitextensions/"><font color="#5c81a7">http://www.intel.com/technology/64bitextensions/</font></a><br><strong>选择正确的内核</strong><br>Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS和SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server都包括有若干个内核包，如Table&nbsp;10-6所列。选择合适的内核对性能非常重要。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_12.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>6&nbsp;内存子系统的调优</strong><br>内存子系统的调优不是很容易，需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm)，建议您每次只改变一个参数然后监测效果。对与虚拟内存的调整包括以下几个项目：<br>_&nbsp;配置Linux内核如何更新dirty&nbsp;buffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲，磁盘缓冲区的速度很慢。因此，如果服务器使用这类内存，性能会成问题。当缓冲区内的数据完全dirty，使用：sysctl&nbsp;-w&nbsp;vm.bdflush=&quot;30&nbsp;500&nbsp;0&nbsp;0&nbsp;500&nbsp;3000&nbsp;60&nbsp;20&nbsp;0&quot;<br>vm.bdflush有9个参数，但是建议您只改变其中的3个：<br>1&nbsp;<em>nfract</em>,&nbsp;为排队写入磁盘前，bdflush&nbsp;daemon允许的缓冲区最大百分比<br>2&nbsp;<em>ndirty</em>,&nbsp;为bdflush即刻写的最大缓冲区的值。如果这个值很大，bdflush需要更多的时间完成磁盘的数据更新。<br>7&nbsp;<em>nfract_sync</em>,&nbsp;发生同步前，缓冲区变dirty的最大百分比。<br>配置kswapd&nbsp;daemon，指定Linux的内存交换页数量<br>sysctl&nbsp;-w&nbsp;vm.kswapd=&quot;1024&nbsp;32&nbsp;64&quot;<br>三个参数的描述如下：<br>–&nbsp;tries_base&nbsp;相当于内核每次所交换的“页”的数量的四倍。对于有很多交换信息的系统，增加这个值可以改进性能。<br>–&nbsp;tries_min&nbsp;是每次kswapd&nbsp;swaps出去的pages的最小数量。<br>–&nbsp;swap_cluster&nbsp;是kswapd&nbsp;即刻写如的pages数量。数值小，会提高磁盘I/O的性能；数值大可能也会对请求队列产生负面影响。<br>如果要对这些参数进行改动，请使用工具<strong>vmstat</strong>检查对性能的影响。其它可以改进性能的虚拟内存参数为：<br>_&nbsp;buffermem<br>_&nbsp;freepages<br>_&nbsp;overcommit_memory<br>_&nbsp;page-cluster<br>_&nbsp;pagecache<br>_&nbsp;pagetable_cache<br><br><strong>7&nbsp;文件系统的调优<br></strong>总体而言，所有数据都要从磁盘获取并都要保存到磁盘。磁盘访问速度通常以毫秒来计算，比其它组件要慢上千倍（如内存、PCI操作是以纳秒或者微秒来计算的）。Linux文件系统定义了数据存储和访问的方式。<br>Linux可用的文件系统有多种，它们的性能和可扩展性各不相同。除了保存和管理磁盘数据，文件系统还负责保证数据的完整性。新版的Linux缺省安装已经包括日志文件系统（journaling&nbsp;file&nbsp;systems），日志文件系统可防止系统崩溃时导致的数据不一致问题。对文件系统元数据（metadata）的更改都被保存在一份单独的日志里，当发生系统崩溃时可以根据日志正确地恢复数据。除此之外，日志使系统重新启动时不必进行文件系统的检查，从而缩短了恢复时间。<br>同其他方面的计算一样，性能和完整性是相互平衡的。然而，因Linux服务器多用于企业环境及数据中心，因此要求具备更高的可用性。<br>这里，我们将介绍Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS和SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server的文件系统及其性能调优。<br><strong>7.1&nbsp;安装Linux前，硬件方面的考虑</strong><br>当前Linux的发行版本对CPU、硬盘和内存方面均有明确的安装要求。然而，对于如何设置磁盘子系统的说明远远不够。由于Linux服务器被广泛的应用于各种环境，数据中心的服务器整合，我们首先要回答的问题就是：“该服务器的功能是什么？”<br>磁盘子系统可能是整个服务器系统性能的主要方面。了解服务器的功能是判断I/O子系统对性能产生多大影响的关键。<br>下面几种服务器的磁盘I/O性能是非常重要的：<br>_&nbsp;文件和打印服务器要求在用户和磁盘子系统之间快速地移动数据。因文件服务器的功能是向客户端发送数据，所以要快速读取所有的数据。<br>_&nbsp;数据库服务器的最终目标是从磁盘上的数据仓库里查找和获取数据。即便有足够的内存，多数数据库服务器依然需要大量的磁盘I/O将数据读入内存和更新磁盘数据。<br>下面几种服务器的磁盘I/O性能不是最重要的：<br>_&nbsp;邮件服务器用于电子邮件的存储和转发，通常产生较大的通信量。对这类服务器来讲，网络性能更为重要。<br>_&nbsp;Web服务器用于发布静态和动态的Web页面，网络和内存子系统的性能非常重要。<br><strong>磁盘技术的选择</strong><br>除了理解服务器功能，还要了解磁盘容量的部署。下面是当前几种可选的磁盘技术及其容量、特点：&nbsp;<br><img src="attachments/m&#111;nth_0906/tqix_disktechselecti&#111;n.GIF" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br>技术&nbsp;&nbsp;&nbsp;&nbsp;花费&nbsp;&nbsp;&nbsp;&nbsp;功能&nbsp;&nbsp;&nbsp;&nbsp;容量及其限制&nbsp;<br>────────────────────────────────────────────<br>EIDE&nbsp;&nbsp;&nbsp;&nbsp;最低&nbsp;&nbsp;&nbsp;&nbsp;直连、本地存储低端服务器，如x305&nbsp;每控制器最多2块盘&nbsp;<br>────────────────────────────────────────────<br>SCSI&nbsp;&nbsp;&nbsp;&nbsp;低&nbsp;&nbsp;&nbsp;&nbsp;直连、本地存储中、高端服务器，如x346、x365&nbsp;已经使用了10年的标准；对数据线长度、传输带宽和磁盘数量均有限制单个通道的并发访问的数量也有所限制，限制了群集功能&nbsp;<br>────────────────────────────────────────────<br>SATA&nbsp;&nbsp;&nbsp;&nbsp;低&nbsp;&nbsp;&nbsp;&nbsp;中端数据存储应用&nbsp;2002年开始出现，是EIDE技术的延续；点对点协议，每个驱动器都有一个独立的通道，增强扩展能力；连续的磁盘访问性能可与SCSI相比；支持RAID&nbsp;<br>────────────────────────────────────────────<br>iSCSI&nbsp;&nbsp;&nbsp;&nbsp;较低&nbsp;&nbsp;&nbsp;&nbsp;中端数据存储，如Web/文件服务器&nbsp;定位于中端存储和远程启动；节省基础架构的开销提供了TCP/IP/Ethernet的灵活性和可靠性；TCP/IP的高延迟影响性能；目前Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux还不支持&nbsp;<br>────────────────────────────────────────────<br>Fibre&nbsp;Channel&nbsp;&nbsp;&nbsp;&nbsp;高&nbsp;&nbsp;&nbsp;&nbsp;高端的企业存储，如数据库服务器&nbsp;低延迟、高吞吐量，长传输距离可达10公里&nbsp;2&nbsp;Gbps传输速率；路径冗余功能提高可靠性；一个光纤环路支持127个设备，共享带宽，实现大规模群集&nbsp;<br>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br><br><br><strong>磁盘的数量</strong><br>磁盘的数量多少会影响到系统性能。对磁盘容量的需求通常是考虑磁盘数量的唯一因素，而忽视了吞吐量的因素。好的性能是依赖于提供I/O读写的磁头数量。可通过RAID技术来实现，包括软RAID和硬件RAID。许多型号的xSeries服务器提供了硬件RAID支持，Linux&nbsp;还提供了软RAID功能。2.4&nbsp;Linux&nbsp;kernel的软RAID是通过md设备驱动实现的，支持EIDE或SCSI硬盘。支持的RAID级别为RAID-0,&nbsp;RAID-1,和RAID-5，可以在初始安装配置或者用mdadm工具配置。Table&nbsp;10-8列出了可选的<a href="http://www.ibm.com/cn" target="_blank">IBM</a>RAID控制器：<br><img src="attachments/m&#111;nth_0906/2009061610202025710_13.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>提示：通常增加硬盘数量是提高磁盘性能的一个最有效方法。<br>更多的内容，请参考如下文档的第121页Chapter&nbsp;7,&nbsp;“Disk&nbsp;subsystem”<br>_&nbsp;<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;TotalStorage&nbsp;Disk&nbsp;Solutions&nbsp;for&nbsp;xSeries,&nbsp;SG24-6874-00<br><a target="_blank" href="http://www.redbooks.ibm.com/abstracts/sg246874.html"><font color="#5c81a7">http://www.redbooks.ibm.com/abstracts/sg246874.html</font></a><br>_&nbsp;<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Eserver&nbsp;xSeries&nbsp;ServeRAID&nbsp;Technology<br><a target="_blank" href="http://www.pc.ibm.com/ww/eserver/xseries/scsi_raid.html"><font color="#5c81a7">http://www.pc.ibm.com/ww/eserver/xseries/scsi_raid.html</font></a><br><strong>7.2&nbsp;Ext3:&nbsp;Red&nbsp;Hat的缺省文件系统</strong><br>从Red&nbsp;Hat&nbsp;7.2开始，缺省文件系统为Ext3。相对于Ext2，增加了日志。其主要特点为：<br>_&nbsp;Availability（可用性）：Ext3提供数据的写一致功能。即意外宕机情况下，不需要检查数据的一致性，使系统恢复时间从几小时缩短为几秒钟。<br>_&nbsp;Data&nbsp;integrity（数据完整性）：通过mount命令定义日志方式：data=journal，所有的数据，包括文件数据和元数据，都被定义为日志型。<br>_&nbsp;Speed（速度）：通过定义日志方式：data=writeback,&nbsp;可以选择获得数据完整性还是写速度的优势来满足不同的业务需求。<br>_&nbsp;Flexibility（灵活性）：从Ext2升级到Ext3非常简单，且不需要重新格式化硬盘。使用命令tune2fs&nbsp;并编辑文件/etc/fstab，便可完成升级。注意，Ext3可被mount为不带日志属性的ext2文件系统。<br>另外，许多第三方厂家兼容Ext3&nbsp;file&nbsp;systems，如PartitionMagic。<br><strong>7.3&nbsp;ReiserFS:&nbsp;SUSE&nbsp;LINUX的缺省文件系统</strong><br>从SUSE&nbsp;LINUX&nbsp;7.1开始，缺省安装的文件系统即为由Hans&nbsp;Reiser开发的ResierFS。在其设计之初便包括如下性能方面的考虑&nbsp;From&nbsp;its&nbsp;initial&nbsp;design,&nbsp;key&nbsp;performance<br>aspects&nbsp;have&nbsp;included:<br>_&nbsp;日志文件系统（Journaling）的设计提高了可靠性和恢复速度。<br>_&nbsp;使用平衡树数据结构可以同时存储内容数据和安全元数据，使其获得更快的访问速度。<br>_&nbsp;有效地利用磁盘空间，与其他文件系统不同，ResierFS不依赖于数据块的大小。Efficient&nbsp;use&nbsp;of&nbsp;disk&nbsp;space&nbsp;because,&nbsp;unlike&nbsp;other&nbsp;file&nbsp;systems,&nbsp;this&nbsp;file&nbsp;system<br>does&nbsp;not&nbsp;rely&nbsp;on&nbsp;block&nbsp;sizes.<br>目前SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server&nbsp;8的ReiserFS为V3.6，下一代文件系统是Reiser4。Reiser4提供的是不间断的文件系统,通过实现“atomic”文件系统避免系统崩溃,保证完成I/O操作；使用新的访问算法来获取2到5倍的性能提高。<br>提示:&nbsp;Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS不支持ReiserFS<br><strong>7.4&nbsp;通过Linux&nbsp;kernel对文件系统调优</strong><br>缺省文件系统的设置或许适合大多数应用环境。尽管如此，我们还是提供了如下几个提高磁盘性能的方法：<br><strong>访问时间更新</strong><br>linux文件系统当文件被访问，创建，更新的时候会保留纪录。默认的，当文件读写操作的时候，系统会更新last-time-read属性。因为写操作是比较耗费资源的操作，减少不必要的i/o可以整体上提高磁盘性能。<br>在挂接文件系统的时候，加入noatime参数可以禁止inode节点访问时间的修改。如果文件更新时间对于特定的应用不是很重要的话，比如web服务，就可以把noatime参数加入/etc/fstab文件中<br>比如：<br>/dev/sdb1&nbsp;/mountlocation&nbsp;ext3&nbsp;defaults,noatime&nbsp;1&nbsp;2<br>推荐利用单独的分区作为挂接点并打开noatime开关<br><strong>Tuning&nbsp;the&nbsp;elevator&nbsp;algorithm（调整阶梯算法）</strong><br>磁盘I/O&nbsp;阶梯算法产生于V2.4&nbsp;kernel。它是通过控制I/O请求获得服务前在队列中等待时间，来调整块I/O的运算法则。<br>这是由调整阶梯算法的读写值实现的。通过增加延迟（更大的读、写值），I/O请求在队列中等待更长时间，给I/O&nbsp;scheduler更好地完成I/O操作，改进性能。<br>对应用于大量磁盘I/O的Linux服务器，要在吞吐量和延迟方面找到一个合理的平衡点。Linux文件系统使用块设备，因此改进块读写的频率可以改进文件系统的性能。一个准则是，小缓存、平横的长延迟读写有利于大量磁盘I/O的Linux服务器。阶梯算法的调整是一个交互的过程，首先要获得基准性能曲线，然后改动设置，观察效果。Example&nbsp;10-1给出了如何用/sbin/elvtune命令显示当前设置以及如何改动读写队列的数值。<br>提示：Red&nbsp;Hat建议您将读延迟（-r）调整为写延迟(-w)的一半。<br>做过改动之后，确保/sbin/elvtune&nbsp;call被加到/etc/rc.d/rc.local&nbsp;(Red&nbsp;Hat)或者/etc/init.d/boot.local&nbsp;(SUSE&nbsp;LINUX)中，使设置在系统重新启动后生效。<br>redhat推荐调整升降算法来让读延迟是写延迟的一半<br>注意，2.6核心的linux指出elvtune命令已经作废，取而代之的是调整/sys/block结构<br><img src="attachments/m&#111;nth_0906/2009061610202025710_14.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>选择Ext3文件系统的日志模式</strong><br>Ext3文件系统可选三种日志模式,使用mount命令来完成:<br>_&nbsp;data=journal<br>文件数据和元数据均设置为日志方式,性能开销比较大<br>_&nbsp;data=ordered&nbsp;(缺省设置)<br>顺序写入，先写文件数据，再写元数据<br>_&nbsp;data=writeback<br>提供最快的访问速度,但是牺牲了数据的一致性。元数据仍然被记录到日志，从而确保元数据的完整。文件数据会在系统崩溃之后恢复到原先的状态。<br><strong>三种方法改变日志模式：</strong><br>_&nbsp;使用mount&nbsp;命令：<br>mount&nbsp;-o&nbsp;data=writeback&nbsp;/dev/sdb1&nbsp;/mnt/mountpoint&nbsp;这里/dev/sdb1&nbsp;是挂载的文件系统<br>_&nbsp;在/etc/fstab文件的选项中：<br>/dev/sdb1&nbsp;/testfs&nbsp;ext3&nbsp;defaults,journal=writeback&nbsp;0&nbsp;0<br>_&nbsp;更改root分区的data=ordered，更改上述/etc/fstab&nbsp;文件，执行mkinitrd命令来扫描/etc/fstab&nbsp;文件并创建新的印象文件。升级grub或lilo指向新的印象文件。更多有关Ext3的介绍，请参考：<br><a target="_blank" href="http://www.redhat.com/support/wpapers/redhat/ext3/"><font color="#5c81a7">http://www.redhat.com/support/wpapers/redhat/ext3/</font></a><br><strong>Tuning&nbsp;ReiserFS&nbsp;（调整ReiserFS）</strong><br>ReiserFS的优势之一是支持大量的小文件。取代传统Linux文件系统的块结构，ReiserFS使用树型结构，保存小文件的全部内容和大文件的结尾。ReiserFS不使用固定的块大小，避免出现碎片而浪费磁盘空间。<br>挂载ReiserFS&nbsp;文件系统时，有一个选项可以改进系统性能，但是会消耗更多的磁盘空间。使用notail来关闭“tail&nbsp;packing”选项，具体方法如下：<br><img src="attachments/m&#111;nth_0906/2009061610202025710_15.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Setting&nbsp;bdflush</strong><br>通过调整虚拟内存子系统也可以改进文件系统性能。Bdflush内核进程保证dirty&nbsp;buffers&nbsp;(任何当前被修改的只存在于易失性内存的数据)与磁盘一致。修改/proc/sys/vm/bdflush变量，来改变写入磁盘速率，避免磁盘竞争问题。对/proc下的任何修改即刻生效，但是重新启动后会恢复到原来状态。在/etc/rc.d/rc.local文件中加入echo命令使所做的修改永久生效。&nbsp;<br>1.&nbsp;对于2.4&nbsp;Linux&nbsp;kernels，在/proc/sys/vm/bdflush包括九个变量：nfract：dirty&nbsp;buffers在buffer&nbsp;cache中的最大百分比。Nfract值越大，写入磁盘的延迟越长。当内存不足时，大量的I/O操作被处理。为使磁盘I/O操作均匀分布，保持较低的值。<br>2.&nbsp;Ndirty：bdflush&nbsp;process可以一次写入磁盘的最大dirty&nbsp;buffers值。该值过大会导致大量I/O请求，过小会在bdflush&nbsp;daemon执行不够频繁的时候导致内存不足。<br>3.&nbsp;dummy2&nbsp;未使用<br>4.&nbsp;dummy3&nbsp;未使用<br>5.&nbsp;interval&nbsp;唤醒kupdate的最低速率。缺省是5秒，最小0秒，最大600秒。<br>6.&nbsp;age_buffer操作系统将buffer&nbsp;cache写入磁盘前等待的最长时间。缺省30秒，最小1秒，最大6000秒。<br>7.&nbsp;nfract_sync&nbsp;激活bdflush同步的dirty&nbsp;buffers百分比，缺省为60%.<br>8.&nbsp;nfract_stop&nbsp;停止bdflush的dirty&nbsp;buffers百分比，却省为20%.<br>9.&nbsp;dummy5&nbsp;未使用<strong>下面是更改bdflush变量的示例:</strong><br><img src="attachments/m&#111;nth_0906/2009061610202025710_16.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>SCSI磁盘的标签命令队列Tagged&nbsp;command&nbsp;queuing&nbsp;(TCQ)，产生于SCSI-2标准，是一种将到达SCSI驱动器的指令序列进行打标签和重新排序的方法。对于繁重、随机访问的I/O负荷，这种方法通过对I/O请求的重排序，使驱动器磁头位置最优化，改进I/O性能。<br>一些<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;xSeries服务器集成了Adaptec&nbsp;AIC-7xxx&nbsp;SCSI控制器。执行命令：cat&nbsp;/proc/scsi/aic7xxx/0来检查当前TCQ的设置，不必重新编译内核。可以在/etc/modules.conf中添加如下两行内容，指定参数aic7xxx=global_tag_depth:xx<br><img src="attachments/m&#111;nth_0906/2009061610202025710_17.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Block&nbsp;sizes块大小</strong><br>数据块大小是对磁盘读写的最小单位，直接影响服务器性能。如果服务器处理的多为小文件，那么较小的数据块尺寸会更有效。反之，如果服务器处理的多为大文件，大的数据尺寸块会提高系统性能。如果要改变数据块的大小必须重新格式化磁盘。做了RAID的磁盘，stripe&nbsp;size&nbsp;就是数据块的容量（光纤盘采用segment）。根据应用的不同合理选择正确的块大小，通常的原则是顺序读写应用宜使用大的块容量，象数据库这样的随机读写操作使用等同于记录大小的块容量更合适。<br><strong>不同系统版本，可选的块大小不同：</strong><br>_&nbsp;Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS&nbsp;with&nbsp;Ext3&nbsp;可选的块大小为1&nbsp;KB,&nbsp;2&nbsp;KB和4&nbsp;KB<br>_&nbsp;SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server&nbsp;with&nbsp;ReiserFS可选的块大小为4&nbsp;KB<br><strong>分区设置的原则</strong><br>Linux缺省安装创建三个分区：<br>_&nbsp;一个swap分区(自动设定为2倍内存大小但不超过2&nbsp;GB)<br>_&nbsp;一个小的boot分区:/boot&nbsp;(例如100&nbsp;MB)<br>_&nbsp;其它空间给根分区&nbsp;/<br>关于Linux磁盘分区的优化存在许多的争论。如果只有一个根分区的话，对于将来要增加新分区时会比较麻烦。而分区太多对文件系统的管理又会变的复杂。Linux安装过程中，允许创建多个分区。<br><strong>创建多个磁盘分区的好处：</strong><br>_文件系统出色的颗粒度属性使安全性得到改进。例如，允许所有用户和进程容易地访问/var和/tmp分区，并防止恶意访问。通过将这些分区分布到不同的磁盘，可在不影响系统正常运行的情况下对一些分区进行重建和恢复。<br>_&nbsp;某块磁盘故障导致的数据丢失不影响其他磁盘的数据，改进数据完整性。<br>_&nbsp;全新的安装或升级不影响其它分区。<br>_&nbsp;更有效的备份过程<br>设计分区时要考虑到备份工具，要了解备份工具是以分区为边界或是以更细颗粒度级别，如文件系统为边界。下表列出了要考虑与根分区分开的五个分区，这些分区的划分可以改进性能和灵活性。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_18.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><img src="attachments/m&#111;nth_0906/2009061610202025710_19.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>要更深层了解Linux文件系统和分区，访问如下关于文件系统层次的网页<br><a target="_blank" href="http://www.pathname.com/fhs"><font color="#5c81a7">http://www.pathname.com/fhs</font></a><br><strong>7.5&nbsp;交换分区</strong><br>当物理内存被全部占用，而系统又需要更多的内存时，交换设备发挥作用。这时，系统会将内存中很少使用的数据交换到磁盘的交换分区，释放物理内存。最初的交换分区在安装系统的过程建立，原则上是两倍的物理内存大小。Linux&nbsp;kernels&nbsp;2.4&nbsp;支持每分区24GB的交换分区，32-bit系统理论上支持最大8T分区大小。交换分区存在于独立的磁盘。<br>对于安装好的系统，增加内存时，需要设置更多的交换空间。两种方法可以实现：<br>·创建一个新的分区作为交换分区。如果没有空闲空间创建新的分区，可以创建一个交换文件。<br>·如有选择，最好是创建一个交换分区。&nbsp;<br>从磁盘I/O到交换分区绕过了文件系统，所有的性能开销都在写文件上，因此使提高了性能。<br>另外一种改进性能的方法是创建多个交换空间，实现并行读写磁盘。增加了交换分区或交换文件后，/etc/fstab文件包含如Example&nbsp;10-5所示内容：<br><img src="attachments/m&#111;nth_0906/2009061610202025710_20.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>通常情况下，Linux首先使用/dev/sda2交换分区，然后是/dev/sdb2，依次类推，直到获得足够的交换空间。也就是说，当没有更大空间需求的话，只有/dev/sda2被使用。将数据分散到更多的交换分区可以改进性能，这是因为所有的读写请求是被并行处理的。如果按照Example&nbsp;10-6改变文件配置，可以给前三个分区赋予更高的优先级。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_21.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>交换分区是从最高优先级开始使用的（32767最高，0为最低），给前三个分区赋予相同的优先级使数据被写到三个磁盘中；而不是写满一个再写下一个。三个分区并行使用，以提高性能。当前三个分区用满之后，第四个分区开始启用。也可以将所有分区设置为同一个优先级，但是假如这里有一块磁盘的速度比其它磁盘慢的话，性能就会下降。通常的做法是把交换分区放在最快的磁盘中。<br>提示：交换分区不是物理内存的替代品，它存在于物理磁盘中，性能远远低于内存访问速度。<br><br><strong>8&nbsp;网络子系统的调优<br></strong>操作系统安装完毕，就要对网络子系统进行调优。对其它子系统的影响：影响CPU利用率，尤其在有大量TCP连接、块尺寸又非常小时，内存的使用会明显增加。<br><strong>如何预防性能下降</strong><br>如下的sysctl命令用于改变安全设置，但是它也可以防止网络性能的下降。这些命令被设置为缺省值。<br>·关闭如下参数可以防止黑客对服务器IP地址的攻击<br><img src="attachments/m&#111;nth_0906/2009061610202025710_22.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·开启TCP&nbsp;SYN&nbsp;cookies，保护服务器避免受syn-flood攻击，包括服务取决denial-of-service&nbsp;(DoS)&nbsp;或者分布式服务拒绝distributed&nbsp;denial-of-service&nbsp;(DDoS)&nbsp;(仅适用Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS)<br><img src="attachments/m&#111;nth_0906/2009061610202025710_23.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击，所以我们只接受有可靠来源的重定向。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_24.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>另外，你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是路由器传输路由信息的机制。比如，当网关接收到来自所接网络主机的Internet数据报时，网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:&nbsp;<img src="attachments/m&#111;nth_0906/2009061610202025710_25.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_26.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·配置服务器拒绝接受广播风暴或者smurf&nbsp;攻击attacks:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_27.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·忽略所有icmp包或者pings:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_28.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_29.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>针对TCP和UDP的调优</strong><br>下边的命令用来对连接数量非常大的服务器进行调优.<br>·对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字.&nbsp;这对于Web服务器非常有效:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_30.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如果你使用该命令,还要启动TIME-WAIT&nbsp;套接字状态的快速循环功能:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_31.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>图Figure&nbsp;10-7显示出将这些功能启用,连接数量明显降低.因为每个TCP传输都包含远程客户端的协议信息缓存,所以有利于提高性能.缓存中存放round-trip时间、最大segment大小、拥塞窗口的信息。<br><img src="attachments/m&#111;nth_0906/2009061610202025710_32.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·参数tcp_fin_timeout&nbsp;是套接字关闭时，保持FIN-WAIT-2状态的时间。一个TCP连接以three-segment&nbsp;SYN序列开始,&nbsp;以three-segment&nbsp;FIN序列结束.均不保留数据.通过改变tcp_fin_timeout的值,&nbsp;从FIN序列到内存可以空闲出来处理新连接的时间缩短了,使性能得到改进.改变这个值的前要经过认真的监测,避免因为死套接字造成内存溢出.<br><img src="attachments/m&#111;nth_0906/2009061610202025710_33.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·服务器的一个问题是,同一时刻的大量TCP连接里有很多的连接被打开但是没有使用.&nbsp;TCP的keepalive功能检测到这些连接,缺省情况下,在2小时之后丢掉.&nbsp;2个小时的可能导致内存过度使用,降低性能.因此改成1800秒(30分钟)是个更好的选择:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_34.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·对于所有协议的队列,设置最大系统发送缓存(wmem)&nbsp;和接收缓存(rmem)到8MB<br><img src="attachments/m&#111;nth_0906/2009061610202025710_35.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>这些设置指定了创建TCP套接字时为其分配的内存容量.&nbsp;另外,使用如下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值：<br><img src="attachments/m&#111;nth_0906/2009061610202025710_36.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>第三个值必须小于或等于wmem_max和rmem_max。<br>·&nbsp;(SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server适用)&nbsp;通过保留路径验证来源数据包。缺省情况下，路由器转发所有的数据包，即便是明显的异常网络流量。通过启动和是的过滤功能，丢掉这些数据包：<br><img src="attachments/m&#111;nth_0906/2009061610202025710_37.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·当服务器负载繁重或者是有很多客户端都是超长延时的连接故障，可能会导致half-open连接数量的增加。这对于Web服务器很来讲很平常,尤其有很多拨号客户时.这些half-open连接保存在&nbsp;<em>backlog&nbsp;connections</em>&nbsp;队列中.将这个值最少设置为4096&nbsp;(缺省为1024).&nbsp;即便是服务器不接收这类连接,设置这个值还能防止受到denial-of-service&nbsp;(syn-flood)的攻击.<br><img src="attachments/m&#111;nth_0906/2009061610202025710_38.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>·设置ipfrag参数,尤其是NFS和Samba服务器。这里,我们可以设置用于重新组合IP碎片的最大、最小内存。当ipfrag_high_thresh值被指派，碎片会被丢弃直到达到ipfrag_low_thres值。<br>当TCP数据包传输发生错误时，开始碎片整理。有效的数据包保留在内存，同时损坏的数据包被转发。例如，设置可用内存范围从256&nbsp;MB到384&nbsp;MB:<br><img src="attachments/m&#111;nth_0906/2009061610202025710_39.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1642</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-16 10:20:23</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1641"><title>Linux 性能监测工具及调优介绍</title><description><![CDATA[Linux&nbsp;性能监测工具及调优介绍<br>LINUX系统下，大多数的性能监测工具保存在/proc目录下。这里我们将Linux&nbsp;AS&nbsp;和&nbsp;SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server中，命令行及图形方式下的性能监测工具做概括性介绍。这些工具有些在系统工具盘里，有些可以从网上下载。sar,&nbsp;iostat,和pstat这三个工具在distribution&nbsp;CD里，也可以从网上下载，网址是http://perso.wanadoo.fr/sebastien.godard/。<br>表--Linux&nbsp;性能监测工具<br>[img]attachments/month_0906/2009061610172087473_0.jpg[/img]<br>这些工具提供了IBM&nbsp;Director&nbsp;Capacity&nbsp;Manager之外的一些功能，能够在某个时间段内对系统性能进行监测。IBM&nbsp;Director适用于多种操作系统平台，从而使得异构环境下数据的收集和分析更容易。下面分三部分逐个介绍每个命令。]]></description><content:encoded><![CDATA[Linux&nbsp;性能监测工具及调优介绍<br>LINUX系统下，大多数的性能监测工具保存在/proc目录下。这里我们将Linux&nbsp;AS&nbsp;和&nbsp;SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server中，命令行及图形方式下的性能监测工具做概括性介绍。这些工具有些在系统工具盘里，有些可以从网上下载。sar,&nbsp;iostat,和pstat这三个工具在distribution&nbsp;CD里，也可以从网上下载，网址是<a href="http://perso.wanadoo.fr/sebastien.godard/" target="_blank">http://perso.wanadoo.fr/sebastien.godard/</a>。<br>表--Linux&nbsp;性能监测工具<br><img src="attachments/m&#111;nth_0906/2009061610172087473_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>这些工具提供了<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director&nbsp;Capacity&nbsp;Manager之外的一些功能，能够在某个时间段内对系统性能进行监测。<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;Director适用于多种操作系统平台，从而使得异构环境下数据的收集和分析更容易。下面分三部分逐个介绍每个命令。<br>1、uptime<br>uptime命令用于查看服务器运行了多长时间以及有多少个用户登录，快速获知服务器的负荷情况。<br>uptime的输出包含一项内容是load&nbsp;average，显示了最近1-，5-，15分钟的负荷情况。它的值代表等待CPU处理的进程数，如果CPU没有时间处理这些进程，load&nbsp;average值会升高；反之则会降低。<br>load&nbsp;average的最佳值是1，说明每个进程都可以马上处理并且没有CPU&nbsp;cycles被丢失。对于单CPU的机器，1或者2是可以接受的值；对于多路CPU的机器，load&nbsp;average值可能在8到10之间。<br>也可以使用uptime命令来判断网络性能。例如，某个网络应用性能很低，通过运行uptime查看服务器的负荷是否很高，如果不是，那么问题应该是网络方面造成的。<br>下边是uptime的输出样式<br><img src="attachments/m&#111;nth_0906/2009061610172087473_1.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>2、dmesg<br>dmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。<br>另外，使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启，系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。<br>下边是dmesg的输出样式<br><img src="attachments/m&#111;nth_0906/2009061610172087473_2.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><img src="attachments/m&#111;nth_0906/2009061610172087473_3.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>3、top<br>top命令显示处理器的活动状况。缺省情况下，显示占用CPU最多的任务，并且每隔5秒钟做一次刷新。<br>3.1&nbsp;Process&nbsp;priority&nbsp;and&nbsp;nice&nbsp;levels<br>Process&nbsp;priority的数值决定了CPU处理进程的顺序。LIUNX内核会根据需要调整该数值的大小。nice&nbsp;value局限于priority。priority的值不能低于nice&nbsp;value（nice&nbsp;value值越低，优先级越高）。您不可以直接修改Process&nbsp;priority的值，但是可以通过调整nice&nbsp;level值来间接地改变Process&nbsp;priority值，然而这一方法并不是所有时候都可用。如果某个进程运行异常的慢，可以通过降低nice&nbsp;level为该进程分配更多的CPU。<br>Linux&nbsp;支持的&nbsp;nice&nbsp;levels&nbsp;由19&nbsp;(优先级低)到-20&nbsp;(优先级高)，缺省值为0。<br>执行/bin/ps命令可以查看到当前进程的情况。<br>4、iostat<br>iostat由Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS发布。同时iostat也是Sysstat的一部分，可以下载到，网址是<a href="http://perso.wanadoo.fr/sebastien.godard/" target="_blank">http://perso.wanadoo.fr/sebastien.godard/</a><br>执行iostat命令可以从系统启动之后的CPU平均时间，类似于uptime。除此之外，iostat还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分：CPU使用情况和磁盘使用情况。<br>下边是iostat的输出样式<br><img src="attachments/m&#111;nth_0906/2009061610172087473_4.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>CPU占用情况包括四块内容<br>%user：显示user&nbsp;level&nbsp;(applications)时，CPU的占用情况。<br>%nice：显示user&nbsp;level在nice&nbsp;priority时，CPU的占用情况。<br>%sys:显示system&nbsp;level&nbsp;(kernel)时，CPU的占用情况。<br>%idle:&nbsp;显示CPU空闲时间所占比例。<br>磁盘使用报告分成以下几个部分：<br>Device:&nbsp;块设备的名字<br>tps:&nbsp;该设备每秒I/O传输的次数。多个I/O请求可以组合为一个，每个I/O请求传输的字节数不同，因此可以将多个I/O请求合并为一个。<br>Blk_read/s,&nbsp;Blk_wrtn/s:&nbsp;表示从该设备每秒读写的数据块数量。块的大小可以不同，如1024,&nbsp;2048&nbsp;或&nbsp;4048字节，这取决于partition的大小。<br>例如，执行下列命令获得设备/dev/sda1&nbsp;的数据块大小：<br>dumpe2fs&nbsp;-h&nbsp;/dev/sda1&nbsp;|grep&nbsp;-F&nbsp;&quot;Block&nbsp;size&quot;<br>输出结果如下<br>dumpe2fs&nbsp;1.34&nbsp;(25-Jul-2003)<br>Block&nbsp;size:&nbsp;1024<br>Blk_read,&nbsp;Blk_wrtn:&nbsp;指示自从系统启动之后数据块读/写的合计数。<br>5、vmstat<br>vmstat提供了processes,&nbsp;memory,&nbsp;paging,&nbsp;block&nbsp;I/O,&nbsp;traps和CPU的活动状况.<br>下边是vmstat的输出样式<br><img src="attachments/m&#111;nth_0906/2009061610172087473_5.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>各输出列的含义：<br>Process<br>–&nbsp;r:&nbsp;The&nbsp;number&nbsp;of&nbsp;processes&nbsp;waiting&nbsp;for&nbsp;runtime.<br>–&nbsp;b:&nbsp;The&nbsp;number&nbsp;of&nbsp;processes&nbsp;in&nbsp;uninterruptable&nbsp;sleep.<br>Memory<br>–&nbsp;swpd:&nbsp;The&nbsp;amount&nbsp;of&nbsp;virtual&nbsp;memory&nbsp;used&nbsp;(KB).<br>–&nbsp;free:&nbsp;The&nbsp;amount&nbsp;of&nbsp;idle&nbsp;memory&nbsp;(KB).<br>–&nbsp;buff:&nbsp;The&nbsp;amount&nbsp;of&nbsp;memory&nbsp;used&nbsp;as&nbsp;buffers&nbsp;(KB).<br>Swap<br>–&nbsp;si:&nbsp;Amount&nbsp;of&nbsp;memory&nbsp;swapped&nbsp;from&nbsp;the&nbsp;disk&nbsp;(KBps).<br>–&nbsp;so:&nbsp;Amount&nbsp;of&nbsp;memory&nbsp;swapped&nbsp;to&nbsp;the&nbsp;disk&nbsp;(KBps).<br>IO<br>–&nbsp;bi:&nbsp;Blocks&nbsp;sent&nbsp;to&nbsp;a&nbsp;block&nbsp;device&nbsp;(blocks/s).<br>–&nbsp;bo:&nbsp;Blocks&nbsp;received&nbsp;from&nbsp;a&nbsp;block&nbsp;device&nbsp;(blocks/s).<br>System<br>–&nbsp;in:&nbsp;The&nbsp;number&nbsp;of&nbsp;interrupts&nbsp;per&nbsp;second,&nbsp;including&nbsp;the&nbsp;clock.<br>–&nbsp;cs:&nbsp;The&nbsp;number&nbsp;of&nbsp;context&nbsp;switches&nbsp;per&nbsp;second.<br>CPU&nbsp;(these&nbsp;are&nbsp;percentages&nbsp;of&nbsp;total&nbsp;CPU&nbsp;time)<br>-&nbsp;us:&nbsp;Time&nbsp;spent&nbsp;running&nbsp;non-kernel&nbsp;code&nbsp;(user&nbsp;time,&nbsp;including&nbsp;nice&nbsp;time).<br>–&nbsp;sy:&nbsp;Time&nbsp;spent&nbsp;running&nbsp;kernel&nbsp;code&nbsp;(system&nbsp;time).<br>–&nbsp;id:&nbsp;Time&nbsp;spent&nbsp;idle.&nbsp;Prior&nbsp;to&nbsp;Linux&nbsp;2.5.41,&nbsp;this&nbsp;included&nbsp;IO-wait&nbsp;time.<br>–&nbsp;wa:&nbsp;Time&nbsp;spent&nbsp;waiting&nbsp;for&nbsp;IO.&nbsp;Prior&nbsp;to&nbsp;Linux&nbsp;2.5.41,&nbsp;this&nbsp;appeared&nbsp;as&nbsp;zero.<br><br>Linux&nbsp;性能监测工具及调优介绍(二)<br>这部分内容包括：sar;KDE&nbsp;System&nbsp;Guard;free;Traffic-vis<br><strong>6&nbsp;sar</strong><br>sar是Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS发行的一个工具，同时也是Sysstat工具集的命令之一，可以从以下网址下载：<a href="http://perso.wanadoo.fr/sebastien.godard/" target="_blank">http://perso.wanadoo.fr/sebastien.godard/</a><br>sar用于收集、报告或者保存系统活动信息。sar由三个应用组成：sar显示数据、sar1和sar2用于收集和保存数据。<br>使用sar1和sar2，系统能够配置成自动抓取信息和日志，以备分析使用。配置举例：在/etc/crontab中添加如下几行内容<br><img src="attachments/m&#111;nth_0906/2009061610172087473_6.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>同样的，你也可以在命令行方式下使用sar运行实时报告。如图所示：<br>从收集的信息中，可以得到详细的CPU使用情况(%user,&nbsp;%nice,&nbsp;%system,&nbsp;%idle)、内存页面调度、网络I/O、进程活动、块设备活动、以及interrupts/second<br><img src="attachments/m&#111;nth_0906/2009061610172087473_7.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>7&nbsp;KDE&nbsp;System&nbsp;Guard</strong><br>KDE&nbsp;System&nbsp;Guard&nbsp;(KSysguard)&nbsp;指KDE任务管理和性能监视。监视本地及远程客户端/服务器架构体系的中的主机。<br>如图14-1<br><img src="attachments/m&#111;nth_0906/2009061610172087473_8.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如图所示，使用传感器获取显示的信息。传感器可以返回简单的数值或者复杂的表格信息。<br>对于每一种类型的信息，提供了一个或者更多显示。并以工作表的形式独立保存。<br>每个传感器监视一个部件。所有显示的传感器均可以用鼠标拖拽。有三个选择<br>1可以删除和替换某个传感器<br>2可以编辑修改行数和列数<br>3可以建立新的工作表并选择所需的传感器<br>如图14-2<br><img src="attachments/m&#111;nth_0906/2009061610172087473_9.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>7.1&nbsp;Work&nbsp;space<br>如图14-2所示，有两个tabs：System&nbsp;Load和Process&nbsp;Table<br>System&nbsp;Load<br>该工作表中有四个传感器视窗：CPU&nbsp;Load,&nbsp;Load&nbsp;Average&nbsp;(1&nbsp;Minute),&nbsp;Physical&nbsp;Memory,&nbsp;和&nbsp;Swap&nbsp;Memory.&nbsp;<br>从Physical&nbsp;Memory&nbsp;window可以看到，同一个window中可以显示多个传感器。在图上移动鼠标，根据所出现的描述信息可以知道哪个传感器正被监视。也可以点鼠标右键该图并选择Properties--Sensors，如图14-3所示。<br><img src="attachments/m&#111;nth_0906/2009061610172087473_10.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>Process&nbsp;Table<br>图14-4<br><img src="attachments/m&#111;nth_0906/2009061610172087473_11.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>点击Process&nbsp;Table显示所有执行的进程。缺省情况下，按照System&nbsp;CPU&nbsp;utilization排序，也可以简单地通过鼠标点击相应项改变排序的方式。<br>定制一个work&nbsp;sheet<br>指导定制创建一个如图14-7所示的work&nbsp;sheet<br>1.&nbsp;选择File-&gt;&nbsp;New&nbsp;,如图&nbsp;14-5&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061610172087473_12.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>2.&nbsp;输入标题以及行列数；即最多的监视窗口数，这里为四个。如图14-6<br><img src="attachments/m&#111;nth_0906/2009061610172087473_13.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>注：最短2秒更新间隔<br>3.&nbsp;现在只需简单将传感器从左恻拖拽到右恻的窗口中。显示可选项为<br>–&nbsp;Signal&nbsp;Plotter.&nbsp;显示一个或者多个传感器，如果有多个，则分层显示。如果显示屏足够大，以网格方式显示。<br>缺省情况下，为自动排列方式，最大和最小值自动设置。如果要修改最大最小值，首先要关闭自动排列方式。<br>–&nbsp;Multimeter.&nbsp;以数字方式显示传感器的值。在属性对话框中，可以改变上限和下限。超过限制时，显示警告色。<br>–&nbsp;BarGraph.&nbsp;将传感器的值显示为dancing&nbsp;bars.&nbsp;同Multimeter一样，在属性对话框中，可以改变上限和下限。超过限制时，显示警告色。<br>–&nbsp;Sensor&nbsp;Logger&nbsp;：Sensor&nbsp;Logger不显示任何值，而是将上述信息记录到某个文件中，&nbsp;并加入日期和时间。对每个传感器，你必须定义一个日志文件、记录日志的时间间隔、以及是否报警。<br>4.点File&nbsp;-&gt;&nbsp;Save，保存worksheet.<br><img src="attachments/m&#111;nth_0906/2009061610172087473_14.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如需获取更多KDE&nbsp;System&nbsp;Guard信息，访问:<a target="_blank" href="http://docs.kde.org/en/3.2/kdebase/ksysgaurd"><font color="#5c81a7">http://docs.kde.org/en/3.2/kdebase/ksysgaurd</font></a><br>注：work&nbsp;sheet被保存在用户目录中，其他管理员可能无法访问。<br><strong>8&nbsp;free</strong><br>/bin/free命令显示所有空闲的和使用的内存数量，包括swap。同时也包含内核使用的缓存。<br><img src="attachments/m&#111;nth_0906/2009061610172087473_15.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>9&nbsp;Traffic-vis</strong><br>Traffic-vis是一套测定哪些主机在IP网进行通信、通信的目标主机以及传输的数据量。并输出纯文本、HTML或者GIF格式的报告。<br>注：Traffic-vis仅仅适用于SUSE&nbsp;LINUX&nbsp;ENTERPRISE&nbsp;SERVER。<br>如下命令用来收集网口eth0的信息：<br>traffic-collector&nbsp;-i&nbsp;eth0&nbsp;-s&nbsp;/root/output_traffic-collector<br>可以使用killall命令来控制该进程。如果要将报告写入磁盘，可使用如下命令：<br>killall&nbsp;-SIGUSR1&nbsp;traffic-collector<br>要停止对信息的收集，执行如下命令：killall&nbsp;-SIGTERM&nbsp;traffic-collector<br>注意，不要忘记执行最后一条命令，否则会因为内存占用而影响性能。<br>可以根据packets,&nbsp;bytes,&nbsp;TCP连接数对输出进行排序，根据每项的总数或者收/发的数量进行。<br>例如根据主机上packets的收/发数量排序，执行命令：<br>traffic-sort&nbsp;-i&nbsp;output_traffic-collector&nbsp;-o&nbsp;output_traffic-sort&nbsp;-Hp<br>如要生成HTML格式的报告，显示传输的字节数，packets的记录、全部TCP连接请求和网络中每台服务器的信息，请运行命令：<br>traffic-tohtml&nbsp;-i&nbsp;output_traffic-sort&nbsp;-o&nbsp;output_traffic-tohtml.html<br>可以通过浏览器方式查看报告的内容，如图14-8<br><img src="attachments/m&#111;nth_0906/2009061610172087473_16.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如要生成GIF格式（600X600）的报告，请运行命令：<br>traffic-togif&nbsp;-i&nbsp;output_traffic-sort&nbsp;-o&nbsp;output_traffic-togif.gif&nbsp;-x&nbsp;600&nbsp;-y&nbsp;600<br>图14-9显示了网络中主机之间通信的情况。GIF格式的报告可以方便地发现网络广播，查看哪台主机在TCP网络中使用IPX/SPX协议并隔离网络，需要记住的是，IPX是基于广播包的协议。如果我们需要查明例如网卡故障或重复IP的问题，需要使用特殊的工具。例如SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server自带的Ethereal。<br><img src="attachments/m&#111;nth_0906/2009061610172087473_17.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>技巧和提示：使用管道，可以只需执行一条命令来产生报告。如生成HTML的报告，执行命令：<br>cat&nbsp;output_traffic-collector&nbsp;|&nbsp;traffic-sort&nbsp;-Hp&nbsp;|&nbsp;traffic-tohtml<br>-o&nbsp;output_traffic-tohtml.html<br>如要生成GIF文件，执行命令：<br>cat&nbsp;output_traffic-collector&nbsp;|&nbsp;traffic-sort&nbsp;-Hp&nbsp;|&nbsp;traffic-togif<br>-o&nbsp;output_traffic-togif.gif&nbsp;-x&nbsp;600&nbsp;-y&nbsp;600<br><br>Linux&nbsp;性能监测工具及调优介绍(三)<br>这部分内容包括：pmap;strace;ulimit;mpstat<br><strong>10&nbsp;pmap</strong><br>pmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。图14-9显示了SUSE&nbsp;LINUX<br>Enterprise&nbsp;Server下pmap命令执行结果<br>pmap&nbsp;-x&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061610172087473_18.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>图14-10显示了smbd进程所占用的内存<br>pmap&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061610172087473_19.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>11&nbsp;strace</strong><br>strace截取和记录系统进程调用，以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。<br>使用该命令需要指明进程的ID(PID)，例如：<br>strace&nbsp;-p&nbsp;<br>图14-11&nbsp;shows&nbsp;an&nbsp;example&nbsp;of&nbsp;the&nbsp;output&nbsp;of&nbsp;strace.<br><img src="attachments/m&#111;nth_0906/2009061610172087473_20.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>12&nbsp;ulimit</strong><br>ulimit内置在bash&nbsp;shell中，用来提供对shell和进程可用资源的控制<br>使用选项-a列出可以设置的所有参数：<br>ulimit&nbsp;-a<br><img src="attachments/m&#111;nth_0906/2009061610172087473_21.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>-H和-S选项指明所给资源的软硬限制。如果超过了软限制，系统管理员会收到警告信息。硬限制指在用户收到超过文件句炳限制的错误信息之前，可以达到的最大值。<br>例如可以设置对文件句炳的硬限制：ulimit&nbsp;-Hn&nbsp;4096<br>例如可以设置对文件句炳的软限制：ulimit&nbsp;-Sn&nbsp;1024<br>查看软硬值，执行如下命令：<br>ulimit&nbsp;-Hn<br>ulimit&nbsp;-Sn<br>例如限制Oracle用户.&nbsp;在/etc/security/limits.conf输入以下行:<br>soft&nbsp;nofile&nbsp;4096<br>hard&nbsp;nofile&nbsp;10240<br>对于Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS，确定文件/etc/pam.d/system-auth包含如下行<br>session&nbsp;required&nbsp;/lib/security/$ISA/pam_limits.so<br>对于SUSE&nbsp;LINUX&nbsp;Enterprise&nbsp;Server，确定文件/etc/pam.d/login&nbsp;和/etc/pam.d/sshd包含如下行：<br>session&nbsp;required&nbsp;pam_limits.so<br>这一行使这些限制生效。<br><strong>13&nbsp;mpstat</strong><br>mpstat是Sysstat工具集的一部分，下载地址是<a href="http://perso.wanadoo.fr/sebastien.godard/" target="_blank">http://perso.wanadoo.fr/sebastien.godard/</a><br>mpstat用于报告多路CPU主机的每颗CPU活动情况，以及整个主机的CPU情况。<br>例如，下边的命令可以隔2秒报告一次处理器的活动情况，执行3次<br>mpstat&nbsp;2&nbsp;3<br><img src="attachments/m&#111;nth_0906/2009061610172087473_22.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>如下命令每隔1秒显示一次多路CPU主机的处理器活动情况，执行3次<br>mpstat&nbsp;-P&nbsp;ALL&nbsp;1&nbsp;3<br><img src="attachments/m&#111;nth_0906/2009061610172087473_23.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1641</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-16 10:17:23</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1640"><title>apache安装完成后，如何添加模块</title><description><![CDATA[apache安装完成后，如何添加模块(http://blog.sina.com.cn/s/blog_4890155d01000bo7.html)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apache安装后，如果想再添加模块，往往不想重新安装一次，再者，我在安装中发现，并不是安装文件中所有的modules都会被默认安装，即使在安装中使用了&nbsp;./configure&nbsp;--prefix=/usr/local/apache&nbsp;--enable-so&nbsp;--enable-modules=all&nbsp;--enable-mods-shared=all也是如此。我使用上述方法安装的apache2.2.6就没有安装proxy相关模块。这时，需要手工生成so文件，但会自动的被复制到你的apache安装目录的modules中，然后修改apache的配置文件，加载相关模块，验证apache配置并重启服务即可。以上描述的具体操作步骤如下：<br>操作系统：linux&nbsp;redhat&nbsp;4.5&nbsp;ES<br>apache版本：2.2.6&nbsp;可自行下载tar包]]></description><content:encoded><![CDATA[apache安装完成后，如何添加模块(<a href="http://blog.sina.com.cn/s/blog_4890155d01000bo7.html)" target="_blank">http://blog.sina.com.cn/s/blog_4890155d01000bo7.html)</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apache安装后，如果想再添加模块，往往不想重新安装一次，再者，我在安装中发现，并不是安装文件中所有的modules都会被默认安装，即使在安装中使用了&nbsp;./configure&nbsp;--prefix=/usr/local/apache&nbsp;--enable-so&nbsp;--enable-modules=all&nbsp;--enable-mods-shared=all也是如此。我使用上述方法安装的apache2.2.6就没有安装proxy相关模块。这时，需要手工生成so文件，但会自动的被复制到你的apache安装目录的modules中，然后修改apache的配置文件，加载相关模块，验证apache配置并重启服务即可。以上描述的具体操作步骤如下：<br>操作系统：linux&nbsp;redhat&nbsp;4.5&nbsp;ES<br>apache版本：2.2.6&nbsp;可自行下载tar包<br>&nbsp;<br>1.&nbsp;拷贝安装包到/usr/local,并在目标目录下进行解压。<br><div class="code_main">[root@localhost&nbsp;local]#&nbsp;cd&nbsp;/usr/local<br>[root@localhost&nbsp;local]#&nbsp;tar&nbsp;-zxvf&nbsp;httpd-2.2.4.tar.gz</div><br>2.&nbsp;配置安装参数，安装的目标目录为/usr/local/apache，建议设置enable-mods-shared=all，不用的module注释掉就行了！<br><div class="code_main">[root@localhost&nbsp;local]#&nbsp;cd&nbsp;httpd-2.2.4<br>[root@localhost&nbsp;httpd-2.2.4]#&nbsp;./configure&nbsp;--prefix=/usr/local/apache&nbsp;--enable-so&nbsp;--enable-mods-shared=all</div><br>3.&nbsp;编译并安装。<br><div class="code_main">[root@localhost&nbsp;httpd-2.2.4]#&nbsp;make<br>[root@localhost&nbsp;httpd-2.2.4]#&nbsp;make&nbsp;install</div><br>4.&nbsp;启动Apache，并测试。<br><div class="code_main">[root@localhost&nbsp;httpd-2.2.4]#&nbsp;cd&nbsp;/usr/local/apache/bin<br>[root@localhost&nbsp;bin]#&nbsp;./apachectl&nbsp;start</div><br><br>打开浏览器，并在地址栏中输入主机的IP地址<br>如<a href="http://Localhost/" target="_blank">http://Localhost/</a><br>如果出现以下画面则说明安装成功。<br>It&nbsp;works!<br><br>&nbsp;注意：安装完成后检查系统服务中的HTTPD服务是否已经启动，如果启动需要先停止。<br>5.&nbsp;编译mod_proxy.so.<br><div class="code_main">[root@localhost&nbsp;httpd-2.2.4]#&nbsp;cd&nbsp;modules<br>[root@localhost&nbsp;modules]#&nbsp;/usr/local/apache/bin/apxs&nbsp;-c&nbsp;-i&nbsp;mod_proxy.c&nbsp;proxy_util.c</div>这时生成的mod_proxy.so会被自动复制到/usr/local/apache/modules<br>6.&nbsp;修改配置文件<br><div class="code_main">[root@localhost&nbsp;modules]#&nbsp;cd&nbsp;/usr/local/apache/conf<br>[root@localhost&nbsp;conf]#&nbsp;vi&nbsp;httpd.conf</div>添加一行&nbsp;&nbsp;<br><div class="code_main">LoadModule&nbsp;proxy_module&nbsp;modules/mod_proxy.so</div><br>7.&nbsp;测试配置是否正确<br><div class="code_main">[root@localhost&nbsp;conf]#&nbsp;cd&nbsp;..<br>[root@localhost&nbsp;apache]#&nbsp;cd&nbsp;bin<br>[root@localhost&nbsp;bin]#&nbsp;./apachectl&nbsp;configtest</div><br>出现如下信息证明配置正确<br><div class="code_main">[Fri&nbsp;Nov&nbsp;23&nbsp;15:45:55&nbsp;2007]&nbsp;[warn]&nbsp;module&nbsp;rewrite_module&nbsp;is&nbsp;already&nbsp;loaded,&nbsp;skipping<br>Syntax&nbsp;OK</div><br>8.&nbsp;重新启动apache<br><div class="code_main">[root@localhost&nbsp;bin]#&nbsp;./apachectl&nbsp;stop<br>[root@localhost&nbsp;bin]#&nbsp;./apachectl&nbsp;start</div><br>完成！！<br><br>apache&nbsp;apx&nbsp;添加模块(<a href="http://hi.baidu.com/seesea8/blog/item/0cfe8d16355d5054f2de32f7.html)" target="_blank">http://hi.baidu.com/seesea8/blog/item/0cfe8d16355d5054f2de32f7.html)</a><br>Apache安装完成后，添加mod_proxy模块<br>apxs是一个为Apache&nbsp;HTTP服务器编译和安装扩展模块的工具，用于编译一个或多个源程序或目标代码文件为动态共享对象，使之可以用LoadModule指令在运行时加载到Apache服务器中。<br><br>1.&nbsp;进入apache源代码的modules目录<br>2.&nbsp;运行如下命令自动编译、安装和修改httpd.conf文件，激活mod_proxy模块：<br><div class="code_main">apache&nbsp;path/bin/apxs&nbsp;-c&nbsp;-i&nbsp;-a&nbsp;mod_proxy.c&nbsp;proxy_util.c</div><br><br>选项说明：<br>-c&nbsp;执行编译操作<br>-i&nbsp;安装操作，安装一个或多个动态共享对象到服务器的modules目录<br>-a&nbsp;自动增加一个LoadModule行到httpd.conf文件，以激活此模块，若此行存在则启用之<br>-A&nbsp;与-a类似，但是它增加的LoadModule行前有井号前缀(#)<br>-e&nbsp;需要执行编辑操作，可与-a和-A选项配合使用，与-i操作类似，修改httpd.conf文件，但并不安装此模块<br><br>3.&nbsp;重启apache。<br><br>apache&nbsp;添加&nbsp;mod_rewrite&nbsp;模块(<a href="http://hi.baidu.com/howard_2008/blog/item/33cda0c71e9794d8d10060d5.html)" target="_blank">http://hi.baidu.com/howard_2008/blog/item/33cda0c71e9794d8d10060d5.html)</a><br>我使用的是httpd&nbsp;2.0.55&nbsp;注意配置httpd.conf&nbsp;时&nbsp;是&nbsp;rewrite_module&nbsp;而不是&nbsp;mod_rewrite<br><br>1、Apache安装rewrite模块的时候需要DBM支持，否则无法编译。使用rpm&nbsp;-qa&nbsp;gdbm&nbsp;查询，如果没有，需要先下载并安装gdbm：<br>下载地址：<a href="ftp://ftp.gnu.org/gnu/gdbm/" target="_blank">ftp://ftp.gnu.org/gnu/gdbm/</a><br><br>安装步骤:&nbsp;<br><div class="code_main">./configure<br>make<br>make&nbsp;install<br>make&nbsp;install-compat&nbsp;(如果不执行此步,无法编译出ndbm.h头文件)</div><br><br>2、安装<br><div class="code_main">#cd&nbsp;/root/src/httpd-2.0.55/modules/mappers<br>#/usr/local/apache/bin/apxs&nbsp;-c&nbsp;mod_rewrite.c&nbsp;<br>#gcc&nbsp;-shared&nbsp;-o&nbsp;mod_rewrite.so&nbsp;mod_rewrite.o&nbsp;-lgdbm<br>#/usr/local/apache/bin/apxs&nbsp;-i&nbsp;-A&nbsp;-n&nbsp;mod_rewrite&nbsp;mod_rewrite.so&nbsp;</div><br><br>/usr/local/apache/bin/&nbsp;是我正在使用的apahce的目录<br><br>3、配置httpd.conf<br>加入&nbsp;LoadModule&nbsp;rewrite_module&nbsp;modules/mod_rewrite.so&nbsp;<br><br>注意是&nbsp;rewrite_module&nbsp;而不是&nbsp;mod_rewrite&nbsp;<br><br>]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1640</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-12 16:28:22</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1639"><title>Filesystem Hierarchy Standard</title><description><![CDATA[<br>Filesystem&nbsp;Hierarchy&nbsp;Standard<br>Filesystem&nbsp;Hierarchy&nbsp;Standard&nbsp;Group<br>Edited&nbsp;by<br>Rusty&nbsp;Russell]]></description><content:encoded><![CDATA[<br>Filesystem&nbsp;Hierarchy&nbsp;Standard<br>Filesystem&nbsp;Hierarchy&nbsp;Standard&nbsp;Group<br>Edited&nbsp;by<br>Rusty&nbsp;Russell<br>Daniel&nbsp;Quinlan<br>Christopher&nbsp;Yeoh<br>Copyright&nbsp;©&nbsp;1994-2004&nbsp;Daniel&nbsp;Quinlan<br>Copyright&nbsp;©&nbsp;2001-2004&nbsp;Paul&nbsp;&#39;Rusty&#39;&nbsp;Russell<br>Copyright&nbsp;©&nbsp;2003-2004&nbsp;Christopher&nbsp;Yeoh<br>This&nbsp;standard&nbsp;consists&nbsp;of&nbsp;a&nbsp;set&nbsp;of&nbsp;requirements&nbsp;and&nbsp;guidelines&nbsp;for&nbsp;file&nbsp;and&nbsp;directory&nbsp;placement&nbsp;under&nbsp;UNIX-like&nbsp;operating&nbsp;systems.&nbsp;The&nbsp;guidelines&nbsp;are&nbsp;intended&nbsp;to&nbsp;support&nbsp;interoperability&nbsp;of&nbsp;applications,&nbsp;system&nbsp;administration&nbsp;tools,&nbsp;development&nbsp;tools,&nbsp;and&nbsp;scripts&nbsp;as&nbsp;well&nbsp;as&nbsp;greater&nbsp;uniformity&nbsp;of&nbsp;documentation&nbsp;for&nbsp;these&nbsp;systems.<br>All&nbsp;trademarks&nbsp;and&nbsp;copyrights&nbsp;are&nbsp;owned&nbsp;by&nbsp;their&nbsp;owners,&nbsp;unless&nbsp;specifically&nbsp;noted&nbsp;otherwise.&nbsp;Use&nbsp;of&nbsp;a&nbsp;term&nbsp;in&nbsp;this&nbsp;document&nbsp;should&nbsp;not&nbsp;be&nbsp;regarded&nbsp;as&nbsp;affecting&nbsp;the&nbsp;validity&nbsp;of&nbsp;any&nbsp;trademark&nbsp;or&nbsp;service&nbsp;mark.<br>Permission&nbsp;is&nbsp;granted&nbsp;to&nbsp;make&nbsp;and&nbsp;distribute&nbsp;verbatim&nbsp;copies&nbsp;of&nbsp;this&nbsp;standard&nbsp;provided&nbsp;the&nbsp;copyright&nbsp;and&nbsp;this&nbsp;permission&nbsp;notice&nbsp;are&nbsp;preserved&nbsp;on&nbsp;all&nbsp;copies.<br>Permission&nbsp;is&nbsp;granted&nbsp;to&nbsp;copy&nbsp;and&nbsp;distribute&nbsp;modified&nbsp;versions&nbsp;of&nbsp;this&nbsp;standard&nbsp;under&nbsp;the&nbsp;conditions&nbsp;for&nbsp;verbatim&nbsp;copying,&nbsp;provided&nbsp;also&nbsp;that&nbsp;the&nbsp;title&nbsp;page&nbsp;is&nbsp;labeled&nbsp;as&nbsp;modified&nbsp;including&nbsp;a&nbsp;reference&nbsp;to&nbsp;the&nbsp;original&nbsp;standard,&nbsp;provided&nbsp;that&nbsp;information&nbsp;on&nbsp;retrieving&nbsp;the&nbsp;original&nbsp;standard&nbsp;is&nbsp;included,&nbsp;and&nbsp;provided&nbsp;that&nbsp;the&nbsp;entire&nbsp;resulting&nbsp;derived&nbsp;work&nbsp;is&nbsp;distributed&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;a&nbsp;permission&nbsp;notice&nbsp;identical&nbsp;to&nbsp;this&nbsp;one.<br>Permission&nbsp;is&nbsp;granted&nbsp;to&nbsp;copy&nbsp;and&nbsp;distribute&nbsp;translations&nbsp;of&nbsp;this&nbsp;standard&nbsp;into&nbsp;another&nbsp;language,&nbsp;under&nbsp;the&nbsp;above&nbsp;conditions&nbsp;for&nbsp;modified&nbsp;versions,&nbsp;except&nbsp;that&nbsp;this&nbsp;permission&nbsp;notice&nbsp;may&nbsp;be&nbsp;stated&nbsp;in&nbsp;a&nbsp;translation&nbsp;approved&nbsp;by&nbsp;the&nbsp;copyright&nbsp;holder.<br><strong>Table&nbsp;of&nbsp;Contents</strong>&nbsp;<br>1.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#INTRODUCTION">Introduction</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#CONVENTIONS">Conventions</a><br>2.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#THEFILESYSTEM">The&nbsp;Filesystem</a>&nbsp;<br>3.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#THEROOTFILESYSTEM">The&nbsp;Root&nbsp;Filesystem</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE2">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#BINESSENTIALUSERCOMMANDBINARIES">/bin&nbsp;:&nbsp;Essential&nbsp;user&nbsp;command&nbsp;binaries&nbsp;(for&nbsp;use&nbsp;by&nbsp;all&nbsp;users)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE3">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS2">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS2">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#BOOTSTATICFILESOFTHEBOOTLOADER">/boot&nbsp;:&nbsp;Static&nbsp;files&nbsp;of&nbsp;the&nbsp;boot&nbsp;loader</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE4">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS3">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#DEVDEVICEFILES">/dev&nbsp;:&nbsp;Device&nbsp;files</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE5">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS4">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCHOSTSPECIFICSYSTEMCONFIGURATION">/etc&nbsp;:&nbsp;Host-specific&nbsp;system&nbsp;configuration</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE6">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS3">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS5">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCOPTCONFIGURATIONFILESFOROPT">/etc/opt&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;/opt</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCX11CONFIGURATIONFORTHEXWINDOWS">/etc/X11&nbsp;:&nbsp;Configuration&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCSGMLCONFIGURATIONFILESFORSGMLAN">/etc/sgml&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;SGML&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN795">/etc/xml&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;XML&nbsp;(optional)</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#HOMEUSERHOMEDIRECTORIES">/home&nbsp;:&nbsp;User&nbsp;home&nbsp;directories&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE10">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS4A">Requirements</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBESSENTIALSHAREDLIBRARIESANDKERN">/lib&nbsp;:&nbsp;Essential&nbsp;shared&nbsp;libraries&nbsp;and&nbsp;kernel&nbsp;modules</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE11">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS5">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS7">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBLTQUALGTALTERNATEFORMATESSENTIAL">/lib&nbsp;:&nbsp;Alternate&nbsp;format&nbsp;essential&nbsp;shared&nbsp;libraries&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE12">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS6">Requirements</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#MEDIAMOUNTPOINT">/media&nbsp;:&nbsp;Mount&nbsp;point&nbsp;for&nbsp;removeable&nbsp;media</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSEMEDIAMOUNTPOINT">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONSMEDIAMOUNT">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#MNTMOUNTPOINTFORATEMPORARILYMOUNT">/mnt&nbsp;:&nbsp;Mount&nbsp;point&nbsp;for&nbsp;a&nbsp;temporarily&nbsp;mounted&nbsp;filesystem</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE13">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES">/opt&nbsp;:&nbsp;Add-on&nbsp;application&nbsp;software&nbsp;packages</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE14">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS7">Requirements</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ROOTHOMEDIRECTORYFORTHEROOTUSER">/root&nbsp;:&nbsp;Home&nbsp;directory&nbsp;for&nbsp;the&nbsp;root&nbsp;user&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE15">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINSYSTEMBINARIES">/sbin&nbsp;:&nbsp;System&nbsp;binaries</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS8">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS8">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM">/srv&nbsp;:&nbsp;Data&nbsp;for&nbsp;services&nbsp;provided&nbsp;by&nbsp;this&nbsp;system</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16A">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#TMPTEMPORARYFILES">/tmp&nbsp;:&nbsp;Temporary&nbsp;files</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE17">Purpose</a><br>4.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#THEUSRHIERARCHY">The&nbsp;/usr&nbsp;Hierarchy</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE18">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS9">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS9">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRX11R6XWINDOWSYSTEMVERSION11REL">/usr/X11R6&nbsp;:&nbsp;X&nbsp;Window&nbsp;System,&nbsp;Version&nbsp;11&nbsp;Release&nbsp;6&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE19">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS10">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRBINMOSTUSERCOMMANDS">/usr/bin&nbsp;:&nbsp;Most&nbsp;user&nbsp;commands</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE20">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS11">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRINCLUDEDIRECTORYFORSTANDARDINCLU">/usr/include&nbsp;:&nbsp;Directory&nbsp;for&nbsp;standard&nbsp;include&nbsp;files.</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE21">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS12">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLIBRARIESFORPROGRAMMINGANDPA">/usr/lib&nbsp;:&nbsp;Libraries&nbsp;for&nbsp;programming&nbsp;and&nbsp;packages</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE22">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS13">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLTQUALGTALTERNATEFORMATLIBRARI">/usr/lib&nbsp;:&nbsp;Alternate&nbsp;format&nbsp;libraries&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE23">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY">/usr/local&nbsp;:&nbsp;Local&nbsp;hierarchy</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALSHARE1">/usr/local/share</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSBINNONESSENTIALSTANDARDSYSTEMBI">/usr/sbin&nbsp;:&nbsp;Non-essential&nbsp;standard&nbsp;system&nbsp;binaries</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE25">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA">/usr/share&nbsp;:&nbsp;Architecture-independent&nbsp;data</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE26">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS11">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS15">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREDICTWORDLISTS">/usr/share/dict&nbsp;:&nbsp;Word&nbsp;lists&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMANMANUALPAGES">/usr/share/man&nbsp;:&nbsp;Manual&nbsp;pages</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMISCMISCELLANEOUSARCHITECTURE">/usr/share/misc&nbsp;:&nbsp;Miscellaneous&nbsp;architecture-independent&nbsp;data</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHARESGMLSGMLANDXMLDATA">/usr/share/sgml&nbsp;:&nbsp;SGML&nbsp;data&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2007">/usr/share/xml&nbsp;:&nbsp;XML&nbsp;data&nbsp;(optional)</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSRCSOURCECODE">/usr/src&nbsp;:&nbsp;Source&nbsp;code&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE30">Purpose</a><br>5.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#THEVARHIERARCHY">The&nbsp;/var&nbsp;Hierarchy</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE31">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS12">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS20">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARACCOUNTPROCESSACCOUNTINGLOGS">/var/account&nbsp;:&nbsp;Process&nbsp;accounting&nbsp;logs&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE32">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEAPPLICATIONCACHEDATA">/var/cache&nbsp;:&nbsp;Application&nbsp;cache&nbsp;data</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE33">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS21">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEFONTSLOCALLYGENERATEDFONTS">/var/cache/fonts&nbsp;:&nbsp;Locally-generated&nbsp;fonts&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEMANLOCALLYFORMATTEDMANUALPAG">/var/cache/man&nbsp;:&nbsp;Locally-formatted&nbsp;manual&nbsp;pages&nbsp;(optional)</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCRASHSYSTEMCRASHDUMPS">/var/crash&nbsp;:&nbsp;System&nbsp;crash&nbsp;dumps&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE36">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARGAMESVARIABLEGAMEDATA">/var/games&nbsp;:&nbsp;Variable&nbsp;game&nbsp;data&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE37">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBVARIABLESTATEINFORMATION">/var/lib&nbsp;:&nbsp;Variable&nbsp;state&nbsp;information</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE38">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS13">Requirements</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS23">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBLTEDITORGTEDITORBACKUPFILESAN">/var/lib/&nbsp;:&nbsp;Editor&nbsp;backup&nbsp;files&nbsp;and&nbsp;state&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO">/var/lib/hwclock&nbsp;:&nbsp;State&nbsp;directory&nbsp;for&nbsp;hwclock&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARL<a href="http://www.ibm.com/cn" target="_blank">IBM</a>ISCMISCELLANEOUSVARIABLEDATA">/var/lib/misc&nbsp;:&nbsp;Miscellaneous&nbsp;variable&nbsp;data</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOCKLOCKFILES">/var/lock&nbsp;:&nbsp;Lock&nbsp;files</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE42">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOGLOGFILESANDDIRECTORIES">/var/log&nbsp;:&nbsp;Log&nbsp;files&nbsp;and&nbsp;directories</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE43">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS24">Specific&nbsp;Options</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARMAILUSERMAILBOXFILES">/var/mail&nbsp;:&nbsp;User&nbsp;mailbox&nbsp;files&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE44">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VAROPTVARIABLEDATAFOROPT">/var/opt&nbsp;:&nbsp;Variable&nbsp;data&nbsp;for&nbsp;/opt</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE45">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARRUNRUNTIMEVARIABLEDATA">/var/run&nbsp;:&nbsp;Run-time&nbsp;variable&nbsp;data</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE46">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS14">Requirements</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLAPPLICATIONSPOOLDATA">/var/spool&nbsp;:&nbsp;Application&nbsp;spool&nbsp;data</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE47">Purpose</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS25">Specific&nbsp;Options</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLLPDLINEPRINTERDAEMONPRINTQU">/var/spool/lpd&nbsp;:&nbsp;Line-printer&nbsp;daemon&nbsp;print&nbsp;queues&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLRWHORWHODFILES">/var/spool/rwho&nbsp;:&nbsp;Rwhod&nbsp;files&nbsp;(optional)</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE">/var/tmp&nbsp;:&nbsp;Temporary&nbsp;files&nbsp;preserved&nbsp;between&nbsp;system&nbsp;reboots</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE50">Purpose</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARYPNETWORKINFORMATIONSERVICE">/var/yp&nbsp;:&nbsp;Network&nbsp;Information&nbsp;Service&nbsp;(NIS)&nbsp;database&nbsp;files&nbsp;(optional)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE51">Purpose</a><br>6.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#OPERATINGSYSTEMSPECIFICANNEX">Operating&nbsp;System&nbsp;Specific&nbsp;Annex</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#LINUX">Linux</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ROOTDIRECTORY">/&nbsp;:&nbsp;Root&nbsp;directory</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#BINESSENTIALUSERCOMMANDBINARIES2">/bin&nbsp;:&nbsp;Essential&nbsp;user&nbsp;command&nbsp;binaries&nbsp;(for&nbsp;use&nbsp;by&nbsp;all&nbsp;users)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#DEVDEVICESANDSPECIALFILES">/dev&nbsp;:&nbsp;Devices&nbsp;and&nbsp;special&nbsp;files</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCHOSTSPECIFICSYSTEMCONFIGURATION2">/etc&nbsp;:&nbsp;Host-specific&nbsp;system&nbsp;configuration</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#LIB64">/lib64&nbsp;and&nbsp;/lib32&nbsp;:&nbsp;64/32-bit&nbsp;libraries&nbsp;(architecture&nbsp;dependent)</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PROCKERNELANDPROCESSINFORMATIONVIR">/proc&nbsp;:&nbsp;Kernel&nbsp;and&nbsp;process&nbsp;information&nbsp;virtual&nbsp;filesystem</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINESSENTIALSYSTEMBINARIES">/sbin&nbsp;:&nbsp;Essential&nbsp;system&nbsp;binaries</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRINCLUDEHEADERFILESINCLUDEDBYCP">/usr/include&nbsp;:&nbsp;Header&nbsp;files&nbsp;included&nbsp;by&nbsp;C&nbsp;programs</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSRCSOURCECODE2">/usr/src&nbsp;:&nbsp;Source&nbsp;code</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLCRONCRONANDATJOBS">/var/spool/cron&nbsp;:&nbsp;cron&nbsp;and&nbsp;at&nbsp;jobs</a><br>7.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#APPENDIX">Appendix</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#THEFHSMAILINGLIST">The&nbsp;FHS&nbsp;mailing&nbsp;list</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#BACKGROUNDOFTHEFHS">Background&nbsp;of&nbsp;the&nbsp;FHS</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#GENERALGUIDELINES">General&nbsp;Guidelines</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SCOPE">Scope</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#ACKNOWLEDGMENTS">Acknowledgments</a>&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#CONTRIBUTORS">Contributors</a><br>Chapter&nbsp;1.&nbsp;Introduction<br>Purpose<br>This&nbsp;standard&nbsp;enables:<br>Software&nbsp;to&nbsp;predict&nbsp;the&nbsp;location&nbsp;of&nbsp;installed&nbsp;files&nbsp;and&nbsp;directories,&nbsp;and<br>Users&nbsp;to&nbsp;predict&nbsp;the&nbsp;location&nbsp;of&nbsp;installed&nbsp;files&nbsp;and&nbsp;directories.<br>We&nbsp;do&nbsp;this&nbsp;by:<br>Specifying&nbsp;guiding&nbsp;principles&nbsp;for&nbsp;each&nbsp;area&nbsp;of&nbsp;the&nbsp;filesystem,<br>Specifying&nbsp;the&nbsp;minimum&nbsp;files&nbsp;and&nbsp;directories&nbsp;required,<br>Enumerating&nbsp;exceptions&nbsp;to&nbsp;the&nbsp;principles,&nbsp;and<br>Enumerating&nbsp;specific&nbsp;cases&nbsp;where&nbsp;there&nbsp;has&nbsp;been&nbsp;historical&nbsp;conflict.<br>The&nbsp;FHS&nbsp;document&nbsp;is&nbsp;used&nbsp;by:<br>Independent&nbsp;software&nbsp;suppliers&nbsp;to&nbsp;create&nbsp;applications&nbsp;which&nbsp;are&nbsp;FHS&nbsp;compliant,&nbsp;and&nbsp;work&nbsp;with&nbsp;distributions&nbsp;which&nbsp;are&nbsp;FHS&nbsp;complaint,<br>OS&nbsp;creators&nbsp;to&nbsp;provide&nbsp;systems&nbsp;which&nbsp;are&nbsp;FHS&nbsp;compliant,&nbsp;and<br>Users&nbsp;to&nbsp;understand&nbsp;and&nbsp;maintain&nbsp;the&nbsp;FHS&nbsp;compliance&nbsp;of&nbsp;a&nbsp;system.<br>The&nbsp;FHS&nbsp;document&nbsp;has&nbsp;a&nbsp;limited&nbsp;scope:<br>Local&nbsp;placement&nbsp;of&nbsp;local&nbsp;files&nbsp;is&nbsp;a&nbsp;local&nbsp;issue,&nbsp;so&nbsp;FHS&nbsp;does&nbsp;not&nbsp;attempt&nbsp;to&nbsp;usurp&nbsp;system&nbsp;administrators.<br>FHS&nbsp;addresses&nbsp;issues&nbsp;where&nbsp;file&nbsp;placements&nbsp;need&nbsp;to&nbsp;be&nbsp;coordinated&nbsp;between&nbsp;multiple&nbsp;parties&nbsp;such&nbsp;as&nbsp;local&nbsp;sites,&nbsp;distributions,&nbsp;applications,&nbsp;documentation,&nbsp;etc.<br>Conventions<br>We&nbsp;recommend&nbsp;that&nbsp;you&nbsp;read&nbsp;a&nbsp;typeset&nbsp;version&nbsp;of&nbsp;this&nbsp;document&nbsp;rather&nbsp;than&nbsp;the&nbsp;plain&nbsp;text&nbsp;version.&nbsp;In&nbsp;the&nbsp;typeset&nbsp;version,&nbsp;the&nbsp;names&nbsp;of&nbsp;files&nbsp;and&nbsp;directories&nbsp;are&nbsp;displayed&nbsp;in&nbsp;a&nbsp;constant-width&nbsp;font.<br>Components&nbsp;of&nbsp;filenames&nbsp;that&nbsp;vary&nbsp;are&nbsp;represented&nbsp;by&nbsp;a&nbsp;description&nbsp;of&nbsp;the&nbsp;contents&nbsp;enclosed&nbsp;in&nbsp;&quot;&quot;&nbsp;and&nbsp;&quot;&gt;[/i]&quot;&nbsp;characters,&nbsp;[/i].&nbsp;Electronic&nbsp;mail&nbsp;addresses&nbsp;are&nbsp;also&nbsp;enclosed&nbsp;in&nbsp;&quot;&quot;&nbsp;but&nbsp;are&nbsp;shown&nbsp;in&nbsp;the&nbsp;usual&nbsp;typeface.<br>Optional&nbsp;components&nbsp;of&nbsp;filenames&nbsp;are&nbsp;enclosed&nbsp;in&nbsp;&quot;[[/i]&quot;&nbsp;and&nbsp;&quot;][/i]&quot;&nbsp;characters&nbsp;and&nbsp;may&nbsp;be&nbsp;combined&nbsp;with&nbsp;the&nbsp;&quot;&quot;&nbsp;and&nbsp;&quot;&gt;[/i]&quot;&nbsp;convention.&nbsp;For&nbsp;example,&nbsp;if&nbsp;a&nbsp;filename&nbsp;is&nbsp;allowed&nbsp;to&nbsp;occur&nbsp;either&nbsp;with&nbsp;or&nbsp;without&nbsp;an&nbsp;extension,&nbsp;it&nbsp;might&nbsp;be&nbsp;represented&nbsp;by&nbsp;[.][/i].<br>Variable&nbsp;substrings&nbsp;of&nbsp;directory&nbsp;names&nbsp;and&nbsp;filenames&nbsp;are&nbsp;indicated&nbsp;by&nbsp;&quot;*[/i]&quot;.<br>The&nbsp;sections&nbsp;of&nbsp;the&nbsp;text&nbsp;marked&nbsp;as&nbsp;Rationale[/i]&nbsp;are&nbsp;explanatory&nbsp;and&nbsp;are&nbsp;non-normative.<br>Chapter&nbsp;2.&nbsp;The&nbsp;Filesystem<br>This&nbsp;standard&nbsp;assumes&nbsp;that&nbsp;the&nbsp;operating&nbsp;system&nbsp;underlying&nbsp;an&nbsp;FHS-compliant&nbsp;file&nbsp;system&nbsp;supports&nbsp;the&nbsp;same&nbsp;basic&nbsp;security&nbsp;features&nbsp;found&nbsp;in&nbsp;most&nbsp;UNIX&nbsp;filesystems.<br>It&nbsp;is&nbsp;possible&nbsp;to&nbsp;define&nbsp;two&nbsp;independent&nbsp;distinctions&nbsp;among&nbsp;files:&nbsp;shareable&nbsp;vs.&nbsp;unshareable&nbsp;and&nbsp;variable&nbsp;vs.&nbsp;static.&nbsp;In&nbsp;general,&nbsp;files&nbsp;that&nbsp;differ&nbsp;in&nbsp;either&nbsp;of&nbsp;these&nbsp;respects&nbsp;should&nbsp;be&nbsp;located&nbsp;in&nbsp;different&nbsp;directories.&nbsp;This&nbsp;makes&nbsp;it&nbsp;easy&nbsp;to&nbsp;store&nbsp;files&nbsp;with&nbsp;different&nbsp;usage&nbsp;characteristics&nbsp;on&nbsp;different&nbsp;filesystems.<br>&quot;Shareable&quot;&nbsp;files&nbsp;are&nbsp;those&nbsp;that&nbsp;can&nbsp;be&nbsp;stored&nbsp;on&nbsp;one&nbsp;host&nbsp;and&nbsp;used&nbsp;on&nbsp;others.&nbsp;&quot;Unshareable&quot;&nbsp;files&nbsp;are&nbsp;those&nbsp;that&nbsp;are&nbsp;not&nbsp;shareable.&nbsp;For&nbsp;example,&nbsp;the&nbsp;files&nbsp;in&nbsp;user&nbsp;home&nbsp;directories&nbsp;are&nbsp;shareable&nbsp;whereas&nbsp;device&nbsp;lock&nbsp;files&nbsp;are&nbsp;not.<br>&quot;Static&quot;&nbsp;files&nbsp;include&nbsp;binaries,&nbsp;libraries,&nbsp;documentation&nbsp;files&nbsp;and&nbsp;other&nbsp;files&nbsp;that&nbsp;do&nbsp;not&nbsp;change&nbsp;without&nbsp;system&nbsp;administrator&nbsp;intervention.&nbsp;&quot;Variable&quot;&nbsp;files&nbsp;are&nbsp;files&nbsp;that&nbsp;are&nbsp;not&nbsp;static.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Shareable&nbsp;files&nbsp;can&nbsp;be&nbsp;stored&nbsp;on&nbsp;one&nbsp;host&nbsp;and&nbsp;used&nbsp;on&nbsp;several&nbsp;others.&nbsp;Typically,&nbsp;however,&nbsp;not&nbsp;all&nbsp;files&nbsp;in&nbsp;the&nbsp;filesystem&nbsp;hierarchy&nbsp;are&nbsp;shareable&nbsp;and&nbsp;so&nbsp;each&nbsp;system&nbsp;has&nbsp;local&nbsp;storage&nbsp;containing&nbsp;at&nbsp;least&nbsp;its&nbsp;unshareable&nbsp;files.&nbsp;It&nbsp;is&nbsp;convenient&nbsp;if&nbsp;all&nbsp;the&nbsp;files&nbsp;a&nbsp;system&nbsp;requires&nbsp;that&nbsp;are&nbsp;stored&nbsp;on&nbsp;a&nbsp;foreign&nbsp;host&nbsp;can&nbsp;be&nbsp;made&nbsp;available&nbsp;by&nbsp;mounting&nbsp;one&nbsp;or&nbsp;a&nbsp;few&nbsp;directories&nbsp;from&nbsp;the&nbsp;foreign&nbsp;host.<br>Static&nbsp;and&nbsp;variable&nbsp;files&nbsp;should&nbsp;be&nbsp;segregated&nbsp;because&nbsp;static&nbsp;files,&nbsp;unlike&nbsp;variable&nbsp;files,&nbsp;can&nbsp;be&nbsp;stored&nbsp;on&nbsp;read-only&nbsp;media&nbsp;and&nbsp;do&nbsp;not&nbsp;need&nbsp;to&nbsp;be&nbsp;backed&nbsp;up&nbsp;on&nbsp;the&nbsp;same&nbsp;schedule&nbsp;as&nbsp;variable&nbsp;files.<br>Historical&nbsp;UNIX-like&nbsp;filesystem&nbsp;hierarchies&nbsp;contained&nbsp;both&nbsp;static&nbsp;and&nbsp;variable&nbsp;files&nbsp;under&nbsp;both&nbsp;/usr&nbsp;and&nbsp;/etc.&nbsp;In&nbsp;order&nbsp;to&nbsp;realize&nbsp;the&nbsp;advantages&nbsp;mentioned&nbsp;above,&nbsp;the&nbsp;/var&nbsp;hierarchy&nbsp;was&nbsp;created&nbsp;and&nbsp;all&nbsp;variable&nbsp;files&nbsp;were&nbsp;transferred&nbsp;from&nbsp;/usr&nbsp;to&nbsp;/var.&nbsp;Consequently&nbsp;/usr&nbsp;can&nbsp;now&nbsp;be&nbsp;mounted&nbsp;read-only&nbsp;(if&nbsp;it&nbsp;is&nbsp;a&nbsp;separate&nbsp;filesystem).&nbsp;Variable&nbsp;files&nbsp;have&nbsp;been&nbsp;transferred&nbsp;from&nbsp;/etc&nbsp;to&nbsp;/var&nbsp;over&nbsp;a&nbsp;longer&nbsp;period&nbsp;as&nbsp;technology&nbsp;has&nbsp;permitted.<br>Here&nbsp;is&nbsp;an&nbsp;example&nbsp;of&nbsp;a&nbsp;FHS-compliant&nbsp;system.&nbsp;(Other&nbsp;FHS-compliant&nbsp;layouts&nbsp;are&nbsp;possible.)<br>[/i]<br>shareable<br>unshareable<br>static<br>/usr<br>/etc<br>&nbsp;<br>/opt<br>/boot<br>variable<br>/var/mail<br>/var/run<br>&nbsp;<br>/var/spool/news<br>/var/lock<br>Chapter&nbsp;3.&nbsp;The&nbsp;Root&nbsp;Filesystem<br>Purpose<br>The&nbsp;contents&nbsp;of&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;must&nbsp;be&nbsp;adequate&nbsp;to&nbsp;boot,&nbsp;restore,&nbsp;recover,&nbsp;and/or&nbsp;repair&nbsp;the&nbsp;system.<br>To&nbsp;boot&nbsp;a&nbsp;system,&nbsp;enough&nbsp;must&nbsp;be&nbsp;present&nbsp;on&nbsp;the&nbsp;root&nbsp;partition&nbsp;to&nbsp;mount&nbsp;other&nbsp;filesystems.&nbsp;This&nbsp;includes&nbsp;utilities,&nbsp;configuration,&nbsp;boot&nbsp;loader&nbsp;information,&nbsp;and&nbsp;other&nbsp;essential&nbsp;start-up&nbsp;data.&nbsp;/usr,&nbsp;/opt,&nbsp;and&nbsp;/var&nbsp;are&nbsp;designed&nbsp;such&nbsp;that&nbsp;they&nbsp;may&nbsp;be&nbsp;located&nbsp;on&nbsp;other&nbsp;partitions&nbsp;or&nbsp;filesystems.<br>To&nbsp;enable&nbsp;recovery&nbsp;and/or&nbsp;repair&nbsp;of&nbsp;a&nbsp;system,&nbsp;those&nbsp;utilities&nbsp;needed&nbsp;by&nbsp;an&nbsp;experienced&nbsp;maintainer&nbsp;to&nbsp;diagnose&nbsp;and&nbsp;reconstruct&nbsp;a&nbsp;damaged&nbsp;system&nbsp;must&nbsp;be&nbsp;present&nbsp;on&nbsp;the&nbsp;root&nbsp;filesystem.<br>To&nbsp;restore&nbsp;a&nbsp;system,&nbsp;those&nbsp;utilities&nbsp;needed&nbsp;to&nbsp;restore&nbsp;from&nbsp;system&nbsp;backups&nbsp;(on&nbsp;floppy,&nbsp;tape,&nbsp;etc.)&nbsp;must&nbsp;be&nbsp;present&nbsp;on&nbsp;the&nbsp;root&nbsp;filesystem.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;primary&nbsp;concern&nbsp;used&nbsp;to&nbsp;balance&nbsp;these&nbsp;considerations,&nbsp;which&nbsp;favor&nbsp;placing&nbsp;many&nbsp;things&nbsp;on&nbsp;the&nbsp;root&nbsp;filesystem,&nbsp;is&nbsp;the&nbsp;goal&nbsp;of&nbsp;keeping&nbsp;root&nbsp;as&nbsp;small&nbsp;as&nbsp;reasonably&nbsp;possible.&nbsp;For&nbsp;several&nbsp;reasons,&nbsp;it&nbsp;is&nbsp;desirable&nbsp;to&nbsp;keep&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;small:<br>It&nbsp;is&nbsp;occasionally&nbsp;mounted&nbsp;from&nbsp;very&nbsp;small&nbsp;media.<br>The&nbsp;root&nbsp;filesystem&nbsp;contains&nbsp;many&nbsp;system-specific&nbsp;configuration&nbsp;files.&nbsp;Possible&nbsp;examples&nbsp;include&nbsp;a&nbsp;kernel&nbsp;that&nbsp;is&nbsp;specific&nbsp;to&nbsp;the&nbsp;system,&nbsp;a&nbsp;specific&nbsp;hostname,&nbsp;etc.&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;isn&#39;t&nbsp;always&nbsp;shareable&nbsp;between&nbsp;networked&nbsp;systems.&nbsp;Keeping&nbsp;it&nbsp;small&nbsp;on&nbsp;servers&nbsp;in&nbsp;networked&nbsp;systems&nbsp;minimizes&nbsp;the&nbsp;amount&nbsp;of&nbsp;lost&nbsp;space&nbsp;for&nbsp;areas&nbsp;of&nbsp;unshareable&nbsp;files.&nbsp;It&nbsp;also&nbsp;allows&nbsp;workstations&nbsp;with&nbsp;smaller&nbsp;local&nbsp;hard&nbsp;drives.<br>While&nbsp;you&nbsp;may&nbsp;have&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;on&nbsp;a&nbsp;large&nbsp;partition,&nbsp;and&nbsp;may&nbsp;be&nbsp;able&nbsp;to&nbsp;fill&nbsp;it&nbsp;to&nbsp;your&nbsp;heart&#39;s&nbsp;content,&nbsp;there&nbsp;will&nbsp;be&nbsp;people&nbsp;with&nbsp;smaller&nbsp;partitions.&nbsp;If&nbsp;you&nbsp;have&nbsp;more&nbsp;files&nbsp;installed,&nbsp;you&nbsp;may&nbsp;find&nbsp;incompatibilities&nbsp;with&nbsp;other&nbsp;systems&nbsp;using&nbsp;root&nbsp;filesystems&nbsp;on&nbsp;smaller&nbsp;partitions.&nbsp;If&nbsp;you&nbsp;are&nbsp;a&nbsp;developer&nbsp;then&nbsp;you&nbsp;may&nbsp;be&nbsp;turning&nbsp;your&nbsp;assumption&nbsp;into&nbsp;a&nbsp;problem&nbsp;for&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;users.<br>Disk&nbsp;errors&nbsp;that&nbsp;corrupt&nbsp;data&nbsp;on&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;are&nbsp;a&nbsp;greater&nbsp;problem&nbsp;than&nbsp;errors&nbsp;on&nbsp;any&nbsp;other&nbsp;partition.&nbsp;A&nbsp;small&nbsp;root&nbsp;filesystem&nbsp;is&nbsp;less&nbsp;prone&nbsp;to&nbsp;corruption&nbsp;as&nbsp;the&nbsp;result&nbsp;of&nbsp;a&nbsp;system&nbsp;crash.<br>Applications&nbsp;must&nbsp;never&nbsp;create&nbsp;or&nbsp;require&nbsp;special&nbsp;files&nbsp;or&nbsp;subdirectories&nbsp;in&nbsp;the&nbsp;root&nbsp;directory.&nbsp;Other&nbsp;locations&nbsp;in&nbsp;the&nbsp;FHS&nbsp;hierarchy&nbsp;provide&nbsp;more&nbsp;than&nbsp;enough&nbsp;flexibility&nbsp;for&nbsp;any&nbsp;package.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>There&nbsp;are&nbsp;several&nbsp;reasons&nbsp;why&nbsp;creating&nbsp;a&nbsp;new&nbsp;subdirectory&nbsp;of&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;is&nbsp;prohibited:<br>It&nbsp;demands&nbsp;space&nbsp;on&nbsp;a&nbsp;root&nbsp;partition&nbsp;which&nbsp;the&nbsp;system&nbsp;administrator&nbsp;may&nbsp;want&nbsp;kept&nbsp;small&nbsp;and&nbsp;simple&nbsp;for&nbsp;either&nbsp;performance&nbsp;or&nbsp;security&nbsp;reasons.<br>It&nbsp;evades&nbsp;whatever&nbsp;discipline&nbsp;the&nbsp;system&nbsp;administrator&nbsp;may&nbsp;have&nbsp;set&nbsp;up&nbsp;for&nbsp;distributing&nbsp;standard&nbsp;file&nbsp;hierarchies&nbsp;across&nbsp;mountable&nbsp;volumes.<br>Distributions&nbsp;should&nbsp;not&nbsp;create&nbsp;new&nbsp;directories&nbsp;in&nbsp;the&nbsp;root&nbsp;hierarchy&nbsp;without&nbsp;extremely&nbsp;careful&nbsp;consideration&nbsp;of&nbsp;the&nbsp;consequences&nbsp;including&nbsp;for&nbsp;application&nbsp;portability.<br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;are&nbsp;required&nbsp;in&nbsp;/.<br>Directory<br>Description<br>bin<br>Essential&nbsp;command&nbsp;binaries<br>boot<br>Static&nbsp;files&nbsp;of&nbsp;the&nbsp;boot&nbsp;loader<br>dev<br>Device&nbsp;files<br>etc<br>Host-specific&nbsp;system&nbsp;configuration<br>lib<br>Essential&nbsp;shared&nbsp;libraries&nbsp;and&nbsp;kernel&nbsp;modules<br>media<br>Mount&nbsp;point&nbsp;for&nbsp;removeable&nbsp;media<br>mnt<br>Mount&nbsp;point&nbsp;for&nbsp;mounting&nbsp;a&nbsp;filesystem&nbsp;temporarily<br>opt<br>Add-on&nbsp;application&nbsp;software&nbsp;packages<br>sbin<br>Essential&nbsp;system&nbsp;binaries<br>srv<br>Data&nbsp;for&nbsp;services&nbsp;provided&nbsp;by&nbsp;this&nbsp;system<br>tmp<br>Temporary&nbsp;files<br>usr<br>Secondary&nbsp;hierarchy<br>var<br>Variable&nbsp;data<br>Each&nbsp;directory&nbsp;listed&nbsp;above&nbsp;is&nbsp;specified&nbsp;in&nbsp;detail&nbsp;in&nbsp;separate&nbsp;subsections&nbsp;below.&nbsp;/usr&nbsp;and&nbsp;/var&nbsp;each&nbsp;have&nbsp;a&nbsp;complete&nbsp;section&nbsp;in&nbsp;this&nbsp;document&nbsp;due&nbsp;to&nbsp;the&nbsp;complexity&nbsp;of&nbsp;those&nbsp;directories.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>home<br>User&nbsp;home&nbsp;directories&nbsp;(optional)<br>lib<br>Alternate&nbsp;format&nbsp;essential&nbsp;shared&nbsp;libraries&nbsp;(optional)<br>root<br>Home&nbsp;directory&nbsp;for&nbsp;the&nbsp;root&nbsp;user&nbsp;(optional)<br>Each&nbsp;directory&nbsp;listed&nbsp;above&nbsp;is&nbsp;specified&nbsp;in&nbsp;detail&nbsp;in&nbsp;separate&nbsp;subsections&nbsp;below.<br>/bin&nbsp;:&nbsp;Essential&nbsp;user&nbsp;command&nbsp;binaries&nbsp;(for&nbsp;use&nbsp;by&nbsp;all&nbsp;users)<br>Purpose<br>/bin&nbsp;contains&nbsp;commands&nbsp;that&nbsp;may&nbsp;be&nbsp;used&nbsp;by&nbsp;both&nbsp;the&nbsp;system&nbsp;administrator&nbsp;and&nbsp;by&nbsp;users,&nbsp;but&nbsp;which&nbsp;are&nbsp;required&nbsp;when&nbsp;no&nbsp;other&nbsp;filesystems&nbsp;are&nbsp;mounted&nbsp;(e.g.&nbsp;in&nbsp;single&nbsp;user&nbsp;mode).&nbsp;It&nbsp;may&nbsp;also&nbsp;contain&nbsp;commands&nbsp;which&nbsp;are&nbsp;used&nbsp;indirectly&nbsp;by&nbsp;scripts.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN261">[1]</a><br>Requirements<br>There&nbsp;must&nbsp;be&nbsp;no&nbsp;subdirectories&nbsp;in&nbsp;/bin.<br>The&nbsp;following&nbsp;commands,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;commands,&nbsp;are&nbsp;required&nbsp;in&nbsp;/bin.<br>Command<br>Description<br>cat[/b]<br>Utility&nbsp;to&nbsp;concatenate&nbsp;files&nbsp;to&nbsp;standard&nbsp;output<br>chgrp[/b]<br>Utility&nbsp;to&nbsp;change&nbsp;file&nbsp;group&nbsp;ownership<br>chmod[/b]<br>Utility&nbsp;to&nbsp;change&nbsp;file&nbsp;access&nbsp;permissions<br>chown[/b]<br>Utility&nbsp;to&nbsp;change&nbsp;file&nbsp;owner&nbsp;and&nbsp;group<br>cp[/b]<br>Utility&nbsp;to&nbsp;copy&nbsp;files&nbsp;and&nbsp;directories<br>date[/b]<br>Utility&nbsp;to&nbsp;print&nbsp;or&nbsp;set&nbsp;the&nbsp;system&nbsp;data&nbsp;and&nbsp;time<br>dd[/b]<br>Utility&nbsp;to&nbsp;convert&nbsp;and&nbsp;copy&nbsp;a&nbsp;file<br>df[/b]<br>Utility&nbsp;to&nbsp;report&nbsp;filesystem&nbsp;disk&nbsp;space&nbsp;usage<br>dmesg[/b]<br>Utility&nbsp;to&nbsp;print&nbsp;or&nbsp;control&nbsp;the&nbsp;kernel&nbsp;message&nbsp;buffer<br>echo[/b]<br>Utility&nbsp;to&nbsp;display&nbsp;a&nbsp;line&nbsp;of&nbsp;text<br>false[/b]<br>Utility&nbsp;to&nbsp;do&nbsp;nothing,&nbsp;unsuccessfully<br>hostname[/b]<br>Utility&nbsp;to&nbsp;show&nbsp;or&nbsp;set&nbsp;the&nbsp;system&#39;s&nbsp;host&nbsp;name<br>kill[/b]<br>Utility&nbsp;to&nbsp;send&nbsp;signals&nbsp;to&nbsp;processes<br>ln[/b]<br>Utility&nbsp;to&nbsp;make&nbsp;links&nbsp;between&nbsp;files<br>login[/b]<br>Utility&nbsp;to&nbsp;begin&nbsp;a&nbsp;session&nbsp;on&nbsp;the&nbsp;system<br>ls[/b]<br>Utility&nbsp;to&nbsp;list&nbsp;directory&nbsp;contents<br>mkdir[/b]<br>Utility&nbsp;to&nbsp;make&nbsp;directories<br>mknod[/b]<br>Utility&nbsp;to&nbsp;make&nbsp;block&nbsp;or&nbsp;character&nbsp;special&nbsp;files<br>more[/b]<br>Utility&nbsp;to&nbsp;page&nbsp;through&nbsp;text<br>mount[/b]<br>Utility&nbsp;to&nbsp;mount&nbsp;a&nbsp;filesystem<br>mv[/b]<br>Utility&nbsp;to&nbsp;move/rename&nbsp;files<br>ps[/b]<br>Utility&nbsp;to&nbsp;report&nbsp;process&nbsp;status<br>pwd[/b]<br>Utility&nbsp;to&nbsp;print&nbsp;name&nbsp;of&nbsp;current&nbsp;working&nbsp;directory<br>rm[/b]<br>Utility&nbsp;to&nbsp;remove&nbsp;files&nbsp;or&nbsp;directories<br>rmdir[/b]<br>Utility&nbsp;to&nbsp;remove&nbsp;empty&nbsp;directories<br>sed[/b]<br>The&nbsp;`sed&#39;&nbsp;stream&nbsp;editor<br>sh[/b]<br>The&nbsp;Bourne&nbsp;command&nbsp;shell<br>stty[/b]<br>Utility&nbsp;to&nbsp;change&nbsp;and&nbsp;print&nbsp;terminal&nbsp;line&nbsp;settings<br>su[/b]<br>Utility&nbsp;to&nbsp;change&nbsp;user&nbsp;ID<br>sync[/b]<br>Utility&nbsp;to&nbsp;flush&nbsp;filesystem&nbsp;buffers<br>true[/b]<br>Utility&nbsp;to&nbsp;do&nbsp;nothing,&nbsp;successfully<br>umount[/b]<br>Utility&nbsp;to&nbsp;unmount&nbsp;file&nbsp;systems<br>uname[/b]<br>Utility&nbsp;to&nbsp;print&nbsp;system&nbsp;information<br>If&nbsp;/bin/sh[/b]&nbsp;is&nbsp;not&nbsp;a&nbsp;true&nbsp;Bourne&nbsp;shell,&nbsp;it&nbsp;must&nbsp;be&nbsp;a&nbsp;hard&nbsp;or&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;the&nbsp;real&nbsp;shell&nbsp;command.<br>The&nbsp;[[/b]&nbsp;and&nbsp;test[/b]&nbsp;commands&nbsp;must&nbsp;be&nbsp;placed&nbsp;together&nbsp;in&nbsp;either&nbsp;/bin&nbsp;or&nbsp;/usr/bin.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>For&nbsp;example&nbsp;bash&nbsp;behaves&nbsp;differently&nbsp;when&nbsp;called&nbsp;as&nbsp;sh[/b]&nbsp;or&nbsp;bash[/b].&nbsp;The&nbsp;use&nbsp;of&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;also&nbsp;allows&nbsp;users&nbsp;to&nbsp;easily&nbsp;see&nbsp;that&nbsp;/bin/sh[/b]&nbsp;is&nbsp;not&nbsp;a&nbsp;true&nbsp;Bourne&nbsp;shell.<br>The&nbsp;requirement&nbsp;for&nbsp;the&nbsp;[[/b]&nbsp;and&nbsp;test[/b]&nbsp;commands&nbsp;to&nbsp;be&nbsp;included&nbsp;as&nbsp;binaries&nbsp;(even&nbsp;if&nbsp;implemented&nbsp;internally&nbsp;by&nbsp;the&nbsp;shell)&nbsp;is&nbsp;shared&nbsp;with&nbsp;the&nbsp;POSIX.2&nbsp;standard.&nbsp;<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;programs,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;programs,&nbsp;must&nbsp;be&nbsp;in&nbsp;/bin&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Command<br>Description<br>csh[/b]<br>The&nbsp;C&nbsp;shell&nbsp;(optional)<br>ed[/b]<br>The&nbsp;`ed&#39;&nbsp;editor&nbsp;(optional)<br>tar[/b]<br>The&nbsp;tar&nbsp;archiving&nbsp;utility&nbsp;(optional)<br>cpio[/b]<br>The&nbsp;cpio&nbsp;archiving&nbsp;utility&nbsp;(optional)<br>gzip[/b]<br>The&nbsp;GNU&nbsp;compression&nbsp;utility&nbsp;(optional)<br>gunzip[/b]<br>The&nbsp;GNU&nbsp;uncompression&nbsp;utility&nbsp;(optional)<br>zcat[/b]<br>The&nbsp;GNU&nbsp;uncompression&nbsp;utility&nbsp;(optional)<br>netstat[/b]<br>The&nbsp;network&nbsp;statistics&nbsp;utility&nbsp;(optional)<br>ping[/b]<br>The&nbsp;ICMP&nbsp;network&nbsp;test&nbsp;utility&nbsp;(optional)<br>If&nbsp;the&nbsp;gunzip[/b]&nbsp;and&nbsp;zcat[/b]&nbsp;programs&nbsp;exist,&nbsp;they&nbsp;must&nbsp;be&nbsp;symbolic&nbsp;or&nbsp;hard&nbsp;links&nbsp;to&nbsp;gzip.&nbsp;/bin/csh[/b]&nbsp;may&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;/bin/tcsh[/b]&nbsp;or&nbsp;/usr/bin/tcsh[/b].<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;tar,&nbsp;gzip&nbsp;and&nbsp;cpio&nbsp;commands&nbsp;have&nbsp;been&nbsp;added&nbsp;to&nbsp;make&nbsp;restoration&nbsp;of&nbsp;a&nbsp;system&nbsp;possible&nbsp;(provided&nbsp;that&nbsp;/&nbsp;is&nbsp;intact).<br>Conversely,&nbsp;if&nbsp;no&nbsp;restoration&nbsp;from&nbsp;the&nbsp;root&nbsp;partition&nbsp;is&nbsp;ever&nbsp;expected,&nbsp;then&nbsp;these&nbsp;binaries&nbsp;might&nbsp;be&nbsp;omitted&nbsp;(e.g.,&nbsp;a&nbsp;ROM&nbsp;chip&nbsp;root,&nbsp;mounting&nbsp;/usr&nbsp;through&nbsp;NFS).&nbsp;If&nbsp;restoration&nbsp;of&nbsp;a&nbsp;system&nbsp;is&nbsp;planned&nbsp;through&nbsp;the&nbsp;network,&nbsp;then&nbsp;ftp[/b]&nbsp;or&nbsp;tftp[/b]&nbsp;(along&nbsp;with&nbsp;everything&nbsp;necessary&nbsp;to&nbsp;get&nbsp;an&nbsp;ftp&nbsp;connection)&nbsp;must&nbsp;be&nbsp;available&nbsp;on&nbsp;the&nbsp;root&nbsp;partition.&nbsp;<br>/boot&nbsp;:&nbsp;Static&nbsp;files&nbsp;of&nbsp;the&nbsp;boot&nbsp;loader<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;everything&nbsp;required&nbsp;for&nbsp;the&nbsp;boot&nbsp;process&nbsp;except&nbsp;configuration&nbsp;files&nbsp;not&nbsp;needed&nbsp;at&nbsp;boot&nbsp;time&nbsp;and&nbsp;the&nbsp;map&nbsp;installer.&nbsp;Thus&nbsp;/boot&nbsp;stores&nbsp;data&nbsp;that&nbsp;is&nbsp;used&nbsp;before&nbsp;the&nbsp;kernel&nbsp;begins&nbsp;executing&nbsp;user-mode&nbsp;programs.&nbsp;This&nbsp;may&nbsp;include&nbsp;saved&nbsp;master&nbsp;boot&nbsp;sectors&nbsp;and&nbsp;sector&nbsp;map&nbsp;files.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN493">[2]</a>&nbsp;<br>Specific&nbsp;Options<br>The&nbsp;operating&nbsp;system&nbsp;kernel&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;either&nbsp;/&nbsp;or&nbsp;/boot.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN507">[3]</a><br>/dev&nbsp;:&nbsp;Device&nbsp;files<br>Purpose<br>The&nbsp;/dev&nbsp;directory&nbsp;is&nbsp;the&nbsp;location&nbsp;of&nbsp;special&nbsp;or&nbsp;device&nbsp;files.<br>Specific&nbsp;Options<br>If&nbsp;it&nbsp;is&nbsp;possible&nbsp;that&nbsp;devices&nbsp;in&nbsp;/dev&nbsp;will&nbsp;need&nbsp;to&nbsp;be&nbsp;manually&nbsp;created,&nbsp;/dev&nbsp;must&nbsp;contain&nbsp;a&nbsp;command&nbsp;named&nbsp;MAKEDEV,&nbsp;which&nbsp;can&nbsp;create&nbsp;devices&nbsp;as&nbsp;needed.&nbsp;It&nbsp;may&nbsp;also&nbsp;contain&nbsp;a&nbsp;MAKEDEV.local&nbsp;for&nbsp;any&nbsp;local&nbsp;devices.<br>If&nbsp;required,&nbsp;MAKEDEV&nbsp;must&nbsp;have&nbsp;provisions&nbsp;for&nbsp;creating&nbsp;any&nbsp;device&nbsp;that&nbsp;may&nbsp;be&nbsp;found&nbsp;on&nbsp;the&nbsp;system,&nbsp;not&nbsp;just&nbsp;those&nbsp;that&nbsp;a&nbsp;particular&nbsp;implementation&nbsp;installs.<br>/etc&nbsp;:&nbsp;Host-specific&nbsp;system&nbsp;configuration<br>Purpose<br>The&nbsp;/etc&nbsp;hierarchy&nbsp;contains&nbsp;configuration&nbsp;files.&nbsp;A&nbsp;&quot;configuration&nbsp;file&quot;&nbsp;is&nbsp;a&nbsp;local&nbsp;file&nbsp;used&nbsp;to&nbsp;control&nbsp;the&nbsp;operation&nbsp;of&nbsp;a&nbsp;program;&nbsp;it&nbsp;must&nbsp;be&nbsp;static&nbsp;and&nbsp;cannot&nbsp;be&nbsp;an&nbsp;executable&nbsp;binary.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN534">[4]</a><br>Requirements<br>No&nbsp;binaries&nbsp;may&nbsp;be&nbsp;located&nbsp;under&nbsp;/etc.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN540">[5]</a><br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories&nbsp;are&nbsp;required&nbsp;in&nbsp;/etc:<br>Directory<br>Description<br>opt<br>Configuration&nbsp;for&nbsp;/opt<br>X11<br>Configuration&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;system&nbsp;(optional)<br>sgml<br>Configuration&nbsp;for&nbsp;SGML&nbsp;(optional)<br>xml<br>Configuration&nbsp;for&nbsp;XML&nbsp;(optional)<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories&nbsp;must&nbsp;be&nbsp;in&nbsp;/etc,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>opt<br>Configuration&nbsp;for&nbsp;/opt<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/etc&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN581">[6]</a><br>File<br>Description<br>csh.login<br>Systemwide&nbsp;initialization&nbsp;file&nbsp;for&nbsp;C&nbsp;shell&nbsp;logins&nbsp;(optional)<br>exports<br>NFS&nbsp;filesystem&nbsp;access&nbsp;control&nbsp;list&nbsp;(optional)<br>fstab<br>Static&nbsp;information&nbsp;about&nbsp;filesystems&nbsp;(optional)<br>ftpusers<br>FTP&nbsp;daemon&nbsp;user&nbsp;access&nbsp;control&nbsp;list&nbsp;(optional)<br>gateways<br>File&nbsp;which&nbsp;lists&nbsp;gateways&nbsp;for&nbsp;routed&nbsp;(optional)<br>gettydefs<br>Speed&nbsp;and&nbsp;terminal&nbsp;settings&nbsp;used&nbsp;by&nbsp;getty&nbsp;(optional)<br>group<br>User&nbsp;group&nbsp;file&nbsp;(optional)<br>host.conf<br>Resolver&nbsp;configuration&nbsp;file&nbsp;(optional)<br>hosts<br>Static&nbsp;information&nbsp;about&nbsp;host&nbsp;names&nbsp;(optional)<br>hosts.allow<br>Host&nbsp;access&nbsp;file&nbsp;for&nbsp;TCP&nbsp;wrappers&nbsp;(optional)<br>hosts.deny<br>Host&nbsp;access&nbsp;file&nbsp;for&nbsp;TCP&nbsp;wrappers&nbsp;(optional)<br>hosts.equiv<br>List&nbsp;of&nbsp;trusted&nbsp;hosts&nbsp;for&nbsp;rlogin,&nbsp;rsh,&nbsp;rcp&nbsp;(optional)<br>hosts.lpd<br>List&nbsp;of&nbsp;trusted&nbsp;hosts&nbsp;for&nbsp;lpd&nbsp;(optional)<br>inetd.conf<br>Configuration&nbsp;file&nbsp;for&nbsp;inetd&nbsp;(optional)<br>inittab<br>Configuration&nbsp;file&nbsp;for&nbsp;init&nbsp;(optional)<br>issue<br>Pre-login&nbsp;message&nbsp;and&nbsp;identification&nbsp;file&nbsp;(optional)<br>ld.so.conf<br>List&nbsp;of&nbsp;extra&nbsp;directories&nbsp;to&nbsp;search&nbsp;for&nbsp;shared&nbsp;libraries&nbsp;(optional)<br>motd<br>Post-login&nbsp;message&nbsp;of&nbsp;the&nbsp;day&nbsp;file&nbsp;(optional)<br>mtab<br>Dynamic&nbsp;information&nbsp;about&nbsp;filesystems&nbsp;(optional)<br>mtools.conf<br>Configuration&nbsp;file&nbsp;for&nbsp;mtools&nbsp;(optional)<br>networks<br>Static&nbsp;information&nbsp;about&nbsp;network&nbsp;names&nbsp;(optional)<br>passwd<br>The&nbsp;password&nbsp;file&nbsp;(optional)<br>printcap<br>The&nbsp;lpd&nbsp;printer&nbsp;capability&nbsp;database&nbsp;(optional)<br>profile<br>Systemwide&nbsp;initialization&nbsp;file&nbsp;for&nbsp;sh&nbsp;shell&nbsp;logins&nbsp;(optional)<br>protocols<br>IP&nbsp;protocol&nbsp;listing&nbsp;(optional)<br>resolv.conf<br>Resolver&nbsp;configuration&nbsp;file&nbsp;(optional)<br>rpc<br>RPC&nbsp;protocol&nbsp;listing&nbsp;(optional)<br>securetty<br>TTY&nbsp;access&nbsp;control&nbsp;for&nbsp;root&nbsp;login&nbsp;(optional)<br>services<br>Port&nbsp;names&nbsp;for&nbsp;network&nbsp;services&nbsp;(optional)<br>shells<br>Pathnames&nbsp;of&nbsp;valid&nbsp;login&nbsp;shells&nbsp;(optional)<br>syslog.conf<br>Configuration&nbsp;file&nbsp;for&nbsp;syslogd&nbsp;(optional)<br>mtab&nbsp;does&nbsp;not&nbsp;fit&nbsp;the&nbsp;static&nbsp;nature&nbsp;of&nbsp;/etc:&nbsp;it&nbsp;is&nbsp;excepted&nbsp;for&nbsp;historical&nbsp;reasons.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN722">[7]</a>&nbsp;<br>/etc/opt&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;/opt<br>Purpose<br>Host-specific&nbsp;configuration&nbsp;files&nbsp;for&nbsp;add-on&nbsp;application&nbsp;software&nbsp;packages&nbsp;must&nbsp;be&nbsp;installed&nbsp;within&nbsp;the&nbsp;directory&nbsp;/etc/opt/,&nbsp;where&nbsp;&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;subtree&nbsp;in&nbsp;/opt&nbsp;where&nbsp;the&nbsp;static&nbsp;data&nbsp;from&nbsp;that&nbsp;package&nbsp;is&nbsp;stored.<br>Requirements<br>No&nbsp;structure&nbsp;is&nbsp;imposed&nbsp;on&nbsp;the&nbsp;internal&nbsp;arrangement&nbsp;of&nbsp;/etc/opt/.<br>If&nbsp;a&nbsp;configuration&nbsp;file&nbsp;must&nbsp;reside&nbsp;in&nbsp;a&nbsp;different&nbsp;location&nbsp;in&nbsp;order&nbsp;for&nbsp;the&nbsp;package&nbsp;or&nbsp;system&nbsp;to&nbsp;function&nbsp;properly,&nbsp;it&nbsp;may&nbsp;be&nbsp;placed&nbsp;in&nbsp;a&nbsp;location&nbsp;other&nbsp;than&nbsp;/etc/opt/.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Refer&nbsp;to&nbsp;the&nbsp;rationale&nbsp;for&nbsp;/opt.<br>/etc/X11&nbsp;:&nbsp;Configuration&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;(optional)<br>Purpose<br>/etc/X11[/i]&nbsp;is&nbsp;the&nbsp;location&nbsp;for&nbsp;all&nbsp;X11&nbsp;host-specific&nbsp;configuration.&nbsp;This&nbsp;directory&nbsp;is&nbsp;necessary&nbsp;to&nbsp;allow&nbsp;local&nbsp;control&nbsp;if&nbsp;/usr[/i]&nbsp;is&nbsp;mounted&nbsp;read&nbsp;only.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/etc/X11&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>File<br>Description<br>Xconfig<br>The&nbsp;configuration&nbsp;file&nbsp;for&nbsp;early&nbsp;versions&nbsp;of&nbsp;XFree86&nbsp;(optional)<br>XF86Config<br>The&nbsp;configuration&nbsp;file&nbsp;for&nbsp;XFree86&nbsp;versions&nbsp;3&nbsp;and&nbsp;4&nbsp;(optional)<br>Xmodmap<br>Global&nbsp;X11&nbsp;keyboard&nbsp;modification&nbsp;file&nbsp;(optional)<br>Subdirectories&nbsp;of&nbsp;/etc/X11&nbsp;may&nbsp;include&nbsp;those&nbsp;for&nbsp;xdm&nbsp;and&nbsp;for&nbsp;any&nbsp;other&nbsp;programs&nbsp;(some&nbsp;window&nbsp;managers,&nbsp;for&nbsp;example)&nbsp;that&nbsp;need&nbsp;them.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN778">[8]</a>&nbsp;We&nbsp;recommend&nbsp;that&nbsp;window&nbsp;managers&nbsp;with&nbsp;only&nbsp;one&nbsp;configuration&nbsp;file&nbsp;which&nbsp;is&nbsp;a&nbsp;default&nbsp;.*wmrc&nbsp;file&nbsp;must&nbsp;name&nbsp;it&nbsp;system.*wmrc&nbsp;(unless&nbsp;there&nbsp;is&nbsp;a&nbsp;widely-accepted&nbsp;alternative&nbsp;name)&nbsp;and&nbsp;not&nbsp;use&nbsp;a&nbsp;subdirectory.&nbsp;Any&nbsp;window&nbsp;manager&nbsp;subdirectories&nbsp;must&nbsp;be&nbsp;identically&nbsp;named&nbsp;to&nbsp;the&nbsp;actual&nbsp;window&nbsp;manager&nbsp;binary.<br>/etc/sgml&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;SGML&nbsp;(optional)<br>Purpose<br>Generic&nbsp;configuration&nbsp;files&nbsp;defining&nbsp;high-level&nbsp;parameters&nbsp;of&nbsp;the&nbsp;SGML&nbsp;systems&nbsp;are&nbsp;installed&nbsp;here.&nbsp;Files&nbsp;with&nbsp;names&nbsp;*.conf&nbsp;indicate&nbsp;generic&nbsp;configuration&nbsp;files.&nbsp;File&nbsp;with&nbsp;names&nbsp;*.cat&nbsp;are&nbsp;the&nbsp;DTD-specific&nbsp;centralized&nbsp;catalogs,&nbsp;containing&nbsp;references&nbsp;to&nbsp;all&nbsp;other&nbsp;catalogs&nbsp;needed&nbsp;to&nbsp;use&nbsp;the&nbsp;given&nbsp;DTD.&nbsp;The&nbsp;super&nbsp;catalog&nbsp;file&nbsp;catalog&nbsp;references&nbsp;all&nbsp;the&nbsp;centralized&nbsp;catalogs.<br>/etc/xml&nbsp;:&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;XML&nbsp;(optional)<br>Purpose<br>Generic&nbsp;configuration&nbsp;files&nbsp;defining&nbsp;high-level&nbsp;parameters&nbsp;of&nbsp;the&nbsp;XML&nbsp;systems&nbsp;are&nbsp;installed&nbsp;here.&nbsp;Files&nbsp;with&nbsp;names&nbsp;*.conf&nbsp;indicate&nbsp;generic&nbsp;configuration&nbsp;files.&nbsp;The&nbsp;super&nbsp;catalog&nbsp;file&nbsp;catalog&nbsp;references&nbsp;all&nbsp;the&nbsp;centralized&nbsp;catalogs.<br>/home&nbsp;:&nbsp;User&nbsp;home&nbsp;directories&nbsp;(optional)<br>Purpose<br>/home&nbsp;is&nbsp;a&nbsp;fairly&nbsp;standard&nbsp;concept,&nbsp;but&nbsp;it&nbsp;is&nbsp;clearly&nbsp;a&nbsp;site-specific&nbsp;filesystem.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN808">[9]</a>&nbsp;The&nbsp;setup&nbsp;will&nbsp;differ&nbsp;from&nbsp;host&nbsp;to&nbsp;host.&nbsp;Therefore,&nbsp;no&nbsp;program&nbsp;should&nbsp;rely&nbsp;on&nbsp;this&nbsp;location.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN819">[10]</a>&nbsp;<br>Requirements<br>User&nbsp;specific&nbsp;configuration&nbsp;files&nbsp;for&nbsp;applications&nbsp;are&nbsp;stored&nbsp;in&nbsp;the&nbsp;user&#39;s&nbsp;home&nbsp;directory&nbsp;in&nbsp;a&nbsp;file&nbsp;that&nbsp;starts&nbsp;with&nbsp;the&nbsp;&#39;.&#39;&nbsp;character&nbsp;(a&nbsp;&quot;dot&nbsp;file&quot;).&nbsp;If&nbsp;an&nbsp;application&nbsp;needs&nbsp;to&nbsp;create&nbsp;more&nbsp;than&nbsp;one&nbsp;dot&nbsp;file&nbsp;then&nbsp;they&nbsp;should&nbsp;be&nbsp;placed&nbsp;in&nbsp;a&nbsp;subdirectory&nbsp;with&nbsp;a&nbsp;name&nbsp;starting&nbsp;with&nbsp;a&nbsp;&#39;.&#39;&nbsp;character,&nbsp;(a&nbsp;&quot;dot&nbsp;directory&quot;).&nbsp;In&nbsp;this&nbsp;case&nbsp;the&nbsp;configuration&nbsp;files&nbsp;should&nbsp;not&nbsp;start&nbsp;with&nbsp;the&nbsp;&#39;.&#39;&nbsp;character.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN826">[11]</a><br>/lib&nbsp;:&nbsp;Essential&nbsp;shared&nbsp;libraries&nbsp;and&nbsp;kernel&nbsp;modules<br>Purpose<br>The&nbsp;/lib&nbsp;directory&nbsp;contains&nbsp;those&nbsp;shared&nbsp;library&nbsp;images&nbsp;needed&nbsp;to&nbsp;boot&nbsp;the&nbsp;system&nbsp;and&nbsp;run&nbsp;the&nbsp;commands&nbsp;in&nbsp;the&nbsp;root&nbsp;filesystem,&nbsp;ie.&nbsp;by&nbsp;binaries&nbsp;in&nbsp;/bin&nbsp;and&nbsp;/sbin.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN836">[12]</a><br>Requirements<br>At&nbsp;least&nbsp;one&nbsp;of&nbsp;each&nbsp;of&nbsp;the&nbsp;following&nbsp;filename&nbsp;patterns&nbsp;are&nbsp;required&nbsp;(they&nbsp;may&nbsp;be&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links):<br>File<br>Description<br>libc.so.*<br>The&nbsp;dynamically-linked&nbsp;C&nbsp;library&nbsp;(optional)<br>ld*<br>The&nbsp;execution&nbsp;time&nbsp;linker/loader&nbsp;(optional)<br>If&nbsp;a&nbsp;C&nbsp;preprocessor&nbsp;is&nbsp;installed,&nbsp;/lib/cpp[/i]&nbsp;must&nbsp;be&nbsp;a&nbsp;reference&nbsp;to&nbsp;it,&nbsp;for&nbsp;historical&nbsp;reasons.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN866">[13]</a><br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/lib,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>modules<br>Loadable&nbsp;kernel&nbsp;modules&nbsp;(optional)<br>/lib&nbsp;:&nbsp;Alternate&nbsp;format&nbsp;essential&nbsp;shared&nbsp;libraries&nbsp;(optional)<br>Purpose<br>There&nbsp;may&nbsp;be&nbsp;one&nbsp;or&nbsp;more&nbsp;variants&nbsp;of&nbsp;the&nbsp;/lib&nbsp;directory&nbsp;on&nbsp;systems&nbsp;which&nbsp;support&nbsp;more&nbsp;than&nbsp;one&nbsp;binary&nbsp;format&nbsp;requiring&nbsp;separate&nbsp;libraries.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN890">[14]</a><br>Requirements<br>If&nbsp;one&nbsp;or&nbsp;more&nbsp;of&nbsp;these&nbsp;directories&nbsp;exist,&nbsp;the&nbsp;requirements&nbsp;for&nbsp;their&nbsp;contents&nbsp;are&nbsp;the&nbsp;same&nbsp;as&nbsp;the&nbsp;normal&nbsp;/lib&nbsp;directory,&nbsp;except&nbsp;that&nbsp;/lib/cpp&nbsp;is&nbsp;not&nbsp;required.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN900">[15]</a><br>/media&nbsp;:&nbsp;Mount&nbsp;point&nbsp;for&nbsp;removeable&nbsp;media<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;subdirectories&nbsp;which&nbsp;are&nbsp;used&nbsp;as&nbsp;mount&nbsp;points&nbsp;for&nbsp;removeable&nbsp;media&nbsp;such&nbsp;as&nbsp;floppy&nbsp;disks,&nbsp;cdroms&nbsp;and&nbsp;zip&nbsp;disks.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Historically&nbsp;there&nbsp;have&nbsp;been&nbsp;a&nbsp;number&nbsp;of&nbsp;other&nbsp;different&nbsp;places&nbsp;used&nbsp;to&nbsp;mount&nbsp;removeable&nbsp;media&nbsp;such&nbsp;as&nbsp;/cdrom,&nbsp;/mnt&nbsp;or&nbsp;/mnt/cdrom.&nbsp;Placing&nbsp;the&nbsp;mount&nbsp;points&nbsp;for&nbsp;all&nbsp;removeable&nbsp;media&nbsp;directly&nbsp;in&nbsp;the&nbsp;root&nbsp;directory&nbsp;would&nbsp;potentially&nbsp;result&nbsp;in&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;extra&nbsp;directories&nbsp;in&nbsp;/.&nbsp;Although&nbsp;the&nbsp;use&nbsp;of&nbsp;subdirectories&nbsp;in&nbsp;/mnt&nbsp;as&nbsp;a&nbsp;mount&nbsp;point&nbsp;has&nbsp;recently&nbsp;been&nbsp;common,&nbsp;it&nbsp;conflicts&nbsp;with&nbsp;a&nbsp;much&nbsp;older&nbsp;tradition&nbsp;of&nbsp;using&nbsp;/mnt&nbsp;directly&nbsp;as&nbsp;a&nbsp;temporary&nbsp;mount&nbsp;point.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/media,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>floppy<br>Floppy&nbsp;drive&nbsp;(optional)<br>cdrom<br>CD-ROM&nbsp;drive&nbsp;(optional)<br>cdrecorder<br>CD&nbsp;writer&nbsp;(optional)<br>zip<br>Zip&nbsp;drive&nbsp;(optional)<br>On&nbsp;systems&nbsp;where&nbsp;more&nbsp;than&nbsp;one&nbsp;device&nbsp;exists&nbsp;for&nbsp;mounting&nbsp;a&nbsp;certain&nbsp;type&nbsp;of&nbsp;media,&nbsp;mount&nbsp;directories&nbsp;can&nbsp;be&nbsp;created&nbsp;by&nbsp;appending&nbsp;a&nbsp;digit&nbsp;to&nbsp;the&nbsp;name&nbsp;of&nbsp;those&nbsp;available&nbsp;above&nbsp;starting&nbsp;with&nbsp;&#39;0&#39;,&nbsp;but&nbsp;the&nbsp;unqualified&nbsp;name&nbsp;must&nbsp;also&nbsp;exist.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN947">[16]</a>&nbsp;<br>/mnt&nbsp;:&nbsp;Mount&nbsp;point&nbsp;for&nbsp;a&nbsp;temporarily&nbsp;mounted&nbsp;filesystem<br>Purpose<br>This&nbsp;directory&nbsp;is&nbsp;provided&nbsp;so&nbsp;that&nbsp;the&nbsp;system&nbsp;administrator&nbsp;may&nbsp;temporarily&nbsp;mount&nbsp;a&nbsp;filesystem&nbsp;as&nbsp;needed.&nbsp;The&nbsp;content&nbsp;of&nbsp;this&nbsp;directory&nbsp;is&nbsp;a&nbsp;local&nbsp;issue&nbsp;and&nbsp;should&nbsp;not&nbsp;affect&nbsp;the&nbsp;manner&nbsp;in&nbsp;which&nbsp;any&nbsp;program&nbsp;is&nbsp;run.<br>This&nbsp;directory&nbsp;must&nbsp;not&nbsp;be&nbsp;used&nbsp;by&nbsp;installation&nbsp;programs:&nbsp;a&nbsp;suitable&nbsp;temporary&nbsp;directory&nbsp;not&nbsp;in&nbsp;use&nbsp;by&nbsp;the&nbsp;system&nbsp;must&nbsp;be&nbsp;used&nbsp;instead.<br>/opt&nbsp;:&nbsp;Add-on&nbsp;application&nbsp;software&nbsp;packages<br>Purpose<br>/opt&nbsp;is&nbsp;reserved&nbsp;for&nbsp;the&nbsp;installation&nbsp;of&nbsp;add-on&nbsp;application&nbsp;software&nbsp;packages.<br>A&nbsp;package&nbsp;to&nbsp;be&nbsp;installed&nbsp;in&nbsp;/opt&nbsp;must&nbsp;locate&nbsp;its&nbsp;static&nbsp;files&nbsp;in&nbsp;a&nbsp;separate&nbsp;/opt/&nbsp;or&nbsp;/opt/&nbsp;directory&nbsp;tree,&nbsp;where&nbsp;&nbsp;is&nbsp;a&nbsp;name&nbsp;that&nbsp;describes&nbsp;the&nbsp;software&nbsp;package&nbsp;and&nbsp;&nbsp;is&nbsp;the&nbsp;provider&#39;s&nbsp;LANANA&nbsp;registered&nbsp;name.<br>Requirements<br>Directory<br>Description<br>Static&nbsp;package&nbsp;objects<br>LANANA&nbsp;registered&nbsp;provider&nbsp;name<br>The&nbsp;directories&nbsp;/opt/bin,&nbsp;/opt/doc,&nbsp;/opt/include,&nbsp;/opt/info,&nbsp;/opt/lib,&nbsp;and&nbsp;/opt/man&nbsp;are&nbsp;reserved&nbsp;for&nbsp;local&nbsp;system&nbsp;administrator&nbsp;use.&nbsp;Packages&nbsp;may&nbsp;provide&nbsp;&quot;front-end&quot;&nbsp;files&nbsp;intended&nbsp;to&nbsp;be&nbsp;placed&nbsp;in&nbsp;(by&nbsp;linking&nbsp;or&nbsp;copying)&nbsp;these&nbsp;reserved&nbsp;directories&nbsp;by&nbsp;the&nbsp;local&nbsp;system&nbsp;administrator,&nbsp;but&nbsp;must&nbsp;function&nbsp;normally&nbsp;in&nbsp;the&nbsp;absence&nbsp;of&nbsp;these&nbsp;reserved&nbsp;directories.<br>Programs&nbsp;to&nbsp;be&nbsp;invoked&nbsp;by&nbsp;users&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;the&nbsp;directory&nbsp;/opt//bin&nbsp;or&nbsp;under&nbsp;the&nbsp;/opt/&nbsp;hierarchy.&nbsp;If&nbsp;the&nbsp;package&nbsp;includes&nbsp;UNIX&nbsp;manual&nbsp;pages,&nbsp;they&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;/opt//share/man&nbsp;or&nbsp;under&nbsp;the&nbsp;/opt/&nbsp;hierarchy,&nbsp;and&nbsp;the&nbsp;same&nbsp;substructure&nbsp;as&nbsp;/usr/share/man&nbsp;must&nbsp;be&nbsp;used.<br>Package&nbsp;files&nbsp;that&nbsp;are&nbsp;variable&nbsp;(change&nbsp;in&nbsp;normal&nbsp;operation)&nbsp;must&nbsp;be&nbsp;installed&nbsp;in&nbsp;/var/opt.&nbsp;See&nbsp;the&nbsp;section&nbsp;on&nbsp;/var/opt&nbsp;for&nbsp;more&nbsp;information.<br>Host-specific&nbsp;configuration&nbsp;files&nbsp;must&nbsp;be&nbsp;installed&nbsp;in&nbsp;/etc/opt.&nbsp;See&nbsp;the&nbsp;section&nbsp;on&nbsp;/etc&nbsp;for&nbsp;more&nbsp;information.<br>No&nbsp;other&nbsp;package&nbsp;files&nbsp;may&nbsp;exist&nbsp;outside&nbsp;the&nbsp;/opt,&nbsp;/var/opt,&nbsp;and&nbsp;/etc/opt&nbsp;hierarchies&nbsp;except&nbsp;for&nbsp;those&nbsp;package&nbsp;files&nbsp;that&nbsp;must&nbsp;reside&nbsp;in&nbsp;specific&nbsp;locations&nbsp;within&nbsp;the&nbsp;filesystem&nbsp;tree&nbsp;in&nbsp;order&nbsp;to&nbsp;function&nbsp;properly.&nbsp;For&nbsp;example,&nbsp;device&nbsp;lock&nbsp;files&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/var/lock&nbsp;and&nbsp;devices&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;/dev.<br>Distributions&nbsp;may&nbsp;install&nbsp;software&nbsp;in&nbsp;/opt,&nbsp;but&nbsp;must&nbsp;not&nbsp;modify&nbsp;or&nbsp;delete&nbsp;software&nbsp;installed&nbsp;by&nbsp;the&nbsp;local&nbsp;system&nbsp;administrator&nbsp;without&nbsp;the&nbsp;assent&nbsp;of&nbsp;the&nbsp;local&nbsp;system&nbsp;administrator.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;use&nbsp;of&nbsp;/opt&nbsp;for&nbsp;add-on&nbsp;software&nbsp;is&nbsp;a&nbsp;well-established&nbsp;practice&nbsp;in&nbsp;the&nbsp;UNIX&nbsp;community.&nbsp;The&nbsp;System&nbsp;V&nbsp;Application&nbsp;Binary&nbsp;Interface&nbsp;[AT&amp;T&nbsp;1990],&nbsp;based&nbsp;on&nbsp;the&nbsp;System&nbsp;V&nbsp;Interface&nbsp;Definition&nbsp;(Third&nbsp;Edition),&nbsp;provides&nbsp;for&nbsp;an&nbsp;/opt&nbsp;structure&nbsp;very&nbsp;similar&nbsp;to&nbsp;the&nbsp;one&nbsp;defined&nbsp;here.<br>The&nbsp;<a href="http://www.intel.com/cd/corporate/home/apac/zho/" target="_blank"><img src="images/keywords/Intel.gif" border="0" align="absmiddle"> Intel</a>&nbsp;Binary&nbsp;Compatibility&nbsp;Standard&nbsp;v.&nbsp;2&nbsp;(iBCS2)&nbsp;also&nbsp;provides&nbsp;a&nbsp;similar&nbsp;structure&nbsp;for&nbsp;/opt.<br>Generally,&nbsp;all&nbsp;data&nbsp;required&nbsp;to&nbsp;support&nbsp;a&nbsp;package&nbsp;on&nbsp;a&nbsp;system&nbsp;must&nbsp;be&nbsp;present&nbsp;within&nbsp;/opt/,&nbsp;including&nbsp;files&nbsp;intended&nbsp;to&nbsp;be&nbsp;copied&nbsp;into&nbsp;/etc/opt/&nbsp;and&nbsp;/var/opt/&nbsp;as&nbsp;well&nbsp;as&nbsp;reserved&nbsp;directories&nbsp;in&nbsp;/opt.<br>The&nbsp;minor&nbsp;restrictions&nbsp;on&nbsp;distributions&nbsp;using&nbsp;/opt&nbsp;are&nbsp;necessary&nbsp;because&nbsp;conflicts&nbsp;are&nbsp;possible&nbsp;between&nbsp;distribution-installed&nbsp;and&nbsp;locally-installed&nbsp;software,&nbsp;especially&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;fixed&nbsp;pathnames&nbsp;found&nbsp;in&nbsp;some&nbsp;binary&nbsp;software.<br>The&nbsp;structure&nbsp;of&nbsp;the&nbsp;directories&nbsp;below&nbsp;/opt/&nbsp;is&nbsp;left&nbsp;up&nbsp;to&nbsp;the&nbsp;packager&nbsp;of&nbsp;the&nbsp;software,&nbsp;though&nbsp;it&nbsp;is&nbsp;recommended&nbsp;that&nbsp;packages&nbsp;are&nbsp;installed&nbsp;in&nbsp;/opt//&nbsp;and&nbsp;follow&nbsp;a&nbsp;similar&nbsp;structure&nbsp;to&nbsp;the&nbsp;guidelines&nbsp;for&nbsp;/opt/package.&nbsp;A&nbsp;valid&nbsp;reason&nbsp;for&nbsp;diverging&nbsp;from&nbsp;this&nbsp;structure&nbsp;is&nbsp;for&nbsp;support&nbsp;packages&nbsp;which&nbsp;may&nbsp;have&nbsp;files&nbsp;installed&nbsp;in&nbsp;/opt//lib&nbsp;or&nbsp;/opt//bin.<br>/root&nbsp;:&nbsp;Home&nbsp;directory&nbsp;for&nbsp;the&nbsp;root&nbsp;user&nbsp;(optional)<br>Purpose<br>The&nbsp;root&nbsp;account&#39;s&nbsp;home&nbsp;directory&nbsp;may&nbsp;be&nbsp;determined&nbsp;by&nbsp;developer&nbsp;or&nbsp;local&nbsp;preference,&nbsp;but&nbsp;this&nbsp;is&nbsp;the&nbsp;recommended&nbsp;default&nbsp;location.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1037">[17]</a><br>/sbin&nbsp;:&nbsp;System&nbsp;binaries<br>Purpose<br>Utilities&nbsp;used&nbsp;for&nbsp;system&nbsp;administration&nbsp;(and&nbsp;other&nbsp;root-only&nbsp;commands)&nbsp;are&nbsp;stored&nbsp;in&nbsp;/sbin,&nbsp;/usr/sbin,&nbsp;and&nbsp;/usr/local/sbin.&nbsp;/sbin&nbsp;contains&nbsp;binaries&nbsp;essential&nbsp;for&nbsp;booting,&nbsp;restoring,&nbsp;recovering,&nbsp;and/or&nbsp;repairing&nbsp;the&nbsp;system&nbsp;in&nbsp;addition&nbsp;to&nbsp;the&nbsp;binaries&nbsp;in&nbsp;/bin.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1051">[18]</a>&nbsp;Programs&nbsp;executed&nbsp;after&nbsp;/usr&nbsp;is&nbsp;known&nbsp;to&nbsp;be&nbsp;mounted&nbsp;(when&nbsp;there&nbsp;are&nbsp;no&nbsp;problems)&nbsp;are&nbsp;generally&nbsp;placed&nbsp;into&nbsp;/usr/sbin.&nbsp;Locally-installed&nbsp;system&nbsp;administration&nbsp;programs&nbsp;should&nbsp;be&nbsp;placed&nbsp;into&nbsp;/usr/local/sbin.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1058">[19]</a><br>Requirements<br>The&nbsp;following&nbsp;commands,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;commands,&nbsp;are&nbsp;required&nbsp;in&nbsp;/sbin.<br>Command<br>Description<br>shutdown[/b]<br>Command&nbsp;to&nbsp;bring&nbsp;the&nbsp;system&nbsp;down.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/sbin&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Command<br>Description<br>fastboot<br>Reboot&nbsp;the&nbsp;system&nbsp;without&nbsp;checking&nbsp;the&nbsp;disks&nbsp;(optional)<br>fasthalt<br>Stop&nbsp;the&nbsp;system&nbsp;without&nbsp;checking&nbsp;the&nbsp;disks&nbsp;(optional)<br>fdisk<br>Partition&nbsp;table&nbsp;manipulator&nbsp;(optional)<br>fsck<br>File&nbsp;system&nbsp;check&nbsp;and&nbsp;repair&nbsp;utility&nbsp;(optional)<br>fsck.*<br>File&nbsp;system&nbsp;check&nbsp;and&nbsp;repair&nbsp;utility&nbsp;for&nbsp;a&nbsp;specific&nbsp;filesystem&nbsp;(optional)<br>getty<br>The&nbsp;getty&nbsp;program&nbsp;(optional)<br>halt<br>Command&nbsp;to&nbsp;stop&nbsp;the&nbsp;system&nbsp;(optional)<br>ifconfig<br>Configure&nbsp;a&nbsp;network&nbsp;interface&nbsp;(optional)<br>init<br>Initial&nbsp;process&nbsp;(optional)<br>mkfs<br>Command&nbsp;to&nbsp;build&nbsp;a&nbsp;filesystem&nbsp;(optional)<br>mkfs.*<br>Command&nbsp;to&nbsp;build&nbsp;a&nbsp;specific&nbsp;filesystem&nbsp;(optional)<br>mkswap<br>Command&nbsp;to&nbsp;set&nbsp;up&nbsp;a&nbsp;swap&nbsp;area&nbsp;(optional)<br>reboot<br>Command&nbsp;to&nbsp;reboot&nbsp;the&nbsp;system&nbsp;(optional)<br>route<br>IP&nbsp;routing&nbsp;table&nbsp;utility&nbsp;(optional)<br>swapon<br>Enable&nbsp;paging&nbsp;and&nbsp;swapping&nbsp;(optional)<br>swapoff<br>Disable&nbsp;paging&nbsp;and&nbsp;swapping&nbsp;(optional)<br>update<br>Daemon&nbsp;to&nbsp;periodically&nbsp;flush&nbsp;filesystem&nbsp;buffers&nbsp;(optional)<br>/srv&nbsp;:&nbsp;Data&nbsp;for&nbsp;services&nbsp;provided&nbsp;by&nbsp;this&nbsp;system<br>Purpose<br>/srv&nbsp;contains&nbsp;site-specific&nbsp;data&nbsp;which&nbsp;is&nbsp;served&nbsp;by&nbsp;this&nbsp;system.&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>This&nbsp;main&nbsp;purpose&nbsp;of&nbsp;specifying&nbsp;this&nbsp;is&nbsp;so&nbsp;that&nbsp;users&nbsp;may&nbsp;find&nbsp;the&nbsp;location&nbsp;of&nbsp;the&nbsp;data&nbsp;files&nbsp;for&nbsp;particular&nbsp;service,&nbsp;and&nbsp;so&nbsp;that&nbsp;services&nbsp;which&nbsp;require&nbsp;a&nbsp;single&nbsp;tree&nbsp;for&nbsp;readonly&nbsp;data,&nbsp;writable&nbsp;data&nbsp;and&nbsp;scripts&nbsp;(such&nbsp;as&nbsp;cgi&nbsp;scripts)&nbsp;can&nbsp;be&nbsp;reasonably&nbsp;placed.&nbsp;Data&nbsp;that&nbsp;is&nbsp;only&nbsp;of&nbsp;interest&nbsp;to&nbsp;a&nbsp;specific&nbsp;user&nbsp;should&nbsp;go&nbsp;in&nbsp;that&nbsp;users&#39;&nbsp;home&nbsp;directory.<br>The&nbsp;methodology&nbsp;used&nbsp;to&nbsp;name&nbsp;subdirectories&nbsp;of&nbsp;/srv&nbsp;is&nbsp;unspecified&nbsp;as&nbsp;there&nbsp;is&nbsp;currently&nbsp;no&nbsp;consensus&nbsp;on&nbsp;how&nbsp;this&nbsp;should&nbsp;be&nbsp;done.&nbsp;One&nbsp;method&nbsp;for&nbsp;structuring&nbsp;data&nbsp;under&nbsp;/srv&nbsp;is&nbsp;by&nbsp;protocol,&nbsp;eg.&nbsp;ftp,&nbsp;rsync,&nbsp;www,&nbsp;and&nbsp;cvs.&nbsp;On&nbsp;large&nbsp;systems&nbsp;it&nbsp;can&nbsp;be&nbsp;useful&nbsp;to&nbsp;structure&nbsp;/srv&nbsp;by&nbsp;administrative&nbsp;context,&nbsp;such&nbsp;as&nbsp;/srv/physics/www,&nbsp;/srv/compsci/cvs,&nbsp;etc.&nbsp;This&nbsp;setup&nbsp;will&nbsp;differ&nbsp;from&nbsp;host&nbsp;to&nbsp;host.&nbsp;Therefore,&nbsp;no&nbsp;program&nbsp;should&nbsp;rely&nbsp;on&nbsp;a&nbsp;specific&nbsp;subdirectory&nbsp;structure&nbsp;of&nbsp;/srv&nbsp;existing&nbsp;or&nbsp;data&nbsp;necessarily&nbsp;being&nbsp;stored&nbsp;in&nbsp;/srv.&nbsp;However&nbsp;/srv&nbsp;should&nbsp;always&nbsp;exist&nbsp;on&nbsp;FHS&nbsp;compliant&nbsp;systems&nbsp;and&nbsp;should&nbsp;be&nbsp;used&nbsp;as&nbsp;the&nbsp;default&nbsp;location&nbsp;for&nbsp;such&nbsp;data.<br>Distributions&nbsp;must&nbsp;take&nbsp;care&nbsp;not&nbsp;to&nbsp;remove&nbsp;locally&nbsp;placed&nbsp;files&nbsp;in&nbsp;these&nbsp;directories&nbsp;without&nbsp;administrator&nbsp;permission.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1192">[20]</a><br>/tmp&nbsp;:&nbsp;Temporary&nbsp;files<br>Purpose<br>The&nbsp;/tmp&nbsp;directory&nbsp;must&nbsp;be&nbsp;made&nbsp;available&nbsp;for&nbsp;programs&nbsp;that&nbsp;require&nbsp;temporary&nbsp;files.<br>Programs&nbsp;must&nbsp;not&nbsp;assume&nbsp;that&nbsp;any&nbsp;files&nbsp;or&nbsp;directories&nbsp;in&nbsp;/tmp&nbsp;are&nbsp;preserved&nbsp;between&nbsp;invocations&nbsp;of&nbsp;the&nbsp;program.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>IEEE&nbsp;standard&nbsp;P1003.2&nbsp;(POSIX,&nbsp;part&nbsp;2)&nbsp;makes&nbsp;requirements&nbsp;that&nbsp;are&nbsp;similar&nbsp;to&nbsp;the&nbsp;above&nbsp;section.<br>Although&nbsp;data&nbsp;stored&nbsp;in&nbsp;/tmp&nbsp;may&nbsp;be&nbsp;deleted&nbsp;in&nbsp;a&nbsp;site-specific&nbsp;manner,&nbsp;it&nbsp;is&nbsp;recommended&nbsp;that&nbsp;files&nbsp;and&nbsp;directories&nbsp;located&nbsp;in&nbsp;/tmp&nbsp;be&nbsp;deleted&nbsp;whenever&nbsp;the&nbsp;system&nbsp;is&nbsp;booted.<br>FHS&nbsp;added&nbsp;this&nbsp;recommendation&nbsp;on&nbsp;the&nbsp;basis&nbsp;of&nbsp;historical&nbsp;precedent&nbsp;and&nbsp;common&nbsp;practice,&nbsp;but&nbsp;did&nbsp;not&nbsp;make&nbsp;it&nbsp;a&nbsp;requirement&nbsp;because&nbsp;system&nbsp;administration&nbsp;is&nbsp;not&nbsp;within&nbsp;the&nbsp;scope&nbsp;of&nbsp;this&nbsp;standard.&nbsp;<br>Chapter&nbsp;4.&nbsp;The&nbsp;/usr&nbsp;Hierarchy<br>Purpose<br>/usr&nbsp;is&nbsp;the&nbsp;second&nbsp;major&nbsp;section&nbsp;of&nbsp;the&nbsp;filesystem.&nbsp;/usr&nbsp;is&nbsp;shareable,&nbsp;read-only&nbsp;data.&nbsp;That&nbsp;means&nbsp;that&nbsp;/usr&nbsp;should&nbsp;be&nbsp;shareable&nbsp;between&nbsp;various&nbsp;FHS-compliant&nbsp;hosts&nbsp;and&nbsp;must&nbsp;not&nbsp;be&nbsp;written&nbsp;to.&nbsp;Any&nbsp;information&nbsp;that&nbsp;is&nbsp;host-specific&nbsp;or&nbsp;varies&nbsp;with&nbsp;time&nbsp;is&nbsp;stored&nbsp;elsewhere.<br>Large&nbsp;software&nbsp;packages&nbsp;must&nbsp;not&nbsp;use&nbsp;a&nbsp;direct&nbsp;subdirectory&nbsp;under&nbsp;the&nbsp;/usr&nbsp;hierarchy.<br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;are&nbsp;required&nbsp;in&nbsp;/usr.<br>Directory<br>Description<br>bin<br>Most&nbsp;user&nbsp;commands<br>include<br>Header&nbsp;files&nbsp;included&nbsp;by&nbsp;C&nbsp;programs<br>lib<br>Libraries<br>local<br>Local&nbsp;hierarchy&nbsp;(empty&nbsp;after&nbsp;main&nbsp;installation)<br>sbin<br>Non-vital&nbsp;system&nbsp;binaries<br>share<br>Architecture-independent&nbsp;data<br>Specific&nbsp;Options<br>Directory<br>Description<br>X11R6<br>XWindow&nbsp;System,&nbsp;version&nbsp;11&nbsp;release&nbsp;6&nbsp;(optional)<br>games<br>Games&nbsp;and&nbsp;educational&nbsp;binaries&nbsp;(optional)<br>lib<br>Alternate&nbsp;Format&nbsp;Libraries&nbsp;(optional)<br>src<br>Source&nbsp;code&nbsp;(optional)<br>An&nbsp;exception&nbsp;is&nbsp;made&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;because&nbsp;of&nbsp;considerable&nbsp;precedent&nbsp;and&nbsp;widely-accepted&nbsp;practice.<br>The&nbsp;following&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories&nbsp;may&nbsp;be&nbsp;present.&nbsp;This&nbsp;possibility&nbsp;is&nbsp;based&nbsp;on&nbsp;the&nbsp;need&nbsp;to&nbsp;preserve&nbsp;compatibility&nbsp;with&nbsp;older&nbsp;systems&nbsp;until&nbsp;all&nbsp;implementations&nbsp;can&nbsp;be&nbsp;assumed&nbsp;to&nbsp;use&nbsp;the&nbsp;/var&nbsp;hierarchy.<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/spool&nbsp;-&gt;&nbsp;/var/spool<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/tmp&nbsp;-&gt;&nbsp;/var/tmp<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/spool/locks&nbsp;-&gt;&nbsp;/var/lock<br>Once&nbsp;a&nbsp;system&nbsp;no&nbsp;longer&nbsp;requires&nbsp;any&nbsp;one&nbsp;of&nbsp;the&nbsp;above&nbsp;symbolic&nbsp;links,&nbsp;the&nbsp;link&nbsp;may&nbsp;be&nbsp;removed,&nbsp;if&nbsp;desired.<br>/usr/X11R6&nbsp;:&nbsp;X&nbsp;Window&nbsp;System,&nbsp;Version&nbsp;11&nbsp;Release&nbsp;6&nbsp;(optional)<br>Purpose<br>This&nbsp;hierarchy&nbsp;is&nbsp;reserved&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;System,&nbsp;version&nbsp;11&nbsp;release&nbsp;6,&nbsp;and&nbsp;related&nbsp;files.<br>To&nbsp;simplify&nbsp;matters&nbsp;and&nbsp;make&nbsp;XFree86&nbsp;more&nbsp;compatible&nbsp;with&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;on&nbsp;other&nbsp;systems,&nbsp;the&nbsp;following&nbsp;symbolic&nbsp;links&nbsp;must&nbsp;be&nbsp;present&nbsp;if&nbsp;/usr/X11R6&nbsp;exists:<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/bin/X11&nbsp;-&gt;&nbsp;/usr/X11R6/bin<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/lib/X11&nbsp;-&gt;&nbsp;/usr/X11R6/lib/X11<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/include/X11&nbsp;-&gt;&nbsp;/usr/X11R6/include/X11<br>In&nbsp;general,&nbsp;software&nbsp;must&nbsp;not&nbsp;be&nbsp;installed&nbsp;or&nbsp;managed&nbsp;via&nbsp;the&nbsp;above&nbsp;symbolic&nbsp;links.&nbsp;They&nbsp;are&nbsp;intended&nbsp;for&nbsp;utilization&nbsp;by&nbsp;users&nbsp;only.&nbsp;The&nbsp;difficulty&nbsp;is&nbsp;related&nbsp;to&nbsp;the&nbsp;release&nbsp;version&nbsp;of&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;—&nbsp;in&nbsp;transitional&nbsp;periods,&nbsp;it&nbsp;is&nbsp;impossible&nbsp;to&nbsp;know&nbsp;what&nbsp;release&nbsp;of&nbsp;X11&nbsp;is&nbsp;in&nbsp;use.<br>Specific&nbsp;Options<br>Host-specific&nbsp;data&nbsp;in&nbsp;/usr/X11R6/lib/X11&nbsp;should&nbsp;be&nbsp;interpreted&nbsp;as&nbsp;a&nbsp;demonstration&nbsp;file.&nbsp;Applications&nbsp;requiring&nbsp;information&nbsp;about&nbsp;the&nbsp;current&nbsp;host&nbsp;must&nbsp;reference&nbsp;a&nbsp;configuration&nbsp;file&nbsp;in&nbsp;/etc/X11,&nbsp;which&nbsp;may&nbsp;be&nbsp;linked&nbsp;to&nbsp;a&nbsp;file&nbsp;in&nbsp;/usr/X11R6/lib.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1299">[21]</a><br>/usr/bin&nbsp;:&nbsp;Most&nbsp;user&nbsp;commands<br>Purpose<br>This&nbsp;is&nbsp;the&nbsp;primary&nbsp;directory&nbsp;of&nbsp;executable&nbsp;commands&nbsp;on&nbsp;the&nbsp;system.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/bin,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>mh<br>Commands&nbsp;for&nbsp;the&nbsp;MH&nbsp;mail&nbsp;handling&nbsp;system&nbsp;(optional)<br>/usr/bin/X11&nbsp;must&nbsp;be&nbsp;a&nbsp;symlink&nbsp;to&nbsp;/usr/X11R6/bin&nbsp;if&nbsp;the&nbsp;latter&nbsp;exists.<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/bin,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Command<br>Description<br>perl[/b]<br>The&nbsp;Practical&nbsp;Extraction&nbsp;and&nbsp;Report&nbsp;Language&nbsp;(optional)<br>python[/b]<br>The&nbsp;Python&nbsp;interpreted&nbsp;language&nbsp;(optional)<br>tclsh[/b]<br>Simple&nbsp;shell&nbsp;containing&nbsp;Tcl&nbsp;interpreter&nbsp;(optional)<br>wish[/b]<br>Simple&nbsp;Tcl/Tk&nbsp;windowing&nbsp;shell&nbsp;(optional)<br>expect[/b]<br>Program&nbsp;for&nbsp;interactive&nbsp;dialog&nbsp;(optional)<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Because&nbsp;shell&nbsp;script&nbsp;interpreters&nbsp;(invoked&nbsp;with&nbsp;#!&nbsp;on&nbsp;the&nbsp;first&nbsp;line&nbsp;of&nbsp;a&nbsp;shell&nbsp;script)&nbsp;cannot&nbsp;rely&nbsp;on&nbsp;a&nbsp;path,&nbsp;it&nbsp;is&nbsp;advantageous&nbsp;to&nbsp;standardize&nbsp;their&nbsp;locations.&nbsp;The&nbsp;Bourne&nbsp;shell&nbsp;and&nbsp;C-shell&nbsp;interpreters&nbsp;are&nbsp;already&nbsp;fixed&nbsp;in&nbsp;/bin,&nbsp;but&nbsp;Perl,&nbsp;Python,&nbsp;and&nbsp;Tcl&nbsp;are&nbsp;often&nbsp;found&nbsp;in&nbsp;many&nbsp;different&nbsp;places.&nbsp;They&nbsp;may&nbsp;be&nbsp;symlinks&nbsp;to&nbsp;the&nbsp;physical&nbsp;location&nbsp;of&nbsp;the&nbsp;shell&nbsp;interpreters.&nbsp;<br>/usr/include&nbsp;:&nbsp;Directory&nbsp;for&nbsp;standard&nbsp;include&nbsp;files.<br>Purpose<br>This&nbsp;is&nbsp;where&nbsp;all&nbsp;of&nbsp;the&nbsp;system&#39;s&nbsp;general-use&nbsp;include&nbsp;files&nbsp;for&nbsp;the&nbsp;C&nbsp;programming&nbsp;language&nbsp;should&nbsp;be&nbsp;placed.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/include,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>bsd<br>BSD&nbsp;compatibility&nbsp;include&nbsp;files&nbsp;(optional)<br>The&nbsp;symbolic&nbsp;link&nbsp;/usr/include/X11&nbsp;must&nbsp;link&nbsp;to&nbsp;/usr/X11R6/include/X11&nbsp;if&nbsp;the&nbsp;latter&nbsp;exists.<br>/usr/lib&nbsp;:&nbsp;Libraries&nbsp;for&nbsp;programming&nbsp;and&nbsp;packages<br>Purpose<br>/usr/lib&nbsp;includes&nbsp;object&nbsp;files,&nbsp;libraries,&nbsp;and&nbsp;internal&nbsp;binaries&nbsp;that&nbsp;are&nbsp;not&nbsp;intended&nbsp;to&nbsp;be&nbsp;executed&nbsp;directly&nbsp;by&nbsp;users&nbsp;or&nbsp;shell&nbsp;scripts.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1389">[22]</a><br>Applications&nbsp;may&nbsp;use&nbsp;a&nbsp;single&nbsp;subdirectory&nbsp;under&nbsp;/usr/lib.&nbsp;If&nbsp;an&nbsp;application&nbsp;uses&nbsp;a&nbsp;subdirectory,&nbsp;all&nbsp;architecture-dependent&nbsp;data&nbsp;exclusively&nbsp;used&nbsp;by&nbsp;the&nbsp;application&nbsp;must&nbsp;be&nbsp;placed&nbsp;within&nbsp;that&nbsp;subdirectory.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1394">[23]</a><br>Specific&nbsp;Options<br>For&nbsp;historical&nbsp;reasons,&nbsp;/usr/lib/sendmail[/b]&nbsp;must&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;/usr/sbin/sendmail[/b]&nbsp;if&nbsp;the&nbsp;latter&nbsp;exists.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1402">[24]</a><br>If&nbsp;/lib/X11&nbsp;exists,&nbsp;/usr/lib/X11&nbsp;must&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;/lib/X11,&nbsp;or&nbsp;to&nbsp;whatever&nbsp;/lib/X11&nbsp;is&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1418">[25]</a><br>/usr/lib&nbsp;:&nbsp;Alternate&nbsp;format&nbsp;libraries&nbsp;(optional)<br>Purpose<br>/usr/lib&nbsp;performs&nbsp;the&nbsp;same&nbsp;role&nbsp;as&nbsp;/usr/lib&nbsp;for&nbsp;an&nbsp;alternate&nbsp;binary&nbsp;format,&nbsp;except&nbsp;that&nbsp;the&nbsp;symbolic&nbsp;links&nbsp;/usr/lib/sendmail&nbsp;and&nbsp;/usr/lib/X11&nbsp;are&nbsp;not&nbsp;required.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1435">[26]</a><br>/usr/local&nbsp;:&nbsp;Local&nbsp;hierarchy<br>Purpose<br>The&nbsp;/usr/local&nbsp;hierarchy&nbsp;is&nbsp;for&nbsp;use&nbsp;by&nbsp;the&nbsp;system&nbsp;administrator&nbsp;when&nbsp;installing&nbsp;software&nbsp;locally.&nbsp;It&nbsp;needs&nbsp;to&nbsp;be&nbsp;safe&nbsp;from&nbsp;being&nbsp;overwritten&nbsp;when&nbsp;the&nbsp;system&nbsp;software&nbsp;is&nbsp;updated.&nbsp;It&nbsp;may&nbsp;be&nbsp;used&nbsp;for&nbsp;programs&nbsp;and&nbsp;data&nbsp;that&nbsp;are&nbsp;shareable&nbsp;amongst&nbsp;a&nbsp;group&nbsp;of&nbsp;hosts,&nbsp;but&nbsp;not&nbsp;found&nbsp;in&nbsp;/usr.<br>Locally&nbsp;installed&nbsp;software&nbsp;must&nbsp;be&nbsp;placed&nbsp;within&nbsp;/usr/local&nbsp;rather&nbsp;than&nbsp;/usr&nbsp;unless&nbsp;it&nbsp;is&nbsp;being&nbsp;installed&nbsp;to&nbsp;replace&nbsp;or&nbsp;upgrade&nbsp;software&nbsp;in&nbsp;/usr.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1450">[27]</a><br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/local<br>Directory<br>Description<br>bin<br>Local&nbsp;binaries<br>etc<br>Host-specific&nbsp;system&nbsp;configuration&nbsp;for&nbsp;local&nbsp;binaries<br>games<br>Local&nbsp;game&nbsp;binaries<br>include<br>Local&nbsp;C&nbsp;header&nbsp;files<br>lib<br>Local&nbsp;libraries<br>man<br>Local&nbsp;online&nbsp;manuals<br>sbin<br>Local&nbsp;system&nbsp;binaries<br>share<br>Local&nbsp;architecture-independent&nbsp;hierarchy<br>src<br>Local&nbsp;source&nbsp;code<br>No&nbsp;other&nbsp;directories,&nbsp;except&nbsp;those&nbsp;listed&nbsp;below,&nbsp;may&nbsp;be&nbsp;in&nbsp;/usr/local&nbsp;after&nbsp;first&nbsp;installing&nbsp;a&nbsp;FHS-compliant&nbsp;system.<br>Specific&nbsp;Options<br>If&nbsp;directories&nbsp;/lib&nbsp;or&nbsp;/usr/lib&nbsp;exist,&nbsp;the&nbsp;equivalent&nbsp;directories&nbsp;must&nbsp;also&nbsp;exist&nbsp;in&nbsp;/usr/local.<br>/usr/local/etc&nbsp;may&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;/etc/local.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;consistency&nbsp;of&nbsp;/usr/local/etc&nbsp;is&nbsp;beneficial&nbsp;to&nbsp;installers,&nbsp;and&nbsp;is&nbsp;already&nbsp;used&nbsp;in&nbsp;other&nbsp;systems.&nbsp;As&nbsp;all&nbsp;of&nbsp;/usr/local&nbsp;needs&nbsp;to&nbsp;be&nbsp;backed&nbsp;up&nbsp;to&nbsp;reproduce&nbsp;a&nbsp;system,&nbsp;it&nbsp;introduces&nbsp;no&nbsp;additional&nbsp;maintenance&nbsp;overhead,&nbsp;but&nbsp;a&nbsp;symlink&nbsp;to&nbsp;/etc/local&nbsp;is&nbsp;suitable&nbsp;if&nbsp;systems&nbsp;want&nbsp;alltheir&nbsp;configuration&nbsp;under&nbsp;one&nbsp;hierarchy.<br>Note&nbsp;that&nbsp;/usr/etc&nbsp;is&nbsp;still&nbsp;not&nbsp;allowed:&nbsp;programs&nbsp;in&nbsp;/usr&nbsp;should&nbsp;place&nbsp;configuration&nbsp;files&nbsp;in&nbsp;/etc.<br>/usr/local/share<br>The&nbsp;requirements&nbsp;for&nbsp;the&nbsp;contents&nbsp;of&nbsp;this&nbsp;directory&nbsp;are&nbsp;the&nbsp;same&nbsp;as&nbsp;/usr/share.&nbsp;The&nbsp;only&nbsp;additional&nbsp;constraint&nbsp;is&nbsp;that&nbsp;/usr/local/share/man&nbsp;and&nbsp;/usr/local/man&nbsp;directories&nbsp;must&nbsp;be&nbsp;synonomous&nbsp;(usually&nbsp;this&nbsp;means&nbsp;that&nbsp;one&nbsp;of&nbsp;them&nbsp;must&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link).&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1530">[28]</a><br>/usr/sbin&nbsp;:&nbsp;Non-essential&nbsp;standard&nbsp;system&nbsp;binaries<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;any&nbsp;non-essential&nbsp;binaries&nbsp;used&nbsp;exclusively&nbsp;by&nbsp;the&nbsp;system&nbsp;administrator.&nbsp;System&nbsp;administration&nbsp;programs&nbsp;that&nbsp;are&nbsp;required&nbsp;for&nbsp;system&nbsp;repair,&nbsp;system&nbsp;recovery,&nbsp;mounting&nbsp;/usr,&nbsp;or&nbsp;other&nbsp;essential&nbsp;functions&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/sbin&nbsp;instead.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1540">[29]</a><br>/usr/share&nbsp;:&nbsp;Architecture-independent&nbsp;data<br>Purpose<br>The&nbsp;/usr/share&nbsp;hierarchy&nbsp;is&nbsp;for&nbsp;all&nbsp;read-only&nbsp;architecture&nbsp;independent&nbsp;data&nbsp;files.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1550">[30]</a>&nbsp;<br>This&nbsp;hierarchy&nbsp;is&nbsp;intended&nbsp;to&nbsp;be&nbsp;shareable&nbsp;among&nbsp;all&nbsp;architecture&nbsp;platforms&nbsp;of&nbsp;a&nbsp;given&nbsp;OS;&nbsp;thus,&nbsp;for&nbsp;example,&nbsp;a&nbsp;site&nbsp;with&nbsp;i386,&nbsp;Alpha,&nbsp;and&nbsp;PPC&nbsp;platforms&nbsp;might&nbsp;maintain&nbsp;a&nbsp;single&nbsp;/usr/share&nbsp;directory&nbsp;that&nbsp;is&nbsp;centrally-mounted.&nbsp;Note,&nbsp;however,&nbsp;that&nbsp;/usr/share&nbsp;is&nbsp;generally&nbsp;not&nbsp;intended&nbsp;to&nbsp;be&nbsp;shared&nbsp;by&nbsp;different&nbsp;OSes&nbsp;or&nbsp;by&nbsp;different&nbsp;releases&nbsp;of&nbsp;the&nbsp;same&nbsp;OS.<br>Any&nbsp;program&nbsp;or&nbsp;package&nbsp;which&nbsp;contains&nbsp;or&nbsp;requires&nbsp;data&nbsp;that&nbsp;doesn&#39;t&nbsp;need&nbsp;to&nbsp;be&nbsp;modified&nbsp;should&nbsp;store&nbsp;that&nbsp;data&nbsp;in&nbsp;/usr/share&nbsp;(or&nbsp;/usr/local/share,&nbsp;if&nbsp;installed&nbsp;locally).&nbsp;It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;a&nbsp;subdirectory&nbsp;be&nbsp;used&nbsp;in&nbsp;/usr/share&nbsp;for&nbsp;this&nbsp;purpose.<br>Game&nbsp;data&nbsp;stored&nbsp;in&nbsp;/usr/share/games&nbsp;must&nbsp;be&nbsp;purely&nbsp;static&nbsp;data.&nbsp;Any&nbsp;modifiable&nbsp;files,&nbsp;such&nbsp;as&nbsp;score&nbsp;files,&nbsp;game&nbsp;play&nbsp;logs,&nbsp;and&nbsp;so&nbsp;forth,&nbsp;should&nbsp;be&nbsp;placed&nbsp;in&nbsp;/var/games.<br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share<br>Directory<br>Description<br>man<br>Online&nbsp;manuals<br>misc<br>Miscellaneous&nbsp;architecture-independent&nbsp;data<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>dict<br>Word&nbsp;lists&nbsp;(optional)<br>doc<br>Miscellaneous&nbsp;documentation&nbsp;(optional)<br>games<br>Static&nbsp;data&nbsp;files&nbsp;for&nbsp;/usr/games&nbsp;(optional)<br>info<br>GNU&nbsp;Info&nbsp;system&nbsp;s&nbsp;primary&nbsp;directory&nbsp;(optional)<br>locale<br>Locale&nbsp;information&nbsp;(optional)<br>nls<br>Message&nbsp;catalogs&nbsp;for&nbsp;Native&nbsp;language&nbsp;support&nbsp;(optional)<br>sgml<br>SGML&nbsp;data&nbsp;(optional)<br>terminfo<br>Directories&nbsp;for&nbsp;terminfo&nbsp;database&nbsp;(optional)<br>tmac<br>troff&nbsp;macros&nbsp;not&nbsp;distributed&nbsp;with&nbsp;groff&nbsp;(optional)<br>xml<br>XML&nbsp;data&nbsp;(optional)<br>zoneinfo<br>Timezone&nbsp;information&nbsp;and&nbsp;configuration&nbsp;(optional)<br>It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;application-specific,&nbsp;architecture-independent&nbsp;directories&nbsp;be&nbsp;placed&nbsp;here.&nbsp;Such&nbsp;directories&nbsp;include&nbsp;groff[/b],&nbsp;perl[/b],&nbsp;ghostscript[/b],&nbsp;texmf[/b],&nbsp;and&nbsp;kbd[/b]&nbsp;(Linux)&nbsp;or&nbsp;syscons[/b]&nbsp;(BSD).&nbsp;They&nbsp;may,&nbsp;however,&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/lib&nbsp;for&nbsp;backwards&nbsp;compatibility,&nbsp;at&nbsp;the&nbsp;distributor&#39;s&nbsp;discretion.&nbsp;Similarly,&nbsp;a&nbsp;/usr/lib/games&nbsp;hierarchy&nbsp;may&nbsp;be&nbsp;used&nbsp;in&nbsp;addition&nbsp;to&nbsp;the&nbsp;/usr/share/games&nbsp;hierarchy&nbsp;if&nbsp;the&nbsp;distributor&nbsp;wishes&nbsp;to&nbsp;place&nbsp;some&nbsp;game&nbsp;data&nbsp;there.<br>/usr/share/dict&nbsp;:&nbsp;Word&nbsp;lists&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;is&nbsp;the&nbsp;home&nbsp;for&nbsp;word&nbsp;lists&nbsp;on&nbsp;the&nbsp;system;&nbsp;Traditionally&nbsp;this&nbsp;directory&nbsp;contains&nbsp;only&nbsp;the&nbsp;English&nbsp;words&nbsp;file,&nbsp;which&nbsp;is&nbsp;used&nbsp;by&nbsp;look(1)[/b]&nbsp;and&nbsp;various&nbsp;spelling&nbsp;programs.&nbsp;words&nbsp;may&nbsp;use&nbsp;either&nbsp;American&nbsp;or&nbsp;British&nbsp;spelling.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;reason&nbsp;that&nbsp;only&nbsp;word&nbsp;lists&nbsp;are&nbsp;located&nbsp;here&nbsp;is&nbsp;that&nbsp;they&nbsp;are&nbsp;the&nbsp;only&nbsp;files&nbsp;common&nbsp;to&nbsp;all&nbsp;spell&nbsp;checkers.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share/dict,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>File<br>Description<br>words<br>List&nbsp;of&nbsp;English&nbsp;words&nbsp;(optional)<br>Sites&nbsp;that&nbsp;require&nbsp;both&nbsp;American&nbsp;and&nbsp;British&nbsp;spelling&nbsp;may&nbsp;link&nbsp;words&nbsp;to&nbsp;&amp;shy;/usr/share/dict/american-english&nbsp;or&nbsp;&amp;shy;/usr/share/dict/british-english.<br>Word&nbsp;lists&nbsp;for&nbsp;other&nbsp;languages&nbsp;may&nbsp;be&nbsp;added&nbsp;using&nbsp;the&nbsp;English&nbsp;name&nbsp;for&nbsp;that&nbsp;language,&nbsp;e.g.,&nbsp;/usr/share/dict/french,&nbsp;/usr/share/dict/danish,&nbsp;etc.&nbsp;These&nbsp;should,&nbsp;if&nbsp;possible,&nbsp;use&nbsp;an&nbsp;ISO&nbsp;8859&nbsp;character&nbsp;set&nbsp;which&nbsp;is&nbsp;appropriate&nbsp;for&nbsp;the&nbsp;language&nbsp;in&nbsp;question;&nbsp;if&nbsp;possible&nbsp;the&nbsp;Latin1&nbsp;(ISO&nbsp;8859-1)&nbsp;character&nbsp;set&nbsp;should&nbsp;be&nbsp;used&nbsp;(this&nbsp;is&nbsp;often&nbsp;not&nbsp;possible).<br>Other&nbsp;word&nbsp;lists&nbsp;must&nbsp;be&nbsp;included&nbsp;here,&nbsp;if&nbsp;present.<br>/usr/share/man&nbsp;:&nbsp;Manual&nbsp;pages<br>Purpose<br>This&nbsp;section&nbsp;details&nbsp;the&nbsp;organization&nbsp;for&nbsp;manual&nbsp;pages&nbsp;throughout&nbsp;the&nbsp;system,&nbsp;including&nbsp;/usr/share/man.&nbsp;Also&nbsp;refer&nbsp;to&nbsp;the&nbsp;section&nbsp;on&nbsp;/var/cache/man.<br>The&nbsp;primary&nbsp;&nbsp;of&nbsp;the&nbsp;system&nbsp;is&nbsp;/usr/share/man.&nbsp;/usr/share/man&nbsp;contains&nbsp;manual&nbsp;information&nbsp;for&nbsp;commands&nbsp;and&nbsp;data&nbsp;under&nbsp;the&nbsp;/&nbsp;and&nbsp;/usr&nbsp;filesystems.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1701">[31]</a><br>Manual&nbsp;pages&nbsp;are&nbsp;stored&nbsp;in&nbsp;//man/.&nbsp;An&nbsp;explanation&nbsp;of&nbsp;,&nbsp;,&nbsp;,&nbsp;and&nbsp;&nbsp;is&nbsp;given&nbsp;below.<br>A&nbsp;description&nbsp;of&nbsp;each&nbsp;section&nbsp;follows:<br>man1:&nbsp;User&nbsp;programs&nbsp;Manual&nbsp;pages&nbsp;that&nbsp;describe&nbsp;publicly&nbsp;accessible&nbsp;commands&nbsp;are&nbsp;contained&nbsp;in&nbsp;this&nbsp;chapter.&nbsp;Most&nbsp;program&nbsp;documentation&nbsp;that&nbsp;a&nbsp;user&nbsp;will&nbsp;need&nbsp;to&nbsp;use&nbsp;is&nbsp;located&nbsp;here.<br>man2:&nbsp;System&nbsp;calls&nbsp;This&nbsp;section&nbsp;describes&nbsp;all&nbsp;of&nbsp;the&nbsp;system&nbsp;calls&nbsp;(requests&nbsp;for&nbsp;the&nbsp;kernel&nbsp;to&nbsp;perform&nbsp;operations).<br>man3:&nbsp;Library&nbsp;functions&nbsp;and&nbsp;subroutines&nbsp;Section&nbsp;3&nbsp;describes&nbsp;program&nbsp;library&nbsp;routines&nbsp;that&nbsp;are&nbsp;not&nbsp;direct&nbsp;calls&nbsp;to&nbsp;kernel&nbsp;services.&nbsp;This&nbsp;and&nbsp;chapter&nbsp;2&nbsp;are&nbsp;only&nbsp;really&nbsp;of&nbsp;interest&nbsp;to&nbsp;programmers.<br>man4:&nbsp;Special&nbsp;files&nbsp;Section&nbsp;4&nbsp;describes&nbsp;the&nbsp;special&nbsp;files,&nbsp;related&nbsp;driver&nbsp;functions,&nbsp;and&nbsp;networking&nbsp;support&nbsp;available&nbsp;in&nbsp;the&nbsp;system.&nbsp;Typically,&nbsp;this&nbsp;includes&nbsp;the&nbsp;device&nbsp;files&nbsp;found&nbsp;in&nbsp;/dev&nbsp;and&nbsp;the&nbsp;kernel&nbsp;interface&nbsp;to&nbsp;networking&nbsp;protocol&nbsp;support.<br>man5:&nbsp;File&nbsp;formats&nbsp;The&nbsp;formats&nbsp;for&nbsp;many&nbsp;data&nbsp;files&nbsp;are&nbsp;documented&nbsp;in&nbsp;the&nbsp;section&nbsp;5.&nbsp;This&nbsp;includes&nbsp;various&nbsp;include&nbsp;files,&nbsp;program&nbsp;output&nbsp;files,&nbsp;and&nbsp;system&nbsp;files.<br>man6:&nbsp;Games&nbsp;This&nbsp;chapter&nbsp;documents&nbsp;games,&nbsp;demos,&nbsp;and&nbsp;generally&nbsp;trivial&nbsp;programs.&nbsp;Different&nbsp;people&nbsp;have&nbsp;various&nbsp;notions&nbsp;about&nbsp;how&nbsp;essential&nbsp;this&nbsp;is.<br>man7:&nbsp;Miscellaneous&nbsp;Manual&nbsp;pages&nbsp;that&nbsp;are&nbsp;difficult&nbsp;to&nbsp;classify&nbsp;are&nbsp;designated&nbsp;as&nbsp;being&nbsp;section&nbsp;7.&nbsp;The&nbsp;troff&nbsp;and&nbsp;other&nbsp;text&nbsp;processing&nbsp;macro&nbsp;packages&nbsp;are&nbsp;found&nbsp;here.<br>man8:&nbsp;System&nbsp;administration&nbsp;Programs&nbsp;used&nbsp;by&nbsp;system&nbsp;administrators&nbsp;for&nbsp;system&nbsp;operation&nbsp;and&nbsp;maintenance&nbsp;are&nbsp;documented&nbsp;here.&nbsp;Some&nbsp;of&nbsp;these&nbsp;programs&nbsp;are&nbsp;also&nbsp;occasionally&nbsp;useful&nbsp;for&nbsp;normal&nbsp;users.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share//,&nbsp;unless&nbsp;they&nbsp;are&nbsp;empty:&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1741">[32]</a><br>Directory<br>Description<br>man1<br>User&nbsp;programs&nbsp;(optional)<br>man2<br>System&nbsp;calls&nbsp;(optional)<br>man3<br>Library&nbsp;calls&nbsp;(optional)<br>man4<br>Special&nbsp;files&nbsp;(optional)<br>man5<br>File&nbsp;formats&nbsp;(optional)<br>man6<br>Games&nbsp;(optional)<br>man7<br>Miscellaneous&nbsp;(optional)<br>man8<br>System&nbsp;administration&nbsp;(optional)<br>The&nbsp;component&nbsp;&nbsp;describes&nbsp;the&nbsp;manual&nbsp;section.<br>Provisions&nbsp;must&nbsp;be&nbsp;made&nbsp;in&nbsp;the&nbsp;structure&nbsp;of&nbsp;/usr/share/man&nbsp;to&nbsp;support&nbsp;manual&nbsp;pages&nbsp;which&nbsp;are&nbsp;written&nbsp;in&nbsp;different&nbsp;(or&nbsp;multiple)&nbsp;languages.&nbsp;These&nbsp;provisions&nbsp;must&nbsp;take&nbsp;into&nbsp;account&nbsp;the&nbsp;storage&nbsp;and&nbsp;reference&nbsp;of&nbsp;these&nbsp;manual&nbsp;pages.&nbsp;Relevant&nbsp;factors&nbsp;include&nbsp;language&nbsp;(including&nbsp;geographical-based&nbsp;differences),&nbsp;and&nbsp;character&nbsp;code&nbsp;set.<br>This&nbsp;naming&nbsp;of&nbsp;language&nbsp;subdirectories&nbsp;of&nbsp;/usr/share/man&nbsp;is&nbsp;based&nbsp;on&nbsp;Appendix&nbsp;E&nbsp;of&nbsp;the&nbsp;POSIX&nbsp;1003.1&nbsp;standard&nbsp;which&nbsp;describes&nbsp;the&nbsp;locale&nbsp;identification&nbsp;string&nbsp;—&nbsp;the&nbsp;most&nbsp;well-accepted&nbsp;method&nbsp;to&nbsp;describe&nbsp;a&nbsp;cultural&nbsp;environment.&nbsp;The&nbsp;&nbsp;string&nbsp;is:<br>[_][.][,]<br>The&nbsp;&nbsp;field&nbsp;must&nbsp;be&nbsp;taken&nbsp;from&nbsp;ISO&nbsp;639&nbsp;(a&nbsp;code&nbsp;for&nbsp;the&nbsp;representation&nbsp;of&nbsp;names&nbsp;of&nbsp;languages).&nbsp;It&nbsp;must&nbsp;be&nbsp;two&nbsp;characters&nbsp;wide&nbsp;and&nbsp;specified&nbsp;with&nbsp;lowercase&nbsp;letters&nbsp;only.<br>The&nbsp;&nbsp;field&nbsp;must&nbsp;be&nbsp;the&nbsp;two-letter&nbsp;code&nbsp;of&nbsp;ISO&nbsp;3166&nbsp;(a&nbsp;specification&nbsp;of&nbsp;representations&nbsp;of&nbsp;countries),&nbsp;if&nbsp;possible.&nbsp;(Most&nbsp;people&nbsp;are&nbsp;familiar&nbsp;with&nbsp;the&nbsp;two-letter&nbsp;codes&nbsp;used&nbsp;for&nbsp;the&nbsp;country&nbsp;codes&nbsp;in&nbsp;email&nbsp;addresses.)&nbsp;It&nbsp;must&nbsp;be&nbsp;two&nbsp;characters&nbsp;wide&nbsp;and&nbsp;specified&nbsp;with&nbsp;uppercase&nbsp;letters&nbsp;only.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1797">[33]</a><br>The&nbsp;&nbsp;field&nbsp;must&nbsp;represent&nbsp;the&nbsp;standard&nbsp;describing&nbsp;the&nbsp;character&nbsp;set.&nbsp;If&nbsp;the&nbsp;&amp;shy;&nbsp;field&nbsp;is&nbsp;just&nbsp;a&nbsp;numeric&nbsp;specification,&nbsp;the&nbsp;number&nbsp;represents&nbsp;the&nbsp;number&nbsp;of&nbsp;the&nbsp;international&nbsp;standard&nbsp;describing&nbsp;the&nbsp;character&nbsp;set.&nbsp;It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;this&nbsp;be&nbsp;a&nbsp;numeric&nbsp;representation&nbsp;if&nbsp;possible&nbsp;(ISO&nbsp;standards,&nbsp;especially),&nbsp;not&nbsp;include&nbsp;additional&nbsp;punctuation&nbsp;symbols,&nbsp;and&nbsp;that&nbsp;any&nbsp;letters&nbsp;be&nbsp;in&nbsp;lowercase.<br>A&nbsp;parameter&nbsp;specifying&nbsp;a&nbsp;&nbsp;of&nbsp;the&nbsp;profile&nbsp;may&nbsp;be&nbsp;placed&nbsp;after&nbsp;the&nbsp;&amp;shy;&nbsp;field,&nbsp;delimited&nbsp;by&nbsp;a&nbsp;comma.&nbsp;This&nbsp;may&nbsp;be&nbsp;used&nbsp;to&nbsp;discriminate&nbsp;between&nbsp;different&nbsp;cultural&nbsp;needs;&nbsp;for&nbsp;instance,&nbsp;dictionary&nbsp;order&nbsp;versus&nbsp;a&nbsp;more&nbsp;systems-oriented&nbsp;collating&nbsp;order.&nbsp;This&nbsp;standard&nbsp;recommends&nbsp;not&nbsp;using&nbsp;the&nbsp;&nbsp;field,&nbsp;unless&nbsp;it&nbsp;is&nbsp;necessary.<br>Systems&nbsp;which&nbsp;use&nbsp;a&nbsp;unique&nbsp;language&nbsp;and&nbsp;code&nbsp;set&nbsp;for&nbsp;all&nbsp;manual&nbsp;pages&nbsp;may&nbsp;omit&nbsp;the&nbsp;&nbsp;substring&nbsp;and&nbsp;store&nbsp;all&nbsp;manual&nbsp;pages&nbsp;in&nbsp;.&nbsp;For&nbsp;example,&nbsp;systems&nbsp;which&nbsp;only&nbsp;have&nbsp;English&nbsp;manual&nbsp;pages&nbsp;coded&nbsp;with&nbsp;ASCII,&nbsp;may&nbsp;store&nbsp;manual&nbsp;pages&nbsp;(the&nbsp;man&nbsp;directories)&nbsp;directly&nbsp;in&nbsp;/usr/share/man.&nbsp;(That&nbsp;is&nbsp;the&nbsp;traditional&nbsp;circumstance&nbsp;and&nbsp;arrangement,&nbsp;in&nbsp;fact.)<br>Countries&nbsp;for&nbsp;which&nbsp;there&nbsp;is&nbsp;a&nbsp;well-accepted&nbsp;standard&nbsp;character&nbsp;code&nbsp;set&nbsp;may&nbsp;omit&nbsp;the&nbsp;&amp;shy;&nbsp;field,&nbsp;but&nbsp;it&nbsp;is&nbsp;strongly&nbsp;recommended&nbsp;that&nbsp;it&nbsp;be&nbsp;included,&nbsp;especially&nbsp;for&nbsp;countries&nbsp;with&nbsp;several&nbsp;competing&nbsp;standards.<br>Various&nbsp;examples:<br>Language<br>Territory<br>Character&nbsp;Set<br>Directory<br>English<br>—<br>ASCII<br>/usr/share/man/en<br>English<br>United&nbsp;Kingdom<br>ISO&nbsp;8859-15<br>/usr/share/man/en_GB<br>English<br>United&nbsp;States<br>ASCII<br>/usr/share/man/en_US<br>French<br>Canada<br>ISO&nbsp;8859-1<br>/usr/share/man/fr_CA<br>French<br>France<br>ISO&nbsp;8859-1<br>/usr/share/man/fr_FR<br>German<br>Germany<br>ISO&nbsp;646<br>/usr/share/man/de_DE.646<br>German<br>Germany<br>ISO&nbsp;6937<br>/usr/share/man/de_DE.6937<br>German<br>Germany<br>ISO&nbsp;8859-1<br>/usr/share/man/de_DE.88591<br>German<br>Switzerland<br>ISO&nbsp;646<br>/usr/share/man/de_CH.646<br>Japanese<br>Japan<br>JIS<br>/usr/share/man/ja_JP.jis<br>Japanese<br>Japan<br>SJIS<br>/usr/share/man/ja_JP.sjis<br>Japanese<br>Japan<br>UJIS&nbsp;(or&nbsp;EUC-J)<br>/usr/share/man/ja_JP.ujis<br>Similarly,&nbsp;provision&nbsp;must&nbsp;be&nbsp;made&nbsp;for&nbsp;manual&nbsp;pages&nbsp;which&nbsp;are&nbsp;architecture-dependent,&nbsp;such&nbsp;as&nbsp;documentation&nbsp;on&nbsp;device-drivers&nbsp;or&nbsp;low-level&nbsp;system&nbsp;administration&nbsp;commands.&nbsp;These&nbsp;must&nbsp;be&nbsp;placed&nbsp;under&nbsp;an&nbsp;&nbsp;directory&nbsp;in&nbsp;the&nbsp;appropriate&nbsp;man&nbsp;directory;&nbsp;for&nbsp;example,&nbsp;a&nbsp;man&nbsp;page&nbsp;for&nbsp;the&nbsp;i386&nbsp;ctrlaltdel(8)&nbsp;command&nbsp;might&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/share/man//man8/i386/ctrlaltdel.8.<br>Manual&nbsp;pages&nbsp;for&nbsp;commands&nbsp;and&nbsp;data&nbsp;under&nbsp;/usr/local&nbsp;are&nbsp;stored&nbsp;in&nbsp;/usr/local/man.&nbsp;Manual&nbsp;pages&nbsp;for&nbsp;X11R6&nbsp;are&nbsp;stored&nbsp;in&nbsp;/usr/X11R6/man.&nbsp;It&nbsp;follows&nbsp;that&nbsp;all&nbsp;manual&nbsp;page&nbsp;hierarchies&nbsp;in&nbsp;the&nbsp;system&nbsp;must&nbsp;have&nbsp;the&nbsp;same&nbsp;structure&nbsp;as&nbsp;/usr/share/man.<br>The&nbsp;cat&nbsp;page&nbsp;sections&nbsp;(cat)&nbsp;containing&nbsp;formatted&nbsp;manual&nbsp;page&nbsp;entries&nbsp;are&nbsp;also&nbsp;found&nbsp;within&nbsp;subdirectories&nbsp;of&nbsp;/,&nbsp;but&nbsp;are&nbsp;not&nbsp;required&nbsp;nor&nbsp;may&nbsp;they&nbsp;be&nbsp;distributed&nbsp;in&nbsp;lieu&nbsp;of&nbsp;nroff&nbsp;source&nbsp;manual&nbsp;pages.<br>The&nbsp;numbered&nbsp;sections&nbsp;&quot;1&quot;&nbsp;through&nbsp;&quot;8&quot;&nbsp;are&nbsp;traditionally&nbsp;defined.&nbsp;In&nbsp;general,&nbsp;the&nbsp;file&nbsp;name&nbsp;for&nbsp;manual&nbsp;pages&nbsp;located&nbsp;within&nbsp;a&nbsp;particular&nbsp;section&nbsp;end&nbsp;with&nbsp;..<br>In&nbsp;addition,&nbsp;some&nbsp;large&nbsp;sets&nbsp;of&nbsp;application-specific&nbsp;manual&nbsp;pages&nbsp;have&nbsp;an&nbsp;additional&nbsp;suffix&nbsp;appended&nbsp;to&nbsp;the&nbsp;manual&nbsp;page&nbsp;filename.&nbsp;For&nbsp;example,&nbsp;the&nbsp;MH&nbsp;mail&nbsp;handling&nbsp;system&nbsp;manual&nbsp;pages&nbsp;must&nbsp;have&nbsp;mh&nbsp;appended&nbsp;to&nbsp;all&nbsp;MH&nbsp;manuals.&nbsp;All&nbsp;X&nbsp;Window&nbsp;System&nbsp;manual&nbsp;pages&nbsp;must&nbsp;have&nbsp;an&nbsp;x&nbsp;appended&nbsp;to&nbsp;the&nbsp;filename.<br>The&nbsp;practice&nbsp;of&nbsp;placing&nbsp;various&nbsp;language&nbsp;manual&nbsp;pages&nbsp;in&nbsp;appropriate&nbsp;subdirectories&nbsp;of&nbsp;/usr/share/man&nbsp;also&nbsp;applies&nbsp;to&nbsp;the&nbsp;other&nbsp;manual&nbsp;page&nbsp;hierarchies,&nbsp;such&nbsp;as&nbsp;/usr/local/man&nbsp;and&nbsp;/usr/X11R6/man.&nbsp;(This&nbsp;portion&nbsp;of&nbsp;the&nbsp;standard&nbsp;also&nbsp;applies&nbsp;later&nbsp;in&nbsp;the&nbsp;section&nbsp;on&nbsp;the&nbsp;optional&nbsp;/var/cache/man&nbsp;structure.)<br>/usr/share/misc&nbsp;:&nbsp;Miscellaneous&nbsp;architecture-independent&nbsp;data<br>This&nbsp;directory&nbsp;contains&nbsp;miscellaneous&nbsp;architecture-independent&nbsp;files&nbsp;which&nbsp;don&#39;t&nbsp;require&nbsp;a&nbsp;separate&nbsp;subdirectory&nbsp;under&nbsp;/usr/share.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share/misc,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>File<br>Description<br>ascii<br>ASCII&nbsp;character&nbsp;set&nbsp;table&nbsp;(optional)<br>magic<br>Default&nbsp;list&nbsp;of&nbsp;magic&nbsp;numbers&nbsp;for&nbsp;the&nbsp;file&nbsp;command&nbsp;(optional)<br>termcap<br>Terminal&nbsp;capability&nbsp;database&nbsp;(optional)<br>termcap.db<br>Terminal&nbsp;capability&nbsp;database&nbsp;(optional)<br>Other&nbsp;(application-specific)&nbsp;files&nbsp;may&nbsp;appear&nbsp;here,&nbsp;but&nbsp;a&nbsp;distributor&nbsp;may&nbsp;place&nbsp;them&nbsp;in&nbsp;/usr/lib&nbsp;at&nbsp;their&nbsp;discretion.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1944">[34]</a><br>/usr/share/sgml&nbsp;:&nbsp;SGML&nbsp;data&nbsp;(optional)<br>Purpose<br>/usr/share/sgml&nbsp;contains&nbsp;architecture-independent&nbsp;files&nbsp;used&nbsp;by&nbsp;SGML&nbsp;applications,&nbsp;such&nbsp;as&nbsp;ordinary&nbsp;catalogs&nbsp;(not&nbsp;the&nbsp;centralized&nbsp;ones,&nbsp;see&nbsp;/etc/sgml),&nbsp;DTDs,&nbsp;entities,&nbsp;or&nbsp;style&nbsp;sheets.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share/sgml,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>docbook<br>docbook&nbsp;DTD&nbsp;(optional)<br>tei<br>tei&nbsp;DTD&nbsp;(optional)<br>html<br>html&nbsp;DTD&nbsp;(optional)<br>mathml<br>mathml&nbsp;DTD&nbsp;(optional)<br>Other&nbsp;files&nbsp;that&nbsp;are&nbsp;not&nbsp;specific&nbsp;to&nbsp;a&nbsp;given&nbsp;DTD&nbsp;may&nbsp;reside&nbsp;in&nbsp;their&nbsp;own&nbsp;subdirectory.<br>/usr/share/xml&nbsp;:&nbsp;XML&nbsp;data&nbsp;(optional)<br>Purpose<br>/usr/share/xml&nbsp;contains&nbsp;architecture-independent&nbsp;files&nbsp;used&nbsp;by&nbsp;XML&nbsp;applications,&nbsp;such&nbsp;as&nbsp;ordinary&nbsp;catalogs&nbsp;(not&nbsp;the&nbsp;centralized&nbsp;ones,&nbsp;see&nbsp;/etc/sgml),&nbsp;DTDs,&nbsp;entities,&nbsp;or&nbsp;style&nbsp;sheets.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/usr/share/xml,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>docbook<br>docbook&nbsp;XML&nbsp;DTD&nbsp;(optional)<br>xhtml<br>XHTML&nbsp;DTD&nbsp;(optional)<br>mathml<br>MathML&nbsp;DTD&nbsp;(optional)<br>/usr/src&nbsp;:&nbsp;Source&nbsp;code&nbsp;(optional)<br>Purpose<br>Source&nbsp;code&nbsp;may&nbsp;be&nbsp;place&nbsp;placed&nbsp;in&nbsp;this&nbsp;subdirectory,&nbsp;only&nbsp;for&nbsp;reference&nbsp;purposes.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2042">[35]</a><br>Chapter&nbsp;5.&nbsp;The&nbsp;/var&nbsp;Hierarchy<br>Purpose<br>/var&nbsp;contains&nbsp;variable&nbsp;data&nbsp;files.&nbsp;This&nbsp;includes&nbsp;spool&nbsp;directories&nbsp;and&nbsp;files,&nbsp;administrative&nbsp;and&nbsp;logging&nbsp;data,&nbsp;and&nbsp;transient&nbsp;and&nbsp;temporary&nbsp;files.<br>Some&nbsp;portions&nbsp;of&nbsp;/var&nbsp;are&nbsp;not&nbsp;shareable&nbsp;between&nbsp;different&nbsp;systems.&nbsp;For&nbsp;instance,&nbsp;/var/log,&nbsp;/var/lock,&nbsp;and&nbsp;/var/run.&nbsp;Other&nbsp;portions&nbsp;may&nbsp;be&nbsp;shared,&nbsp;notably&nbsp;/var/mail,&nbsp;/var/cache/man,&nbsp;/var/cache/fonts,&nbsp;and&nbsp;/var/spool/news.<br>/var&nbsp;is&nbsp;specified&nbsp;here&nbsp;in&nbsp;order&nbsp;to&nbsp;make&nbsp;it&nbsp;possible&nbsp;to&nbsp;mount&nbsp;/usr&nbsp;read-only.&nbsp;Everything&nbsp;that&nbsp;once&nbsp;went&nbsp;into&nbsp;/usr&nbsp;that&nbsp;is&nbsp;written&nbsp;to&nbsp;during&nbsp;system&nbsp;operation&nbsp;(as&nbsp;opposed&nbsp;to&nbsp;installation&nbsp;and&nbsp;software&nbsp;maintenance)&nbsp;must&nbsp;be&nbsp;in&nbsp;/var.<br>If&nbsp;/var&nbsp;cannot&nbsp;be&nbsp;made&nbsp;a&nbsp;separate&nbsp;partition,&nbsp;it&nbsp;is&nbsp;often&nbsp;preferable&nbsp;to&nbsp;move&nbsp;/var&nbsp;out&nbsp;of&nbsp;the&nbsp;root&nbsp;partition&nbsp;and&nbsp;into&nbsp;the&nbsp;/usr&nbsp;partition.&nbsp;(This&nbsp;is&nbsp;sometimes&nbsp;done&nbsp;to&nbsp;reduce&nbsp;the&nbsp;size&nbsp;of&nbsp;the&nbsp;root&nbsp;partition&nbsp;or&nbsp;when&nbsp;space&nbsp;runs&nbsp;low&nbsp;in&nbsp;the&nbsp;root&nbsp;partition.)&nbsp;However,&nbsp;/var&nbsp;must&nbsp;not&nbsp;be&nbsp;linked&nbsp;to&nbsp;/usr&nbsp;because&nbsp;this&nbsp;makes&nbsp;separation&nbsp;of&nbsp;/usr&nbsp;and&nbsp;/var&nbsp;more&nbsp;difficult&nbsp;and&nbsp;is&nbsp;likely&nbsp;to&nbsp;create&nbsp;a&nbsp;naming&nbsp;conflict.&nbsp;Instead,&nbsp;link&nbsp;/var&nbsp;to&nbsp;/usr/var.<br>Applications&nbsp;must&nbsp;generally&nbsp;not&nbsp;add&nbsp;directories&nbsp;to&nbsp;the&nbsp;top&nbsp;level&nbsp;of&nbsp;/var.&nbsp;Such&nbsp;directories&nbsp;should&nbsp;only&nbsp;be&nbsp;added&nbsp;if&nbsp;they&nbsp;have&nbsp;some&nbsp;system-wide&nbsp;implication,&nbsp;and&nbsp;in&nbsp;consultation&nbsp;with&nbsp;the&nbsp;FHS&nbsp;mailing&nbsp;list.<br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;are&nbsp;required&nbsp;in&nbsp;/var.<br>Directory<br>Description<br>cache<br>Application&nbsp;cache&nbsp;data<br>lib<br>Variable&nbsp;state&nbsp;information<br>local<br>Variable&nbsp;data&nbsp;for&nbsp;/usr/local<br>lock<br>Lock&nbsp;files<br>log<br>Log&nbsp;files&nbsp;and&nbsp;directories<br>opt<br>Variable&nbsp;data&nbsp;for&nbsp;/opt<br>run<br>Data&nbsp;relevant&nbsp;to&nbsp;running&nbsp;processes<br>spool<br>Application&nbsp;spool&nbsp;data<br>tmp<br>Temporary&nbsp;files&nbsp;preserved&nbsp;between&nbsp;system&nbsp;reboots<br>Several&nbsp;directories&nbsp;are&nbsp;`reserved&#39;&nbsp;in&nbsp;the&nbsp;sense&nbsp;that&nbsp;they&nbsp;must&nbsp;not&nbsp;be&nbsp;used&nbsp;arbitrarily&nbsp;by&nbsp;some&nbsp;new&nbsp;application,&nbsp;since&nbsp;they&nbsp;would&nbsp;conflict&nbsp;with&nbsp;historical&nbsp;and/or&nbsp;local&nbsp;practice.&nbsp;They&nbsp;are:<br>&nbsp;&nbsp;&nbsp;&nbsp;/var/backups<br>&nbsp;&nbsp;&nbsp;&nbsp;/var/cron<br>&nbsp;&nbsp;&nbsp;&nbsp;/var/msgs<br>&nbsp;&nbsp;&nbsp;&nbsp;/var/preserve<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/var,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>account<br>Process&nbsp;accounting&nbsp;logs&nbsp;(optional)<br>crash<br>System&nbsp;crash&nbsp;dumps&nbsp;(optional)<br>games<br>Variable&nbsp;game&nbsp;data&nbsp;(optional)<br>mail<br>User&nbsp;mailbox&nbsp;files&nbsp;(optional)<br>yp<br>Network&nbsp;Information&nbsp;Service&nbsp;(NIS)&nbsp;database&nbsp;files&nbsp;(optional)&nbsp;<br>/var/account&nbsp;:&nbsp;Process&nbsp;accounting&nbsp;logs&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;holds&nbsp;the&nbsp;current&nbsp;active&nbsp;process&nbsp;accounting&nbsp;log&nbsp;and&nbsp;the&nbsp;composite&nbsp;process&nbsp;usage&nbsp;data&nbsp;(as&nbsp;used&nbsp;in&nbsp;some&nbsp;UNIX-like&nbsp;systems&nbsp;by&nbsp;lastcomm[/b]&nbsp;and&nbsp;sa[/b]).<br>/var/cache&nbsp;:&nbsp;Application&nbsp;cache&nbsp;data<br>Purpose<br>/var/cache&nbsp;is&nbsp;intended&nbsp;for&nbsp;cached&nbsp;data&nbsp;from&nbsp;applications.&nbsp;Such&nbsp;data&nbsp;is&nbsp;locally&nbsp;generated&nbsp;as&nbsp;a&nbsp;result&nbsp;of&nbsp;time-consuming&nbsp;I/O&nbsp;or&nbsp;calculation.&nbsp;The&nbsp;application&nbsp;must&nbsp;be&nbsp;able&nbsp;to&nbsp;regenerate&nbsp;or&nbsp;restore&nbsp;the&nbsp;data.&nbsp;Unlike&nbsp;/var/spool,&nbsp;the&nbsp;cached&nbsp;files&nbsp;can&nbsp;be&nbsp;deleted&nbsp;without&nbsp;data&nbsp;loss.&nbsp;The&nbsp;data&nbsp;must&nbsp;remain&nbsp;valid&nbsp;between&nbsp;invocations&nbsp;of&nbsp;the&nbsp;application&nbsp;and&nbsp;rebooting&nbsp;the&nbsp;system.<br>Files&nbsp;located&nbsp;under&nbsp;/var/cache&nbsp;may&nbsp;be&nbsp;expired&nbsp;in&nbsp;an&nbsp;application&nbsp;specific&nbsp;manner,&nbsp;by&nbsp;the&nbsp;system&nbsp;administrator,&nbsp;or&nbsp;both.&nbsp;The&nbsp;application&nbsp;must&nbsp;always&nbsp;be&nbsp;able&nbsp;to&nbsp;recover&nbsp;from&nbsp;manual&nbsp;deletion&nbsp;of&nbsp;these&nbsp;files&nbsp;(generally&nbsp;because&nbsp;of&nbsp;a&nbsp;disk&nbsp;space&nbsp;shortage).&nbsp;No&nbsp;other&nbsp;requirements&nbsp;are&nbsp;made&nbsp;on&nbsp;the&nbsp;data&nbsp;format&nbsp;of&nbsp;the&nbsp;cache&nbsp;directories.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;existence&nbsp;of&nbsp;a&nbsp;separate&nbsp;directory&nbsp;for&nbsp;cached&nbsp;data&nbsp;allows&nbsp;system&nbsp;administrators&nbsp;to&nbsp;set&nbsp;different&nbsp;disk&nbsp;and&nbsp;backup&nbsp;policies&nbsp;from&nbsp;other&nbsp;directories&nbsp;in&nbsp;/var.&nbsp;<br>Specific&nbsp;Options<br>Directory<br>Description<br>fonts<br>Locally-generated&nbsp;fonts&nbsp;(optional)<br>man<br>Locally-formatted&nbsp;manual&nbsp;pages&nbsp;(optional)<br>www<br>WWW&nbsp;proxy&nbsp;or&nbsp;cache&nbsp;data&nbsp;(optional)<br>Package&nbsp;specific&nbsp;cache&nbsp;data&nbsp;(optional)<br>/var/cache/fonts&nbsp;:&nbsp;Locally-generated&nbsp;fonts&nbsp;(optional)<br>Purpose<br>The&nbsp;directory&nbsp;/var/cache/fonts&nbsp;should&nbsp;be&nbsp;used&nbsp;to&nbsp;store&nbsp;any&nbsp;dynamically-created&nbsp;fonts.&nbsp;In&nbsp;particular,&nbsp;all&nbsp;of&nbsp;the&nbsp;fonts&nbsp;which&nbsp;are&nbsp;automatically&nbsp;generated&nbsp;by&nbsp;mktexpk[/b]&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;appropriately-named&nbsp;subdirectories&nbsp;of&nbsp;/var/cache/fonts.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2209">[36]</a><br>Specific&nbsp;Options<br>Other&nbsp;dynamically&nbsp;created&nbsp;fonts&nbsp;may&nbsp;also&nbsp;be&nbsp;placed&nbsp;in&nbsp;this&nbsp;tree,&nbsp;under&nbsp;appropriately-named&nbsp;subdirectories&nbsp;of&nbsp;/var/cache/fonts.<br>/var/cache/man&nbsp;:&nbsp;Locally-formatted&nbsp;manual&nbsp;pages&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;provides&nbsp;a&nbsp;standard&nbsp;location&nbsp;for&nbsp;sites&nbsp;that&nbsp;provide&nbsp;a&nbsp;read-only&nbsp;/usr&nbsp;partition,&nbsp;but&nbsp;wish&nbsp;to&nbsp;allow&nbsp;caching&nbsp;of&nbsp;locally-formatted&nbsp;man&nbsp;pages.&nbsp;Sites&nbsp;that&nbsp;mount&nbsp;/usr&nbsp;as&nbsp;writable&nbsp;(e.g.,&nbsp;single-user&nbsp;installations)&nbsp;may&nbsp;choose&nbsp;not&nbsp;to&nbsp;use&nbsp;/var/cache/man&nbsp;and&nbsp;may&nbsp;write&nbsp;formatted&nbsp;man&nbsp;pages&nbsp;into&nbsp;the&nbsp;cat&nbsp;directories&nbsp;in&nbsp;/usr/share/man&nbsp;directly.&nbsp;We&nbsp;recommend&nbsp;that&nbsp;most&nbsp;sites&nbsp;use&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;options&nbsp;instead:<br>Preformat&nbsp;all&nbsp;manual&nbsp;pages&nbsp;alongside&nbsp;the&nbsp;unformatted&nbsp;versions.<br>Allow&nbsp;no&nbsp;caching&nbsp;of&nbsp;formatted&nbsp;man&nbsp;pages,&nbsp;and&nbsp;require&nbsp;formatting&nbsp;to&nbsp;be&nbsp;done&nbsp;each&nbsp;time&nbsp;a&nbsp;man&nbsp;page&nbsp;is&nbsp;brought&nbsp;up.<br>Allow&nbsp;local&nbsp;caching&nbsp;of&nbsp;formatted&nbsp;man&nbsp;pages&nbsp;in&nbsp;/var/cache/man.<br>The&nbsp;structure&nbsp;of&nbsp;/var/cache/man&nbsp;needs&nbsp;to&nbsp;reflect&nbsp;both&nbsp;the&nbsp;fact&nbsp;of&nbsp;multiple&nbsp;man&nbsp;page&nbsp;hierarchies&nbsp;and&nbsp;the&nbsp;possibility&nbsp;of&nbsp;multiple&nbsp;language&nbsp;support.<br>Given&nbsp;an&nbsp;unformatted&nbsp;manual&nbsp;page&nbsp;that&nbsp;normally&nbsp;appears&nbsp;in&nbsp;/man//man,&nbsp;the&nbsp;directory&nbsp;to&nbsp;place&nbsp;formatted&nbsp;man&nbsp;pages&nbsp;in&nbsp;is&nbsp;/var/cache/man///cat,&nbsp;where&nbsp;&nbsp;is&nbsp;derived&nbsp;from&nbsp;&nbsp;by&nbsp;removing&nbsp;any&nbsp;leading&nbsp;usr&nbsp;and/or&nbsp;trailing&nbsp;share&nbsp;pathname&nbsp;components.&nbsp;(Note&nbsp;that&nbsp;the&nbsp;&nbsp;component&nbsp;may&nbsp;be&nbsp;missing.)&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2244">[37]</a><br>Man&nbsp;pages&nbsp;written&nbsp;to&nbsp;/var/cache/man&nbsp;may&nbsp;eventually&nbsp;be&nbsp;transferred&nbsp;to&nbsp;the&nbsp;appropriate&nbsp;preformatted&nbsp;directories&nbsp;in&nbsp;the&nbsp;source&nbsp;man&nbsp;hierarchy&nbsp;or&nbsp;expired;&nbsp;likewise&nbsp;formatted&nbsp;man&nbsp;pages&nbsp;in&nbsp;the&nbsp;source&nbsp;man&nbsp;hierarchy&nbsp;may&nbsp;be&nbsp;expired&nbsp;if&nbsp;they&nbsp;are&nbsp;not&nbsp;accessed&nbsp;for&nbsp;a&nbsp;period&nbsp;of&nbsp;time.<br>If&nbsp;preformatted&nbsp;manual&nbsp;pages&nbsp;come&nbsp;with&nbsp;a&nbsp;system&nbsp;on&nbsp;read-only&nbsp;media&nbsp;(a&nbsp;CD-ROM,&nbsp;for&nbsp;instance),&nbsp;they&nbsp;must&nbsp;be&nbsp;installed&nbsp;in&nbsp;the&nbsp;source&nbsp;man&nbsp;hierarchy&nbsp;(e.g.&nbsp;/usr/share/man/cat).&nbsp;/var/cache/man&nbsp;is&nbsp;reserved&nbsp;as&nbsp;a&nbsp;writable&nbsp;cache&nbsp;for&nbsp;formatted&nbsp;manual&nbsp;pages.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Release&nbsp;1.2&nbsp;of&nbsp;the&nbsp;standard&nbsp;specified&nbsp;/var/catman&nbsp;for&nbsp;this&nbsp;hierarchy.&nbsp;The&nbsp;path&nbsp;has&nbsp;been&nbsp;moved&nbsp;under&nbsp;/var/cache&nbsp;to&nbsp;better&nbsp;reflect&nbsp;the&nbsp;dynamic&nbsp;nature&nbsp;of&nbsp;the&nbsp;formatted&nbsp;man&nbsp;pages.&nbsp;The&nbsp;directory&nbsp;name&nbsp;has&nbsp;been&nbsp;changed&nbsp;to&nbsp;man&nbsp;to&nbsp;allow&nbsp;for&nbsp;enhancing&nbsp;the&nbsp;hierarchy&nbsp;to&nbsp;include&nbsp;post-processed&nbsp;formats&nbsp;other&nbsp;than&nbsp;&quot;cat&quot;,&nbsp;such&nbsp;as&nbsp;PostScript,&nbsp;HTML,&nbsp;or&nbsp;DVI.&nbsp;<br>/var/crash&nbsp;:&nbsp;System&nbsp;crash&nbsp;dumps&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;holds&nbsp;system&nbsp;crash&nbsp;dumps.&nbsp;As&nbsp;of&nbsp;the&nbsp;date&nbsp;of&nbsp;this&nbsp;release&nbsp;of&nbsp;the&nbsp;standard,&nbsp;system&nbsp;crash&nbsp;dumps&nbsp;were&nbsp;not&nbsp;supported&nbsp;under&nbsp;Linux&nbsp;but&nbsp;may&nbsp;be&nbsp;supported&nbsp;by&nbsp;other&nbsp;systems&nbsp;which&nbsp;may&nbsp;comply&nbsp;with&nbsp;the&nbsp;FHS.<br>/var/games&nbsp;:&nbsp;Variable&nbsp;game&nbsp;data&nbsp;(optional)<br>Purpose<br>Any&nbsp;variable&nbsp;data&nbsp;relating&nbsp;to&nbsp;games&nbsp;in&nbsp;/usr&nbsp;should&nbsp;be&nbsp;placed&nbsp;here.&nbsp;/var/games&nbsp;should&nbsp;hold&nbsp;the&nbsp;variable&nbsp;data&nbsp;previously&nbsp;found&nbsp;in&nbsp;/usr;&nbsp;static&nbsp;data,&nbsp;such&nbsp;as&nbsp;help&nbsp;text,&nbsp;level&nbsp;descriptions,&nbsp;and&nbsp;so&nbsp;on,&nbsp;must&nbsp;remain&nbsp;elsewhere,&nbsp;such&nbsp;as&nbsp;/usr/share/games.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>/var/games&nbsp;has&nbsp;been&nbsp;given&nbsp;a&nbsp;hierarchy&nbsp;of&nbsp;its&nbsp;own,&nbsp;rather&nbsp;than&nbsp;leaving&nbsp;it&nbsp;merged&nbsp;in&nbsp;with&nbsp;the&nbsp;old&nbsp;/var/lib&nbsp;as&nbsp;in&nbsp;release&nbsp;1.2.&nbsp;The&nbsp;separation&nbsp;allows&nbsp;local&nbsp;control&nbsp;of&nbsp;backup&nbsp;strategies,&nbsp;permissions,&nbsp;and&nbsp;disk&nbsp;usage,&nbsp;as&nbsp;well&nbsp;as&nbsp;allowing&nbsp;inter-host&nbsp;sharing&nbsp;and&nbsp;reducing&nbsp;clutter&nbsp;in&nbsp;/var/lib.&nbsp;Additionally,&nbsp;/var/games&nbsp;is&nbsp;the&nbsp;path&nbsp;traditionally&nbsp;used&nbsp;by&nbsp;BSD.&nbsp;<br>/var/lib&nbsp;:&nbsp;Variable&nbsp;state&nbsp;information<br>Purpose<br>This&nbsp;hierarchy&nbsp;holds&nbsp;state&nbsp;information&nbsp;pertaining&nbsp;to&nbsp;an&nbsp;application&nbsp;or&nbsp;the&nbsp;system.&nbsp;State&nbsp;information&nbsp;is&nbsp;data&nbsp;that&nbsp;programs&nbsp;modify&nbsp;while&nbsp;they&nbsp;run,&nbsp;and&nbsp;that&nbsp;pertains&nbsp;to&nbsp;one&nbsp;specific&nbsp;host.&nbsp;Users&nbsp;must&nbsp;never&nbsp;need&nbsp;to&nbsp;modify&nbsp;files&nbsp;in&nbsp;/var/lib&nbsp;to&nbsp;configure&nbsp;a&nbsp;package&#39;s&nbsp;operation.<br>State&nbsp;information&nbsp;is&nbsp;generally&nbsp;used&nbsp;to&nbsp;preserve&nbsp;the&nbsp;condition&nbsp;of&nbsp;an&nbsp;application&nbsp;(or&nbsp;a&nbsp;group&nbsp;of&nbsp;inter-related&nbsp;applications)&nbsp;between&nbsp;invocations&nbsp;and&nbsp;between&nbsp;different&nbsp;instances&nbsp;of&nbsp;the&nbsp;same&nbsp;application.&nbsp;State&nbsp;information&nbsp;should&nbsp;generally&nbsp;remain&nbsp;valid&nbsp;after&nbsp;a&nbsp;reboot,&nbsp;should&nbsp;not&nbsp;be&nbsp;logging&nbsp;output,&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;spooled&nbsp;data.<br>An&nbsp;application&nbsp;(or&nbsp;a&nbsp;group&nbsp;of&nbsp;inter-related&nbsp;applications)&nbsp;must&nbsp;use&nbsp;a&nbsp;subdirectory&nbsp;of&nbsp;/var/lib&nbsp;for&nbsp;its&nbsp;data.&nbsp;There&nbsp;is&nbsp;one&nbsp;required&nbsp;subdirectory,&nbsp;/var/lib/misc,&nbsp;which&nbsp;is&nbsp;intended&nbsp;for&nbsp;state&nbsp;files&nbsp;that&nbsp;don&#39;t&nbsp;need&nbsp;a&nbsp;subdirectory;&nbsp;the&nbsp;other&nbsp;subdirectories&nbsp;should&nbsp;only&nbsp;be&nbsp;present&nbsp;if&nbsp;the&nbsp;application&nbsp;in&nbsp;question&nbsp;is&nbsp;included&nbsp;in&nbsp;the&nbsp;distribution.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2295">[38]</a><br>/var/lib/&nbsp;is&nbsp;the&nbsp;location&nbsp;that&nbsp;must&nbsp;be&nbsp;used&nbsp;for&nbsp;all&nbsp;distribution&nbsp;packaging&nbsp;support.&nbsp;Different&nbsp;distributions&nbsp;may&nbsp;use&nbsp;different&nbsp;names,&nbsp;of&nbsp;course.<br>Requirements<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;are&nbsp;required&nbsp;in&nbsp;/var/lib:<br>Directory<br>Description<br>misc<br>Miscellaneous&nbsp;state&nbsp;data<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/var/lib,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>Editor&nbsp;backup&nbsp;files&nbsp;and&nbsp;state&nbsp;(optional)<br>Packaging&nbsp;support&nbsp;files&nbsp;(optional)<br>State&nbsp;data&nbsp;for&nbsp;packages&nbsp;and&nbsp;subsystems&nbsp;(optional)<br>hwclock[/b]<br>State&nbsp;directory&nbsp;for&nbsp;hwclock&nbsp;(optional)<br>xdm[/b]<br>X&nbsp;display&nbsp;manager&nbsp;variable&nbsp;data&nbsp;(optional)<br>/var/lib/&nbsp;:&nbsp;Editor&nbsp;backup&nbsp;files&nbsp;and&nbsp;state&nbsp;(optional)<br>Purpose<br>These&nbsp;directories&nbsp;contain&nbsp;saved&nbsp;files&nbsp;generated&nbsp;by&nbsp;any&nbsp;unexpected&nbsp;termination&nbsp;of&nbsp;an&nbsp;editor&nbsp;(e.g.,&nbsp;elvis[/b],&nbsp;jove[/b],&nbsp;nvi[/b]).<br>Other&nbsp;editors&nbsp;may&nbsp;not&nbsp;require&nbsp;a&nbsp;directory&nbsp;for&nbsp;crash-recovery&nbsp;files,&nbsp;but&nbsp;may&nbsp;require&nbsp;a&nbsp;well-defined&nbsp;place&nbsp;to&nbsp;store&nbsp;other&nbsp;information&nbsp;while&nbsp;the&nbsp;editor&nbsp;is&nbsp;running.&nbsp;This&nbsp;information&nbsp;should&nbsp;be&nbsp;stored&nbsp;in&nbsp;a&nbsp;subdirectory&nbsp;under&nbsp;/var/lib&nbsp;(for&nbsp;example,&nbsp;GNU&nbsp;Emacs&nbsp;would&nbsp;place&nbsp;lock&nbsp;files&nbsp;in&nbsp;/var/lib/emacs/lock).<br>Future&nbsp;editors&nbsp;may&nbsp;require&nbsp;additional&nbsp;state&nbsp;information&nbsp;beyond&nbsp;crash-recovery&nbsp;files&nbsp;and&nbsp;lock&nbsp;files&nbsp;—&nbsp;this&nbsp;information&nbsp;should&nbsp;also&nbsp;be&nbsp;placed&nbsp;under&nbsp;/var/lib/.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Previous&nbsp;Linux&nbsp;releases,&nbsp;as&nbsp;well&nbsp;as&nbsp;all&nbsp;commercial&nbsp;vendors,&nbsp;use&nbsp;/var/preserve&nbsp;for&nbsp;vi&nbsp;or&nbsp;its&nbsp;clones.&nbsp;However,&nbsp;each&nbsp;editor&nbsp;uses&nbsp;its&nbsp;own&nbsp;format&nbsp;for&nbsp;these&nbsp;crash-recovery&nbsp;files,&nbsp;so&nbsp;a&nbsp;separate&nbsp;directory&nbsp;is&nbsp;needed&nbsp;for&nbsp;each&nbsp;editor.<br>Editor-specific&nbsp;lock&nbsp;files&nbsp;are&nbsp;usually&nbsp;quite&nbsp;different&nbsp;from&nbsp;the&nbsp;device&nbsp;or&nbsp;resource&nbsp;lock&nbsp;files&nbsp;that&nbsp;are&nbsp;stored&nbsp;in&nbsp;/var/lock&nbsp;and,&nbsp;hence,&nbsp;are&nbsp;stored&nbsp;under&nbsp;/var/lib.&nbsp;<br>/var/lib/hwclock&nbsp;:&nbsp;State&nbsp;directory&nbsp;for&nbsp;hwclock&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;the&nbsp;file&nbsp;/var/lib/hwclock/adjtime.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>In&nbsp;FHS&nbsp;2.1,&nbsp;this&nbsp;file&nbsp;was&nbsp;/etc/adjtime,&nbsp;but&nbsp;as&nbsp;hwclock[/b]&nbsp;updates&nbsp;it,&nbsp;that&nbsp;was&nbsp;obviously&nbsp;incorrect.&nbsp;<br>/var/lib/misc&nbsp;:&nbsp;Miscellaneous&nbsp;variable&nbsp;data<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;variable&nbsp;data&nbsp;not&nbsp;placed&nbsp;in&nbsp;a&nbsp;subdirectory&nbsp;in&nbsp;/var/lib.&nbsp;An&nbsp;attempt&nbsp;should&nbsp;be&nbsp;made&nbsp;to&nbsp;use&nbsp;relatively&nbsp;unique&nbsp;names&nbsp;in&nbsp;this&nbsp;directory&nbsp;to&nbsp;avoid&nbsp;namespace&nbsp;conflicts.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2381">[39]</a><br>/var/lock&nbsp;:&nbsp;Lock&nbsp;files<br>Purpose<br>Lock&nbsp;files&nbsp;should&nbsp;be&nbsp;stored&nbsp;within&nbsp;the&nbsp;/var/lock&nbsp;directory&nbsp;structure.<br>Lock&nbsp;files&nbsp;for&nbsp;devices&nbsp;and&nbsp;other&nbsp;resources&nbsp;shared&nbsp;by&nbsp;multiple&nbsp;applications,&nbsp;such&nbsp;as&nbsp;the&nbsp;serial&nbsp;device&nbsp;lock&nbsp;files&nbsp;that&nbsp;were&nbsp;originally&nbsp;found&nbsp;in&nbsp;either&nbsp;/usr/spool/locks&nbsp;or&nbsp;/usr/spool/uucp,&nbsp;must&nbsp;now&nbsp;be&nbsp;stored&nbsp;in&nbsp;/var/lock.&nbsp;The&nbsp;naming&nbsp;convention&nbsp;which&nbsp;must&nbsp;be&nbsp;used&nbsp;is&nbsp;&quot;LCK..&quot;&nbsp;followed&nbsp;by&nbsp;the&nbsp;base&nbsp;name&nbsp;of&nbsp;the&nbsp;device.&nbsp;For&nbsp;example,&nbsp;to&nbsp;lock&nbsp;/dev/ttyS0&nbsp;the&nbsp;file&nbsp;&quot;LCK..ttyS0&quot;&nbsp;would&nbsp;be&nbsp;created.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2396">[40]</a><br>The&nbsp;format&nbsp;used&nbsp;for&nbsp;the&nbsp;contents&nbsp;of&nbsp;such&nbsp;lock&nbsp;files&nbsp;must&nbsp;be&nbsp;the&nbsp;HDB&nbsp;UUCP&nbsp;lock&nbsp;file&nbsp;format.&nbsp;The&nbsp;HDB&nbsp;format&nbsp;is&nbsp;to&nbsp;store&nbsp;the&nbsp;process&nbsp;identifier&nbsp;(PID)&nbsp;as&nbsp;a&nbsp;ten&nbsp;byte&nbsp;ASCII&nbsp;decimal&nbsp;number,&nbsp;with&nbsp;a&nbsp;trailing&nbsp;newline.&nbsp;For&nbsp;example,&nbsp;if&nbsp;process&nbsp;1230&nbsp;holds&nbsp;a&nbsp;lock&nbsp;file,&nbsp;it&nbsp;would&nbsp;contain&nbsp;the&nbsp;eleven&nbsp;characters:&nbsp;space,&nbsp;space,&nbsp;space,&nbsp;space,&nbsp;space,&nbsp;space,&nbsp;one,&nbsp;two,&nbsp;three,&nbsp;zero,&nbsp;and&nbsp;newline.<br>/var/log&nbsp;:&nbsp;Log&nbsp;files&nbsp;and&nbsp;directories<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;miscellaneous&nbsp;log&nbsp;files.&nbsp;Most&nbsp;logs&nbsp;must&nbsp;be&nbsp;written&nbsp;to&nbsp;this&nbsp;directory&nbsp;or&nbsp;an&nbsp;appropriate&nbsp;subdirectory.<br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;files,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;files,&nbsp;must&nbsp;be&nbsp;in&nbsp;/var/log,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>File<br>Description<br>lastlog<br>record&nbsp;of&nbsp;last&nbsp;login&nbsp;of&nbsp;each&nbsp;user<br>messages<br>system&nbsp;messages&nbsp;from&nbsp;syslogd[/b]<br>wtmp<br>record&nbsp;of&nbsp;all&nbsp;logins&nbsp;and&nbsp;logouts<br>/var/mail&nbsp;:&nbsp;User&nbsp;mailbox&nbsp;files&nbsp;(optional)<br>Purpose<br>The&nbsp;mail&nbsp;spool&nbsp;must&nbsp;be&nbsp;accessible&nbsp;through&nbsp;/var/mail&nbsp;and&nbsp;the&nbsp;mail&nbsp;spool&nbsp;files&nbsp;must&nbsp;take&nbsp;the&nbsp;form&nbsp;.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2437">[41]</a><br>User&nbsp;mailbox&nbsp;files&nbsp;in&nbsp;this&nbsp;location&nbsp;must&nbsp;be&nbsp;stored&nbsp;in&nbsp;the&nbsp;standard&nbsp;UNIX&nbsp;mailbox&nbsp;format.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>The&nbsp;logical&nbsp;location&nbsp;for&nbsp;this&nbsp;directory&nbsp;was&nbsp;changed&nbsp;from&nbsp;/var/spool/mail&nbsp;in&nbsp;order&nbsp;to&nbsp;bring&nbsp;FHS&nbsp;in-line&nbsp;with&nbsp;nearly&nbsp;every&nbsp;UNIX&nbsp;implementation.&nbsp;This&nbsp;change&nbsp;is&nbsp;important&nbsp;for&nbsp;inter-operability&nbsp;since&nbsp;a&nbsp;single&nbsp;/var/mail&nbsp;is&nbsp;often&nbsp;shared&nbsp;between&nbsp;multiple&nbsp;hosts&nbsp;and&nbsp;multiple&nbsp;UNIX&nbsp;implementations&nbsp;(despite&nbsp;NFS&nbsp;locking&nbsp;issues).<br>It&nbsp;is&nbsp;important&nbsp;to&nbsp;note&nbsp;that&nbsp;there&nbsp;is&nbsp;no&nbsp;requirement&nbsp;to&nbsp;physically&nbsp;move&nbsp;the&nbsp;mail&nbsp;spool&nbsp;to&nbsp;this&nbsp;location.&nbsp;However,&nbsp;programs&nbsp;and&nbsp;header&nbsp;files&nbsp;must&nbsp;be&nbsp;changed&nbsp;to&nbsp;use&nbsp;/var/mail.&nbsp;<br>/var/opt&nbsp;:&nbsp;Variable&nbsp;data&nbsp;for&nbsp;/opt<br>Purpose<br>Variable&nbsp;data&nbsp;of&nbsp;the&nbsp;packages&nbsp;in&nbsp;/opt&nbsp;must&nbsp;be&nbsp;installed&nbsp;in&nbsp;/var/opt/,&nbsp;where&nbsp;&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;subtree&nbsp;in&nbsp;/opt&nbsp;where&nbsp;the&nbsp;static&nbsp;data&nbsp;from&nbsp;an&nbsp;add-on&nbsp;software&nbsp;package&nbsp;is&nbsp;stored,&nbsp;except&nbsp;where&nbsp;superseded&nbsp;by&nbsp;another&nbsp;file&nbsp;in&nbsp;/etc.&nbsp;No&nbsp;structure&nbsp;is&nbsp;imposed&nbsp;on&nbsp;the&nbsp;internal&nbsp;arrangement&nbsp;of&nbsp;/var/opt/.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Refer&nbsp;to&nbsp;the&nbsp;rationale&nbsp;for&nbsp;/opt.&nbsp;<br>/var/run&nbsp;:&nbsp;Run-time&nbsp;variable&nbsp;data<br>Purpose<br>This&nbsp;directory&nbsp;contains&nbsp;system&nbsp;information&nbsp;data&nbsp;describing&nbsp;the&nbsp;system&nbsp;since&nbsp;it&nbsp;was&nbsp;booted.&nbsp;Files&nbsp;under&nbsp;this&nbsp;directory&nbsp;must&nbsp;be&nbsp;cleared&nbsp;(removed&nbsp;or&nbsp;truncated&nbsp;as&nbsp;appropriate)&nbsp;at&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;boot&nbsp;process.&nbsp;Programs&nbsp;may&nbsp;have&nbsp;a&nbsp;subdirectory&nbsp;of&nbsp;/var/run;&nbsp;this&nbsp;is&nbsp;encouraged&nbsp;for&nbsp;programs&nbsp;that&nbsp;use&nbsp;more&nbsp;than&nbsp;one&nbsp;run-time&nbsp;file.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2469">[42]</a>&nbsp;Process&nbsp;identifier&nbsp;(PID)&nbsp;files,&nbsp;which&nbsp;were&nbsp;originally&nbsp;placed&nbsp;in&nbsp;/etc,&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/var/run.&nbsp;The&nbsp;naming&nbsp;convention&nbsp;for&nbsp;PID&nbsp;files&nbsp;is&nbsp;.pid.&nbsp;For&nbsp;example,&nbsp;the&nbsp;crond[/b]&nbsp;PID&nbsp;file&nbsp;is&nbsp;named&nbsp;/var/run/crond.pid.<br>Requirements<br>The&nbsp;internal&nbsp;format&nbsp;of&nbsp;PID&nbsp;files&nbsp;remains&nbsp;unchanged.&nbsp;The&nbsp;file&nbsp;must&nbsp;consist&nbsp;of&nbsp;the&nbsp;process&nbsp;identifier&nbsp;in&nbsp;ASCII-encoded&nbsp;decimal,&nbsp;followed&nbsp;by&nbsp;a&nbsp;newline&nbsp;character.&nbsp;For&nbsp;example,&nbsp;if&nbsp;crond[/b]&nbsp;was&nbsp;process&nbsp;number&nbsp;25,&nbsp;/var/run/crond.pid&nbsp;would&nbsp;contain&nbsp;three&nbsp;characters:&nbsp;two,&nbsp;five,&nbsp;and&nbsp;newline.<br>Programs&nbsp;that&nbsp;read&nbsp;PID&nbsp;files&nbsp;should&nbsp;be&nbsp;somewhat&nbsp;flexible&nbsp;in&nbsp;what&nbsp;they&nbsp;accept;&nbsp;i.e.,&nbsp;they&nbsp;should&nbsp;ignore&nbsp;extra&nbsp;whitespace,&nbsp;leading&nbsp;zeroes,&nbsp;absence&nbsp;of&nbsp;the&nbsp;trailing&nbsp;newline,&nbsp;or&nbsp;additional&nbsp;lines&nbsp;in&nbsp;the&nbsp;PID&nbsp;file.&nbsp;Programs&nbsp;that&nbsp;create&nbsp;PID&nbsp;files&nbsp;should&nbsp;use&nbsp;the&nbsp;simple&nbsp;specification&nbsp;located&nbsp;in&nbsp;the&nbsp;above&nbsp;paragraph.<br>The&nbsp;utmp&nbsp;file,&nbsp;which&nbsp;stores&nbsp;information&nbsp;about&nbsp;who&nbsp;is&nbsp;currently&nbsp;using&nbsp;the&nbsp;system,&nbsp;is&nbsp;located&nbsp;in&nbsp;this&nbsp;directory.<br>System&nbsp;programs&nbsp;that&nbsp;maintain&nbsp;transient&nbsp;UNIX-domain&nbsp;sockets&nbsp;must&nbsp;place&nbsp;them&nbsp;in&nbsp;this&nbsp;directory.<br>/var/spool&nbsp;:&nbsp;Application&nbsp;spool&nbsp;data<br>Purpose<br>/var/spool&nbsp;contains&nbsp;data&nbsp;which&nbsp;is&nbsp;awaiting&nbsp;some&nbsp;kind&nbsp;of&nbsp;later&nbsp;processing.&nbsp;Data&nbsp;in&nbsp;/var/spool&nbsp;represents&nbsp;work&nbsp;to&nbsp;be&nbsp;done&nbsp;in&nbsp;the&nbsp;future&nbsp;(by&nbsp;a&nbsp;program,&nbsp;user,&nbsp;or&nbsp;administrator);&nbsp;often&nbsp;data&nbsp;is&nbsp;deleted&nbsp;after&nbsp;it&nbsp;has&nbsp;been&nbsp;processed.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2493">[43]</a><br>Specific&nbsp;Options<br>The&nbsp;following&nbsp;directories,&nbsp;or&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;directories,&nbsp;must&nbsp;be&nbsp;in&nbsp;/var/spool,&nbsp;if&nbsp;the&nbsp;corresponding&nbsp;subsystem&nbsp;is&nbsp;installed:<br>Directory<br>Description<br>lpd<br>Printer&nbsp;spool&nbsp;directory&nbsp;(optional)<br>mqueue<br>Outgoing&nbsp;mail&nbsp;queue&nbsp;(optional)<br>news<br>News&nbsp;spool&nbsp;directory&nbsp;(optional)<br>rwho<br>Rwhod&nbsp;files&nbsp;(optional)<br>uucp<br>Spool&nbsp;directory&nbsp;for&nbsp;UUCP&nbsp;(optional)<br>/var/spool/lpd&nbsp;:&nbsp;Line-printer&nbsp;daemon&nbsp;print&nbsp;queues&nbsp;(optional)<br>Purpose<br>The&nbsp;lock&nbsp;file&nbsp;for&nbsp;lpd[/b],&nbsp;lpd.lock,&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/var/spool/lpd.&nbsp;It&nbsp;is&nbsp;suggested&nbsp;that&nbsp;the&nbsp;lock&nbsp;file&nbsp;for&nbsp;each&nbsp;printer&nbsp;be&nbsp;placed&nbsp;in&nbsp;the&nbsp;spool&nbsp;directory&nbsp;for&nbsp;that&nbsp;specific&nbsp;printer&nbsp;and&nbsp;named&nbsp;lock.<br>Specific&nbsp;Options<br>Directory<br>Description<br>printer<br>Spools&nbsp;for&nbsp;a&nbsp;specific&nbsp;printer&nbsp;(optional)<br>/var/spool/rwho&nbsp;:&nbsp;Rwhod&nbsp;files&nbsp;(optional)<br>Purpose<br>This&nbsp;directory&nbsp;holds&nbsp;the&nbsp;rwhod[/b]&nbsp;information&nbsp;for&nbsp;other&nbsp;systems&nbsp;on&nbsp;the&nbsp;local&nbsp;net.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Some&nbsp;BSD&nbsp;releases&nbsp;use&nbsp;/var/rwho&nbsp;for&nbsp;this&nbsp;data;&nbsp;given&nbsp;its&nbsp;historical&nbsp;location&nbsp;in&nbsp;/var/spool&nbsp;on&nbsp;other&nbsp;systems&nbsp;and&nbsp;its&nbsp;approximate&nbsp;fit&nbsp;to&nbsp;the&nbsp;definition&nbsp;of&nbsp;`spooled&#39;&nbsp;data,&nbsp;this&nbsp;location&nbsp;was&nbsp;deemed&nbsp;more&nbsp;appropriate.<br>/var/tmp&nbsp;:&nbsp;Temporary&nbsp;files&nbsp;preserved&nbsp;between&nbsp;system&nbsp;reboots<br>Purpose<br>The&nbsp;/var/tmp&nbsp;directory&nbsp;is&nbsp;made&nbsp;available&nbsp;for&nbsp;programs&nbsp;that&nbsp;require&nbsp;temporary&nbsp;files&nbsp;or&nbsp;directories&nbsp;that&nbsp;are&nbsp;preserved&nbsp;between&nbsp;system&nbsp;reboots.&nbsp;Therefore,&nbsp;data&nbsp;stored&nbsp;in&nbsp;/var/tmp&nbsp;is&nbsp;more&nbsp;persistent&nbsp;than&nbsp;data&nbsp;in&nbsp;/tmp.<br>Files&nbsp;and&nbsp;directories&nbsp;located&nbsp;in&nbsp;/var/tmp&nbsp;must&nbsp;not&nbsp;be&nbsp;deleted&nbsp;when&nbsp;the&nbsp;system&nbsp;is&nbsp;booted.&nbsp;Although&nbsp;data&nbsp;stored&nbsp;in&nbsp;/var/tmp&nbsp;is&nbsp;typically&nbsp;deleted&nbsp;in&nbsp;a&nbsp;site-specific&nbsp;manner,&nbsp;it&nbsp;is&nbsp;recommended&nbsp;that&nbsp;deletions&nbsp;occur&nbsp;at&nbsp;a&nbsp;less&nbsp;frequent&nbsp;interval&nbsp;than&nbsp;/tmp.<br>/var/yp&nbsp;:&nbsp;Network&nbsp;Information&nbsp;Service&nbsp;(NIS)&nbsp;database&nbsp;files&nbsp;(optional)<br>Purpose<br>Variable&nbsp;data&nbsp;for&nbsp;the&nbsp;Network&nbsp;Information&nbsp;Service&nbsp;(NIS),&nbsp;formerly&nbsp;known&nbsp;as&nbsp;the&nbsp;Sun&nbsp;Yellow&nbsp;Pages&nbsp;(YP),&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;this&nbsp;directory.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>/var/yp&nbsp;is&nbsp;the&nbsp;standard&nbsp;directory&nbsp;for&nbsp;NIS&nbsp;(YP)&nbsp;data&nbsp;and&nbsp;is&nbsp;almost&nbsp;exclusively&nbsp;used&nbsp;in&nbsp;NIS&nbsp;documentation&nbsp;and&nbsp;systems.&nbsp;<a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN2582">[44]</a><br>Chapter&nbsp;6.&nbsp;Operating&nbsp;System&nbsp;Specific&nbsp;Annex<br>This&nbsp;section&nbsp;is&nbsp;for&nbsp;additional&nbsp;requirements&nbsp;and&nbsp;recommendations&nbsp;that&nbsp;only&nbsp;apply&nbsp;to&nbsp;a&nbsp;specific&nbsp;operating&nbsp;system.&nbsp;The&nbsp;material&nbsp;in&nbsp;this&nbsp;section&nbsp;should&nbsp;never&nbsp;conflict&nbsp;with&nbsp;the&nbsp;base&nbsp;standard.<br>Linux<br>This&nbsp;is&nbsp;the&nbsp;annex&nbsp;for&nbsp;the&nbsp;Linux&nbsp;operating&nbsp;system.<br>/&nbsp;:&nbsp;Root&nbsp;directory<br>On&nbsp;Linux&nbsp;systems,&nbsp;if&nbsp;the&nbsp;kernel&nbsp;is&nbsp;located&nbsp;in&nbsp;/,&nbsp;we&nbsp;recommend&nbsp;using&nbsp;the&nbsp;names&nbsp;vmlinux&nbsp;or&nbsp;vmlinuz,&nbsp;which&nbsp;have&nbsp;been&nbsp;used&nbsp;in&nbsp;recent&nbsp;Linux&nbsp;kernel&nbsp;source&nbsp;packages.<br>/bin&nbsp;:&nbsp;Essential&nbsp;user&nbsp;command&nbsp;binaries&nbsp;(for&nbsp;use&nbsp;by&nbsp;all&nbsp;users)<br>Linux&nbsp;systems&nbsp;which&nbsp;require&nbsp;them&nbsp;place&nbsp;these&nbsp;additional&nbsp;files&nbsp;into&nbsp;/bin:<br>setserial[/b]<br>/dev&nbsp;:&nbsp;Devices&nbsp;and&nbsp;special&nbsp;files<br>The&nbsp;following&nbsp;devices&nbsp;must&nbsp;exist&nbsp;under&nbsp;/dev.&nbsp;<br>/dev/null&nbsp;<br>All&nbsp;data&nbsp;written&nbsp;to&nbsp;this&nbsp;device&nbsp;is&nbsp;discarded.&nbsp;A&nbsp;read&nbsp;from&nbsp;this&nbsp;device&nbsp;will&nbsp;return&nbsp;an&nbsp;EOF&nbsp;condition.<br>/dev/zero&nbsp;<br>This&nbsp;device&nbsp;is&nbsp;a&nbsp;source&nbsp;of&nbsp;zeroed&nbsp;out&nbsp;data.&nbsp;All&nbsp;data&nbsp;written&nbsp;to&nbsp;this&nbsp;device&nbsp;is&nbsp;discarded.&nbsp;A&nbsp;read&nbsp;from&nbsp;this&nbsp;device&nbsp;will&nbsp;return&nbsp;as&nbsp;many&nbsp;bytes&nbsp;containing&nbsp;the&nbsp;value&nbsp;zero&nbsp;as&nbsp;was&nbsp;requested.<br>/dev/tty&nbsp;<br>This&nbsp;device&nbsp;is&nbsp;a&nbsp;synonym&nbsp;for&nbsp;the&nbsp;controlling&nbsp;terminal&nbsp;of&nbsp;a&nbsp;process.&nbsp;Once&nbsp;this&nbsp;device&nbsp;is&nbsp;opened,&nbsp;all&nbsp;reads&nbsp;and&nbsp;writes&nbsp;will&nbsp;behave&nbsp;as&nbsp;if&nbsp;the&nbsp;actual&nbsp;controlling&nbsp;terminal&nbsp;device&nbsp;had&nbsp;been&nbsp;opened.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>Previous&nbsp;versions&nbsp;of&nbsp;the&nbsp;FHS&nbsp;had&nbsp;stricter&nbsp;requirements&nbsp;for&nbsp;/dev.&nbsp;Other&nbsp;devices&nbsp;may&nbsp;also&nbsp;exist&nbsp;in&nbsp;/dev.&nbsp;Device&nbsp;names&nbsp;may&nbsp;exist&nbsp;as&nbsp;symbolic&nbsp;links&nbsp;to&nbsp;other&nbsp;device&nbsp;nodes&nbsp;located&nbsp;in&nbsp;/dev&nbsp;or&nbsp;subdirectories&nbsp;of&nbsp;/dev.&nbsp;There&nbsp;is&nbsp;no&nbsp;requirement&nbsp;concerning&nbsp;major/minor&nbsp;number&nbsp;values.<br>/etc&nbsp;:&nbsp;Host-specific&nbsp;system&nbsp;configuration<br>Linux&nbsp;systems&nbsp;which&nbsp;require&nbsp;them&nbsp;place&nbsp;these&nbsp;additional&nbsp;files&nbsp;into&nbsp;/etc.<br>lilo.conf<br>/lib64&nbsp;and&nbsp;/lib32&nbsp;:&nbsp;64/32-bit&nbsp;libraries&nbsp;(architecture&nbsp;dependent)<br>The&nbsp;64-bit&nbsp;architectures&nbsp;PPC64,&nbsp;s390x,&nbsp;sparc64&nbsp;and&nbsp;AMD64&nbsp;must&nbsp;place&nbsp;64-bit&nbsp;libraries&nbsp;in&nbsp;/lib64,&nbsp;and&nbsp;32-bit&nbsp;(or&nbsp;31-bit&nbsp;on&nbsp;s390)&nbsp;libraries&nbsp;in&nbsp;/lib.<br>The&nbsp;64-bit&nbsp;architecture&nbsp;IA64&nbsp;must&nbsp;place&nbsp;64-bit&nbsp;libraries&nbsp;in&nbsp;/lib.&nbsp;<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>This&nbsp;is&nbsp;a&nbsp;refinement&nbsp;of&nbsp;the&nbsp;general&nbsp;rules&nbsp;for&nbsp;/lib&nbsp;and&nbsp;/usr/lib.&nbsp;The&nbsp;architectures&nbsp;PPC64,&nbsp;s390x,&nbsp;sparc64&nbsp;and&nbsp;AMD64&nbsp;support&nbsp;support&nbsp;both&nbsp;32-bit&nbsp;(for&nbsp;s390&nbsp;more&nbsp;precise&nbsp;31-bit)&nbsp;and&nbsp;64-bit&nbsp;programs.&nbsp;Using&nbsp;lib&nbsp;for&nbsp;32-bit&nbsp;binaries&nbsp;allows&nbsp;existing&nbsp;binaries&nbsp;from&nbsp;the&nbsp;32-bit&nbsp;systems&nbsp;to&nbsp;work&nbsp;without&nbsp;any&nbsp;changes:&nbsp;such&nbsp;binaries&nbsp;are&nbsp;expected&nbsp;to&nbsp;be&nbsp;numerous.&nbsp;IA-64&nbsp;uses&nbsp;a&nbsp;different&nbsp;scheme,&nbsp;reflecting&nbsp;the&nbsp;deprecation&nbsp;of&nbsp;32-bit&nbsp;binaries&nbsp;(and&nbsp;hence&nbsp;libraries)&nbsp;on&nbsp;that&nbsp;architecture.<br>/proc&nbsp;:&nbsp;Kernel&nbsp;and&nbsp;process&nbsp;information&nbsp;virtual&nbsp;filesystem<br>The&nbsp;proc&nbsp;filesystem&nbsp;is&nbsp;the&nbsp;de-facto&nbsp;standard&nbsp;Linux&nbsp;method&nbsp;for&nbsp;handling&nbsp;process&nbsp;and&nbsp;system&nbsp;information,&nbsp;rather&nbsp;than&nbsp;/dev/kmem&nbsp;and&nbsp;other&nbsp;similar&nbsp;methods.&nbsp;We&nbsp;strongly&nbsp;encourage&nbsp;this&nbsp;for&nbsp;the&nbsp;storage&nbsp;and&nbsp;retrieval&nbsp;of&nbsp;process&nbsp;information&nbsp;as&nbsp;well&nbsp;as&nbsp;other&nbsp;kernel&nbsp;and&nbsp;memory&nbsp;information.<br>/sbin&nbsp;:&nbsp;Essential&nbsp;system&nbsp;binaries<br>Linux&nbsp;systems&nbsp;place&nbsp;these&nbsp;additional&nbsp;files&nbsp;into&nbsp;/sbin.<br>Second&nbsp;extended&nbsp;filesystem&nbsp;commands&nbsp;(optional):<br>badblocks[/b]<br>dumpe2fs[/b]<br>e2fsck[/b]<br>mke2fs[/b]<br>mklost+found[/b]<br>tune2fs[/b]<br>Boot-loader&nbsp;map&nbsp;installer&nbsp;(optional):<br>lilo[/b]<br>Optional&nbsp;files&nbsp;for&nbsp;/sbin:<br>Static&nbsp;binaries:<br>ldconfig[/b]<br>sln[/b]<br>ssync[/b]<br>Static&nbsp;ln[/b]&nbsp;(sln[/b])&nbsp;and&nbsp;static&nbsp;sync[/b]&nbsp;(ssync[/b])&nbsp;are&nbsp;useful&nbsp;when&nbsp;things&nbsp;go&nbsp;wrong.&nbsp;The&nbsp;primary&nbsp;use&nbsp;of&nbsp;sln[/b]&nbsp;(to&nbsp;repair&nbsp;incorrect&nbsp;symlinks&nbsp;in&nbsp;/lib&nbsp;after&nbsp;a&nbsp;poorly&nbsp;orchestrated&nbsp;upgrade)&nbsp;is&nbsp;no&nbsp;longer&nbsp;a&nbsp;major&nbsp;concern&nbsp;now&nbsp;that&nbsp;the&nbsp;ldconfig[/b]&nbsp;program&nbsp;(usually&nbsp;located&nbsp;in&nbsp;/usr/sbin)&nbsp;exists&nbsp;and&nbsp;can&nbsp;act&nbsp;as&nbsp;a&nbsp;guiding&nbsp;hand&nbsp;in&nbsp;upgrading&nbsp;the&nbsp;dynamic&nbsp;libraries.&nbsp;Static&nbsp;sync[/b]&nbsp;is&nbsp;useful&nbsp;in&nbsp;some&nbsp;emergency&nbsp;situations.&nbsp;Note&nbsp;that&nbsp;these&nbsp;need&nbsp;not&nbsp;be&nbsp;statically&nbsp;linked&nbsp;versions&nbsp;of&nbsp;the&nbsp;standard&nbsp;ln[/b]&nbsp;and&nbsp;sync[/b],&nbsp;but&nbsp;may&nbsp;be.<br>The&nbsp;ldconfig[/b]&nbsp;binary&nbsp;is&nbsp;optional&nbsp;for&nbsp;/sbin&nbsp;since&nbsp;a&nbsp;site&nbsp;may&nbsp;choose&nbsp;to&nbsp;run&nbsp;ldconfig[/b]&nbsp;at&nbsp;boot&nbsp;time,&nbsp;rather&nbsp;than&nbsp;only&nbsp;when&nbsp;upgrading&nbsp;the&nbsp;shared&nbsp;libraries.&nbsp;(It&#39;s&nbsp;not&nbsp;clear&nbsp;whether&nbsp;or&nbsp;not&nbsp;it&nbsp;is&nbsp;advantageous&nbsp;to&nbsp;run&nbsp;ldconfig[/b]&nbsp;on&nbsp;each&nbsp;boot.)&nbsp;Even&nbsp;so,&nbsp;some&nbsp;people&nbsp;like&nbsp;ldconfig[/b]&nbsp;around&nbsp;for&nbsp;the&nbsp;following&nbsp;(all&nbsp;too&nbsp;common)&nbsp;situation:<br>I&#39;ve&nbsp;just&nbsp;removed&nbsp;/lib/.<br>I&nbsp;can&#39;t&nbsp;find&nbsp;out&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;library&nbsp;because&nbsp;ls[/b]&nbsp;is&nbsp;dynamically&nbsp;linked,&nbsp;I&#39;m&nbsp;using&nbsp;a&nbsp;shell&nbsp;that&nbsp;doesn&#39;t&nbsp;have&nbsp;ls[/b]&nbsp;built-in,&nbsp;and&nbsp;I&nbsp;don&#39;t&nbsp;know&nbsp;about&nbsp;using&nbsp;&quot;echo&nbsp;*[/b]&quot;&nbsp;as&nbsp;a&nbsp;replacement.<br>I&nbsp;have&nbsp;a&nbsp;static&nbsp;sln[/b],&nbsp;but&nbsp;I&nbsp;don&#39;t&nbsp;know&nbsp;what&nbsp;to&nbsp;call&nbsp;the&nbsp;link.<br>Miscellaneous:<br>ctrlaltdel[/b]<br>kbdrate[/b]<br>So&nbsp;as&nbsp;to&nbsp;cope&nbsp;with&nbsp;the&nbsp;fact&nbsp;that&nbsp;some&nbsp;keyboards&nbsp;come&nbsp;up&nbsp;with&nbsp;such&nbsp;a&nbsp;high&nbsp;repeat&nbsp;rate&nbsp;as&nbsp;to&nbsp;be&nbsp;unusable,&nbsp;kbdrate[/b]&nbsp;may&nbsp;be&nbsp;installed&nbsp;in&nbsp;/sbin&nbsp;on&nbsp;some&nbsp;systems.<br>Since&nbsp;the&nbsp;default&nbsp;action&nbsp;in&nbsp;the&nbsp;kernel&nbsp;for&nbsp;the&nbsp;Ctrl-Alt-Del&nbsp;key&nbsp;combination&nbsp;is&nbsp;an&nbsp;instant&nbsp;hard&nbsp;reboot,&nbsp;it&nbsp;is&nbsp;generally&nbsp;advisable&nbsp;to&nbsp;disable&nbsp;the&nbsp;behavior&nbsp;before&nbsp;mounting&nbsp;the&nbsp;root&nbsp;filesystem&nbsp;in&nbsp;read-write&nbsp;mode.&nbsp;Some&nbsp;init[/b]&nbsp;suites&nbsp;are&nbsp;able&nbsp;to&nbsp;disable&nbsp;Ctrl-Alt-Del,&nbsp;but&nbsp;others&nbsp;may&nbsp;require&nbsp;the&nbsp;ctrlaltdel[/b]&nbsp;program,&nbsp;which&nbsp;may&nbsp;be&nbsp;installed&nbsp;in&nbsp;/sbin&nbsp;on&nbsp;those&nbsp;systems.<br>/usr/include&nbsp;:&nbsp;Header&nbsp;files&nbsp;included&nbsp;by&nbsp;C&nbsp;programs<br>These&nbsp;symbolic&nbsp;links&nbsp;are&nbsp;required&nbsp;if&nbsp;a&nbsp;C&nbsp;or&nbsp;C++&nbsp;compiler&nbsp;is&nbsp;installed&nbsp;and&nbsp;only&nbsp;for&nbsp;systems&nbsp;not&nbsp;based&nbsp;on&nbsp;glibc.<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/include/asm&nbsp;-&gt;&nbsp;/usr/src/linux/include/asm-<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/include/linux&nbsp;-&gt;&nbsp;/usr/src/linux/include/linux<br>/usr/src&nbsp;:&nbsp;Source&nbsp;code<br>For&nbsp;systems&nbsp;based&nbsp;on&nbsp;glibc,&nbsp;there&nbsp;are&nbsp;no&nbsp;specific&nbsp;guidelines&nbsp;for&nbsp;this&nbsp;directory.&nbsp;For&nbsp;systems&nbsp;based&nbsp;on&nbsp;Linux&nbsp;libc&nbsp;revisions&nbsp;prior&nbsp;to&nbsp;glibc,&nbsp;the&nbsp;following&nbsp;guidelines&nbsp;and&nbsp;rationale&nbsp;apply:<br>The&nbsp;only&nbsp;source&nbsp;code&nbsp;that&nbsp;should&nbsp;be&nbsp;placed&nbsp;in&nbsp;a&nbsp;specific&nbsp;location&nbsp;is&nbsp;the&nbsp;Linux&nbsp;kernel&nbsp;source&nbsp;code.&nbsp;It&nbsp;is&nbsp;located&nbsp;in&nbsp;/usr/src/linux.<br>If&nbsp;a&nbsp;C&nbsp;or&nbsp;C++&nbsp;compiler&nbsp;is&nbsp;installed,&nbsp;but&nbsp;the&nbsp;complete&nbsp;Linux&nbsp;kernel&nbsp;source&nbsp;code&nbsp;is&nbsp;not&nbsp;installed,&nbsp;then&nbsp;the&nbsp;include&nbsp;files&nbsp;from&nbsp;the&nbsp;kernel&nbsp;source&nbsp;code&nbsp;must&nbsp;be&nbsp;located&nbsp;in&nbsp;these&nbsp;directories:<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/src/linux/include/asm-<br>&nbsp;&nbsp;&nbsp;&nbsp;/usr/src/linux/include/linux<br>&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;system&nbsp;architecture.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_24.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Note</strong><br>&nbsp;<br>/usr/src/linux&nbsp;may&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;a&nbsp;kernel&nbsp;source&nbsp;code&nbsp;tree.<br><img src="attachments/m&#111;nth_0906/2009061216200582998_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><strong>Rationale</strong><br>&nbsp;<br>It&nbsp;is&nbsp;important&nbsp;that&nbsp;the&nbsp;kernel&nbsp;include&nbsp;files&nbsp;be&nbsp;located&nbsp;in&nbsp;/usr/src/linux&nbsp;and&nbsp;not&nbsp;in&nbsp;/usr/include&nbsp;so&nbsp;there&nbsp;are&nbsp;no&nbsp;problems&nbsp;when&nbsp;system&nbsp;administrators&nbsp;upgrade&nbsp;their&nbsp;kernel&nbsp;version&nbsp;for&nbsp;the&nbsp;first&nbsp;time.&nbsp;<br>/var/spool/cron&nbsp;:&nbsp;cron&nbsp;and&nbsp;at&nbsp;jobs<br>This&nbsp;directory&nbsp;contains&nbsp;the&nbsp;variable&nbsp;data&nbsp;for&nbsp;the&nbsp;cron[/b]&nbsp;and&nbsp;at[/b]&nbsp;programs.<br>Chapter&nbsp;7.&nbsp;Appendix<br>The&nbsp;FHS&nbsp;mailing&nbsp;list<br>The&nbsp;FHS&nbsp;mailing&nbsp;list&nbsp;is&nbsp;located&nbsp;at&nbsp;.&nbsp;You&nbsp;can&nbsp;subscribe&nbsp;to&nbsp;the&nbsp;mailing&nbsp;list&nbsp;at&nbsp;this&nbsp;page&nbsp;<a target="_blank" href="http://sourceforge.net/projects/freestandards/">http://sourceforge.net/projects/freestandards/</a>.<br>Thanks&nbsp;to&nbsp;Network&nbsp;Operations&nbsp;at&nbsp;the&nbsp;University&nbsp;of&nbsp;California&nbsp;at&nbsp;San&nbsp;Diego&nbsp;who&nbsp;allowed&nbsp;us&nbsp;to&nbsp;use&nbsp;their&nbsp;excellent&nbsp;mailing&nbsp;list&nbsp;server.<br>As&nbsp;noted&nbsp;in&nbsp;the&nbsp;introduction,&nbsp;please&nbsp;do&nbsp;not&nbsp;send&nbsp;mail&nbsp;to&nbsp;the&nbsp;mailing&nbsp;list&nbsp;without&nbsp;first&nbsp;contacting&nbsp;the&nbsp;FHS&nbsp;editor&nbsp;or&nbsp;a&nbsp;listed&nbsp;contributor.<br>Background&nbsp;of&nbsp;the&nbsp;FHS<br>The&nbsp;process&nbsp;of&nbsp;developing&nbsp;a&nbsp;standard&nbsp;filesystem&nbsp;hierarchy&nbsp;began&nbsp;in&nbsp;August&nbsp;1993&nbsp;with&nbsp;an&nbsp;effort&nbsp;to&nbsp;restructure&nbsp;the&nbsp;file&nbsp;and&nbsp;directory&nbsp;structure&nbsp;of&nbsp;Linux.&nbsp;The&nbsp;FSSTND,&nbsp;a&nbsp;filesystem&nbsp;hierarchy&nbsp;standard&nbsp;specific&nbsp;to&nbsp;the&nbsp;Linux&nbsp;operating&nbsp;system,&nbsp;was&nbsp;released&nbsp;on&nbsp;February&nbsp;14,&nbsp;1994.&nbsp;Subsequent&nbsp;revisions&nbsp;were&nbsp;released&nbsp;on&nbsp;October&nbsp;9,&nbsp;1994&nbsp;and&nbsp;March&nbsp;28,&nbsp;1995.<br>In&nbsp;early&nbsp;1995,&nbsp;the&nbsp;goal&nbsp;of&nbsp;developing&nbsp;a&nbsp;more&nbsp;comprehensive&nbsp;version&nbsp;of&nbsp;FSSTND&nbsp;to&nbsp;address&nbsp;not&nbsp;only&nbsp;Linux,&nbsp;but&nbsp;other&nbsp;UNIX-like&nbsp;systems&nbsp;was&nbsp;adopted&nbsp;with&nbsp;the&nbsp;help&nbsp;of&nbsp;members&nbsp;of&nbsp;the&nbsp;BSD&nbsp;development&nbsp;community.&nbsp;As&nbsp;a&nbsp;result,&nbsp;a&nbsp;concerted&nbsp;effort&nbsp;was&nbsp;made&nbsp;to&nbsp;focus&nbsp;on&nbsp;issues&nbsp;that&nbsp;were&nbsp;general&nbsp;to&nbsp;UNIX-like&nbsp;systems.&nbsp;In&nbsp;recognition&nbsp;of&nbsp;this&nbsp;widening&nbsp;of&nbsp;scope,&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;standard&nbsp;was&nbsp;changed&nbsp;to&nbsp;Filesystem&nbsp;Hierarchy&nbsp;Standard&nbsp;or&nbsp;FHS&nbsp;for&nbsp;short.<br>Volunteers&nbsp;who&nbsp;have&nbsp;contributed&nbsp;extensively&nbsp;to&nbsp;this&nbsp;standard&nbsp;are&nbsp;listed&nbsp;at&nbsp;the&nbsp;end&nbsp;of&nbsp;this&nbsp;document.&nbsp;This&nbsp;standard&nbsp;represents&nbsp;a&nbsp;consensus&nbsp;view&nbsp;of&nbsp;those&nbsp;and&nbsp;other&nbsp;contributors.<br>General&nbsp;Guidelines<br>Here&nbsp;are&nbsp;some&nbsp;of&nbsp;the&nbsp;guidelines&nbsp;that&nbsp;have&nbsp;been&nbsp;used&nbsp;in&nbsp;the&nbsp;development&nbsp;of&nbsp;this&nbsp;standard:<br>Solve&nbsp;technical&nbsp;problems&nbsp;while&nbsp;limiting&nbsp;transitional&nbsp;difficulties.<br>Make&nbsp;the&nbsp;specification&nbsp;reasonably&nbsp;stable.<br>Gain&nbsp;the&nbsp;approval&nbsp;of&nbsp;distributors,&nbsp;developers,&nbsp;and&nbsp;other&nbsp;decision-makers&nbsp;in&nbsp;relevant&nbsp;development&nbsp;groups&nbsp;and&nbsp;encourage&nbsp;their&nbsp;participation.<br>Provide&nbsp;a&nbsp;standard&nbsp;that&nbsp;is&nbsp;attractive&nbsp;to&nbsp;the&nbsp;implementors&nbsp;of&nbsp;different&nbsp;UNIX-like&nbsp;systems.<br>Scope<br>This&nbsp;document&nbsp;specifies&nbsp;a&nbsp;standard&nbsp;filesystem&nbsp;hierarchy&nbsp;for&nbsp;FHS&nbsp;filesystems&nbsp;by&nbsp;specifying&nbsp;the&nbsp;location&nbsp;of&nbsp;files&nbsp;and&nbsp;directories,&nbsp;and&nbsp;the&nbsp;contents&nbsp;of&nbsp;some&nbsp;system&nbsp;files.<br>This&nbsp;standard&nbsp;has&nbsp;been&nbsp;designed&nbsp;to&nbsp;be&nbsp;used&nbsp;by&nbsp;system&nbsp;integrators,&nbsp;package&nbsp;developers,&nbsp;and&nbsp;system&nbsp;administrators&nbsp;in&nbsp;the&nbsp;construction&nbsp;and&nbsp;maintenance&nbsp;of&nbsp;FHS&nbsp;compliant&nbsp;filesystems.&nbsp;It&nbsp;is&nbsp;primarily&nbsp;intended&nbsp;to&nbsp;be&nbsp;a&nbsp;reference&nbsp;and&nbsp;is&nbsp;not&nbsp;a&nbsp;tutorial&nbsp;on&nbsp;how&nbsp;to&nbsp;manage&nbsp;a&nbsp;conforming&nbsp;filesystem&nbsp;hierarchy.<br>The&nbsp;FHS&nbsp;grew&nbsp;out&nbsp;of&nbsp;earlier&nbsp;work&nbsp;on&nbsp;FSSTND,&nbsp;a&nbsp;filesystem&nbsp;organization&nbsp;standard&nbsp;for&nbsp;the&nbsp;Linux&nbsp;operating&nbsp;system.&nbsp;It&nbsp;builds&nbsp;on&nbsp;FSSTND&nbsp;to&nbsp;address&nbsp;interoperability&nbsp;issues&nbsp;not&nbsp;just&nbsp;in&nbsp;the&nbsp;Linux&nbsp;community&nbsp;but&nbsp;in&nbsp;a&nbsp;wider&nbsp;arena&nbsp;including&nbsp;4.4BSD-based&nbsp;operating&nbsp;systems.&nbsp;It&nbsp;incorporates&nbsp;lessons&nbsp;learned&nbsp;in&nbsp;the&nbsp;BSD&nbsp;world&nbsp;and&nbsp;elsewhere&nbsp;about&nbsp;multi-architecture&nbsp;support&nbsp;and&nbsp;the&nbsp;demands&nbsp;of&nbsp;heterogeneous&nbsp;networking.<br>Although&nbsp;this&nbsp;standard&nbsp;is&nbsp;more&nbsp;comprehensive&nbsp;than&nbsp;previous&nbsp;attempts&nbsp;at&nbsp;filesystem&nbsp;hierarchy&nbsp;standardization,&nbsp;periodic&nbsp;updates&nbsp;may&nbsp;become&nbsp;necessary&nbsp;as&nbsp;requirements&nbsp;change&nbsp;in&nbsp;relation&nbsp;to&nbsp;emerging&nbsp;technology.&nbsp;It&nbsp;is&nbsp;also&nbsp;possible&nbsp;that&nbsp;better&nbsp;solutions&nbsp;to&nbsp;the&nbsp;problems&nbsp;addressed&nbsp;here&nbsp;will&nbsp;be&nbsp;discovered&nbsp;so&nbsp;that&nbsp;our&nbsp;solutions&nbsp;will&nbsp;no&nbsp;longer&nbsp;be&nbsp;the&nbsp;best&nbsp;possible&nbsp;solutions.&nbsp;Supplementary&nbsp;drafts&nbsp;may&nbsp;be&nbsp;released&nbsp;in&nbsp;addition&nbsp;to&nbsp;periodic&nbsp;updates&nbsp;to&nbsp;this&nbsp;document.&nbsp;However,&nbsp;a&nbsp;specific&nbsp;goal&nbsp;is&nbsp;backwards&nbsp;compatibility&nbsp;from&nbsp;one&nbsp;release&nbsp;of&nbsp;this&nbsp;document&nbsp;to&nbsp;the&nbsp;next.<br>Comments&nbsp;related&nbsp;to&nbsp;this&nbsp;standard&nbsp;are&nbsp;welcome.&nbsp;Any&nbsp;comments&nbsp;or&nbsp;suggestions&nbsp;for&nbsp;changes&nbsp;may&nbsp;be&nbsp;directed&nbsp;to&nbsp;the&nbsp;FHS&nbsp;editor&nbsp;(Daniel&nbsp;Quinlan&nbsp;)&nbsp;or&nbsp;the&nbsp;FHS&nbsp;mailing&nbsp;list.&nbsp;Typographical&nbsp;or&nbsp;grammatical&nbsp;comments&nbsp;should&nbsp;be&nbsp;directed&nbsp;to&nbsp;the&nbsp;FHS&nbsp;editor.<br>Before&nbsp;sending&nbsp;mail&nbsp;to&nbsp;the&nbsp;mailing&nbsp;list&nbsp;it&nbsp;is&nbsp;requested&nbsp;that&nbsp;you&nbsp;first&nbsp;contact&nbsp;the&nbsp;FHS&nbsp;editor&nbsp;in&nbsp;order&nbsp;to&nbsp;avoid&nbsp;excessive&nbsp;re-discussion&nbsp;of&nbsp;old&nbsp;topics.<br>Questions&nbsp;about&nbsp;how&nbsp;to&nbsp;interpret&nbsp;items&nbsp;in&nbsp;this&nbsp;document&nbsp;may&nbsp;occasionally&nbsp;arise.&nbsp;If&nbsp;you&nbsp;have&nbsp;need&nbsp;for&nbsp;a&nbsp;clarification,&nbsp;please&nbsp;contact&nbsp;the&nbsp;FHS&nbsp;editor.&nbsp;Since&nbsp;this&nbsp;standard&nbsp;represents&nbsp;a&nbsp;consensus&nbsp;of&nbsp;many&nbsp;participants,&nbsp;it&nbsp;is&nbsp;important&nbsp;to&nbsp;make&nbsp;certain&nbsp;that&nbsp;any&nbsp;interpretation&nbsp;also&nbsp;represents&nbsp;their&nbsp;collective&nbsp;opinion.&nbsp;For&nbsp;this&nbsp;reason&nbsp;it&nbsp;may&nbsp;not&nbsp;be&nbsp;possible&nbsp;to&nbsp;provide&nbsp;an&nbsp;immediate&nbsp;response&nbsp;unless&nbsp;the&nbsp;inquiry&nbsp;has&nbsp;been&nbsp;the&nbsp;subject&nbsp;of&nbsp;previous&nbsp;discussion.<br>Acknowledgments<br>The&nbsp;developers&nbsp;of&nbsp;the&nbsp;FHS&nbsp;wish&nbsp;to&nbsp;thank&nbsp;the&nbsp;developers,&nbsp;system&nbsp;administrators,&nbsp;and&nbsp;users&nbsp;whose&nbsp;input&nbsp;was&nbsp;essential&nbsp;to&nbsp;this&nbsp;standard.&nbsp;We&nbsp;wish&nbsp;to&nbsp;thank&nbsp;each&nbsp;of&nbsp;the&nbsp;contributors&nbsp;who&nbsp;helped&nbsp;to&nbsp;write,&nbsp;compile,&nbsp;and&nbsp;compose&nbsp;this&nbsp;standard.<br>The&nbsp;FHS&nbsp;Group&nbsp;also&nbsp;wishes&nbsp;to&nbsp;thank&nbsp;those&nbsp;Linux&nbsp;developers&nbsp;who&nbsp;supported&nbsp;the&nbsp;FSSTND,&nbsp;the&nbsp;predecessor&nbsp;to&nbsp;this&nbsp;standard.&nbsp;If&nbsp;they&nbsp;hadn&#39;t&nbsp;demonstrated&nbsp;that&nbsp;the&nbsp;FSSTND&nbsp;was&nbsp;beneficial,&nbsp;the&nbsp;FHS&nbsp;could&nbsp;never&nbsp;have&nbsp;evolved.<br>Contributors<br>Brandon&nbsp;S.&nbsp;Allbery<br>Keith&nbsp;Bostic<br>Drew&nbsp;Eckhardt<br>Rik&nbsp;Faith<br>Stephen&nbsp;Harris<br>Ian&nbsp;Jackson<br>Andreas&nbsp;Jaeger<br>John&nbsp;A.&nbsp;Martin<br>Ian&nbsp;McCloghrie<br>Chris&nbsp;Metcalf<br>Ian&nbsp;Murdock<br>David&nbsp;C.&nbsp;Niemi<br>Daniel&nbsp;Quinlan<br>Eric&nbsp;S.&nbsp;Raymond<br>Rusty&nbsp;Russell<br>Mike&nbsp;Sangrey<br>David&nbsp;H.&nbsp;Silber<br>Thomas&nbsp;Sippel-Dau<br>Theodore&nbsp;Ts&#39;o<br>Stephen&nbsp;Tweedie<br>Fred&nbsp;N.&nbsp;van&nbsp;Kempen<br>Bernd&nbsp;Warken<br>Christopher&nbsp;Yeoh<br>Notes<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN261">[1]</a><br>Command&nbsp;binaries&nbsp;that&nbsp;are&nbsp;not&nbsp;essential&nbsp;enough&nbsp;to&nbsp;place&nbsp;into&nbsp;/bin&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/bin,&nbsp;instead.&nbsp;Items&nbsp;that&nbsp;are&nbsp;required&nbsp;only&nbsp;by&nbsp;non-root&nbsp;users&nbsp;(the&nbsp;X&nbsp;Window&nbsp;System,&nbsp;chsh,&nbsp;etc.)&nbsp;are&nbsp;generally&nbsp;not&nbsp;essential&nbsp;enough&nbsp;to&nbsp;be&nbsp;placed&nbsp;into&nbsp;the&nbsp;root&nbsp;partition.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN493">[2]</a><br>Programs&nbsp;necessary&nbsp;to&nbsp;arrange&nbsp;for&nbsp;the&nbsp;boot&nbsp;loader&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;boot&nbsp;a&nbsp;file&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/sbin.&nbsp;Configuration&nbsp;files&nbsp;for&nbsp;boot&nbsp;loaders&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/etc.<br>The&nbsp;GRUB&nbsp;bootloader&nbsp;reads&nbsp;its&nbsp;configurations&nbsp;file&nbsp;before&nbsp;booting,&nbsp;so&nbsp;that&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/boot.&nbsp;However,&nbsp;it&nbsp;is&nbsp;a&nbsp;configuration&nbsp;file,&nbsp;so&nbsp;should&nbsp;be&nbsp;in&nbsp;/etc.&nbsp;The&nbsp;answer&nbsp;here&nbsp;is&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;such&nbsp;as&nbsp;/etc/grub/menu.lst&nbsp;-&gt;&nbsp;/boot/menu.lst.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN507">[3]</a><br>On&nbsp;some&nbsp;i386&nbsp;machines,&nbsp;it&nbsp;may&nbsp;be&nbsp;necessary&nbsp;for&nbsp;/boot&nbsp;to&nbsp;be&nbsp;located&nbsp;on&nbsp;a&nbsp;separate&nbsp;partition&nbsp;located&nbsp;completely&nbsp;below&nbsp;cylinder&nbsp;1024&nbsp;of&nbsp;the&nbsp;boot&nbsp;device&nbsp;due&nbsp;to&nbsp;hardware&nbsp;constraints.<br>Certain&nbsp;MIPS&nbsp;systems&nbsp;require&nbsp;a&nbsp;/boot&nbsp;partition&nbsp;that&nbsp;is&nbsp;a&nbsp;mounted&nbsp;MS-DOS&nbsp;filesystem&nbsp;or&nbsp;whatever&nbsp;other&nbsp;filesystem&nbsp;type&nbsp;is&nbsp;accessible&nbsp;for&nbsp;the&nbsp;firmware.&nbsp;This&nbsp;may&nbsp;result&nbsp;in&nbsp;restrictions&nbsp;with&nbsp;respect&nbsp;to&nbsp;usable&nbsp;filenames&nbsp;within&nbsp;/boot&nbsp;(only&nbsp;for&nbsp;affected&nbsp;systems).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN534">[4]</a><br>The&nbsp;setup&nbsp;of&nbsp;command&nbsp;scripts&nbsp;invoked&nbsp;at&nbsp;boot&nbsp;time&nbsp;may&nbsp;resemble&nbsp;System&nbsp;V,&nbsp;BSD&nbsp;or&nbsp;other&nbsp;models.&nbsp;Further&nbsp;specification&nbsp;in&nbsp;this&nbsp;area&nbsp;may&nbsp;be&nbsp;added&nbsp;to&nbsp;a&nbsp;future&nbsp;version&nbsp;of&nbsp;this&nbsp;standard.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN540">[5]</a><br>It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;files&nbsp;be&nbsp;stored&nbsp;in&nbsp;subdirectories&nbsp;of&nbsp;/etc&nbsp;rather&nbsp;than&nbsp;directly&nbsp;in&nbsp;/etc.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN581">[6]</a><br>Systems&nbsp;that&nbsp;use&nbsp;the&nbsp;shadow&nbsp;password&nbsp;suite&nbsp;will&nbsp;have&nbsp;additional&nbsp;configuration&nbsp;files&nbsp;in&nbsp;/etc&nbsp;(/etc/shadow&nbsp;and&nbsp;others)&nbsp;and&nbsp;programs&nbsp;in&nbsp;/usr/sbin&nbsp;(useradd[/b],&nbsp;usermod[/b],&nbsp;and&nbsp;others).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN722">[7]</a><br>On&nbsp;some&nbsp;Linux&nbsp;systems,&nbsp;this&nbsp;may&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;/proc/mounts,&nbsp;in&nbsp;which&nbsp;case&nbsp;this&nbsp;exception&nbsp;is&nbsp;not&nbsp;required.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN778">[8]</a><br>/etc/X11/xdm&nbsp;holds&nbsp;the&nbsp;configuration&nbsp;files&nbsp;for&nbsp;xdm.&nbsp;These&nbsp;are&nbsp;most&nbsp;of&nbsp;the&nbsp;files&nbsp;previously&nbsp;found&nbsp;in&nbsp;/usr/lib/X11/xdm.&nbsp;Some&nbsp;local&nbsp;variable&nbsp;data&nbsp;for&nbsp;xdm&nbsp;is&nbsp;stored&nbsp;in&nbsp;/var/lib/xdm.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN808">[9]</a><br>Different&nbsp;people&nbsp;prefer&nbsp;to&nbsp;place&nbsp;user&nbsp;accounts&nbsp;in&nbsp;a&nbsp;variety&nbsp;of&nbsp;places.&nbsp;This&nbsp;section&nbsp;describes&nbsp;only&nbsp;a&nbsp;suggested&nbsp;placement&nbsp;for&nbsp;user&nbsp;home&nbsp;directories;&nbsp;nevertheless&nbsp;we&nbsp;recommend&nbsp;that&nbsp;all&nbsp;FHS-compliant&nbsp;distributions&nbsp;use&nbsp;this&nbsp;as&nbsp;the&nbsp;default&nbsp;location&nbsp;for&nbsp;home&nbsp;directories.<br>On&nbsp;small&nbsp;systems,&nbsp;each&nbsp;user&#39;s&nbsp;directory&nbsp;is&nbsp;typically&nbsp;one&nbsp;of&nbsp;the&nbsp;many&nbsp;subdirectories&nbsp;of&nbsp;/home&nbsp;such&nbsp;as&nbsp;/home/smith,&nbsp;/home/torvalds,&nbsp;/home/operator,&nbsp;etc.&nbsp;On&nbsp;large&nbsp;systems&nbsp;(especially&nbsp;when&nbsp;the&nbsp;/home&nbsp;directories&nbsp;are&nbsp;shared&nbsp;amongst&nbsp;many&nbsp;hosts&nbsp;using&nbsp;NFS)&nbsp;it&nbsp;is&nbsp;useful&nbsp;to&nbsp;subdivide&nbsp;user&nbsp;home&nbsp;directories.&nbsp;Subdivision&nbsp;may&nbsp;be&nbsp;accomplished&nbsp;by&nbsp;using&nbsp;subdirectories&nbsp;such&nbsp;as&nbsp;/home/staff,&nbsp;/home/guests,&nbsp;/home/students,&nbsp;etc.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN819">[10]</a><br>If&nbsp;you&nbsp;want&nbsp;to&nbsp;find&nbsp;out&nbsp;a&nbsp;user&#39;s&nbsp;home&nbsp;directory,&nbsp;you&nbsp;should&nbsp;use&nbsp;the&nbsp;getpwent(3)&nbsp;library&nbsp;function&nbsp;rather&nbsp;than&nbsp;relying&nbsp;on&nbsp;/etc/passwd&nbsp;because&nbsp;user&nbsp;information&nbsp;may&nbsp;be&nbsp;stored&nbsp;remotely&nbsp;using&nbsp;systems&nbsp;such&nbsp;as&nbsp;NIS.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN826">[11]</a><br>It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;apart&nbsp;from&nbsp;autosave&nbsp;and&nbsp;lock&nbsp;files&nbsp;programs&nbsp;should&nbsp;refrain&nbsp;from&nbsp;creating&nbsp;non&nbsp;dot&nbsp;files&nbsp;or&nbsp;directories&nbsp;in&nbsp;a&nbsp;home&nbsp;directory&nbsp;without&nbsp;user&nbsp;intervention.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN836">[12]</a><br>Shared&nbsp;libraries&nbsp;that&nbsp;are&nbsp;only&nbsp;necessary&nbsp;for&nbsp;binaries&nbsp;in&nbsp;/usr&nbsp;(such&nbsp;as&nbsp;any&nbsp;X&nbsp;Window&nbsp;binaries)&nbsp;must&nbsp;not&nbsp;be&nbsp;in&nbsp;/lib.&nbsp;Only&nbsp;the&nbsp;shared&nbsp;libraries&nbsp;required&nbsp;to&nbsp;run&nbsp;binaries&nbsp;in&nbsp;/bin&nbsp;and&nbsp;/sbin&nbsp;may&nbsp;be&nbsp;here.&nbsp;In&nbsp;particular,&nbsp;the&nbsp;library&nbsp;libm.so.*&nbsp;may&nbsp;also&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/lib&nbsp;if&nbsp;it&nbsp;is&nbsp;not&nbsp;required&nbsp;by&nbsp;anything&nbsp;in&nbsp;/bin&nbsp;or&nbsp;/sbin.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN866">[13]</a><br>The&nbsp;usual&nbsp;placement&nbsp;of&nbsp;this&nbsp;binary&nbsp;is&nbsp;/usr/bin/cpp.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN890">[14]</a><br>This&nbsp;is&nbsp;commonly&nbsp;used&nbsp;for&nbsp;64-bit&nbsp;or&nbsp;32-bit&nbsp;support&nbsp;on&nbsp;systems&nbsp;which&nbsp;support&nbsp;multiple&nbsp;binary&nbsp;formats,&nbsp;but&nbsp;require&nbsp;libraries&nbsp;of&nbsp;the&nbsp;same&nbsp;name.&nbsp;In&nbsp;this&nbsp;case,&nbsp;/lib32&nbsp;and&nbsp;/lib64&nbsp;might&nbsp;be&nbsp;the&nbsp;library&nbsp;directories,&nbsp;and&nbsp;/lib&nbsp;a&nbsp;symlink&nbsp;to&nbsp;one&nbsp;of&nbsp;them.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN900">[15]</a><br>/lib/cpp&nbsp;is&nbsp;still&nbsp;permitted:&nbsp;this&nbsp;allows&nbsp;the&nbsp;case&nbsp;where&nbsp;/lib&nbsp;and&nbsp;/lib&nbsp;are&nbsp;the&nbsp;same&nbsp;(one&nbsp;is&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;the&nbsp;other).&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN947">[16]</a><br>A&nbsp;compliant&nbsp;implementation&nbsp;with&nbsp;two&nbsp;CDROM&nbsp;drives&nbsp;might&nbsp;have&nbsp;/media/cdrom0&nbsp;and&nbsp;/media/cdrom1&nbsp;with&nbsp;/media/cdrom&nbsp;a&nbsp;symlink&nbsp;to&nbsp;either&nbsp;of&nbsp;these.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1037">[17]</a><br>If&nbsp;the&nbsp;home&nbsp;directory&nbsp;of&nbsp;the&nbsp;root&nbsp;account&nbsp;is&nbsp;not&nbsp;stored&nbsp;on&nbsp;the&nbsp;root&nbsp;partition&nbsp;it&nbsp;will&nbsp;be&nbsp;necessary&nbsp;to&nbsp;make&nbsp;certain&nbsp;it&nbsp;will&nbsp;default&nbsp;to&nbsp;/&nbsp;if&nbsp;it&nbsp;can&nbsp;not&nbsp;be&nbsp;located.<br>We&nbsp;recommend&nbsp;against&nbsp;using&nbsp;the&nbsp;root&nbsp;account&nbsp;for&nbsp;tasks&nbsp;that&nbsp;can&nbsp;be&nbsp;performed&nbsp;as&nbsp;an&nbsp;unprivileged&nbsp;user,&nbsp;and&nbsp;that&nbsp;it&nbsp;be&nbsp;used&nbsp;solely&nbsp;for&nbsp;system&nbsp;administration.&nbsp;For&nbsp;this&nbsp;reason,&nbsp;we&nbsp;recommend&nbsp;that&nbsp;subdirectories&nbsp;for&nbsp;mail&nbsp;and&nbsp;other&nbsp;applications&nbsp;not&nbsp;appear&nbsp;in&nbsp;the&nbsp;root&nbsp;account&#39;s&nbsp;home&nbsp;directory,&nbsp;and&nbsp;that&nbsp;mail&nbsp;for&nbsp;administration&nbsp;roles&nbsp;such&nbsp;as&nbsp;root,&nbsp;postmaster,&nbsp;and&nbsp;webmaster&nbsp;be&nbsp;forwarded&nbsp;to&nbsp;an&nbsp;appropriate&nbsp;user.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1051">[18]</a><br>Originally,&nbsp;/sbin&nbsp;binaries&nbsp;were&nbsp;kept&nbsp;in&nbsp;/etc.&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1058">[19]</a><br>Deciding&nbsp;what&nbsp;things&nbsp;go&nbsp;into&nbsp;&quot;sbin&quot;[/i]&nbsp;directories&nbsp;is&nbsp;simple:&nbsp;if&nbsp;a&nbsp;normal&nbsp;(not&nbsp;a&nbsp;system&nbsp;administrator)&nbsp;user&nbsp;will&nbsp;ever&nbsp;run&nbsp;it&nbsp;directly,&nbsp;then&nbsp;it&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;one&nbsp;of&nbsp;the&nbsp;&quot;bin&quot;[/i]&nbsp;directories.&nbsp;Ordinary&nbsp;users&nbsp;should&nbsp;not&nbsp;have&nbsp;to&nbsp;place&nbsp;any&nbsp;of&nbsp;the&nbsp;sbin&nbsp;directories&nbsp;in&nbsp;their&nbsp;path.<br>For&nbsp;example,&nbsp;files&nbsp;such&nbsp;as&nbsp;chfn[/b]&nbsp;which&nbsp;users&nbsp;only&nbsp;occasionally&nbsp;use&nbsp;must&nbsp;still&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/bin.&nbsp;ping[/b],&nbsp;although&nbsp;it&nbsp;is&nbsp;absolutely&nbsp;necessary&nbsp;for&nbsp;root&nbsp;(network&nbsp;recovery&nbsp;and&nbsp;diagnosis)&nbsp;is&nbsp;often&nbsp;used&nbsp;by&nbsp;users&nbsp;and&nbsp;must&nbsp;live&nbsp;in&nbsp;/bin&nbsp;for&nbsp;that&nbsp;reason.<br>We&nbsp;recommend&nbsp;that&nbsp;users&nbsp;have&nbsp;read&nbsp;and&nbsp;execute&nbsp;permission&nbsp;for&nbsp;everything&nbsp;in&nbsp;/sbin&nbsp;except,&nbsp;perhaps,&nbsp;certain&nbsp;setuid&nbsp;and&nbsp;setgid&nbsp;programs.&nbsp;The&nbsp;division&nbsp;between&nbsp;/bin&nbsp;and&nbsp;/sbin&nbsp;was&nbsp;not&nbsp;created&nbsp;for&nbsp;security&nbsp;reasons&nbsp;or&nbsp;to&nbsp;prevent&nbsp;users&nbsp;from&nbsp;seeing&nbsp;the&nbsp;operating&nbsp;system,&nbsp;but&nbsp;to&nbsp;provide&nbsp;a&nbsp;good&nbsp;partition&nbsp;between&nbsp;binaries&nbsp;that&nbsp;everyone&nbsp;uses&nbsp;and&nbsp;ones&nbsp;that&nbsp;are&nbsp;primarily&nbsp;used&nbsp;for&nbsp;administration&nbsp;tasks.&nbsp;There&nbsp;is&nbsp;no&nbsp;inherent&nbsp;security&nbsp;advantage&nbsp;in&nbsp;making&nbsp;/sbin&nbsp;off-limits&nbsp;for&nbsp;users.&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1192">[20]</a><br>This&nbsp;is&nbsp;particularly&nbsp;important&nbsp;as&nbsp;these&nbsp;areas&nbsp;will&nbsp;often&nbsp;contain&nbsp;both&nbsp;files&nbsp;initially&nbsp;installed&nbsp;by&nbsp;the&nbsp;distributor,&nbsp;and&nbsp;those&nbsp;added&nbsp;by&nbsp;the&nbsp;administrator.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1299">[21]</a><br>Examples&nbsp;of&nbsp;such&nbsp;configuration&nbsp;files&nbsp;include&nbsp;Xconfig,&nbsp;XF86Config,&nbsp;or&nbsp;system.twmrc)<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1389">[22]</a><br>Miscellaneous&nbsp;architecture-independent&nbsp;application-specific&nbsp;static&nbsp;files&nbsp;and&nbsp;subdirectories&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/share.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1394">[23]</a><br>For&nbsp;example,&nbsp;the&nbsp;perl5&nbsp;subdirectory&nbsp;for&nbsp;Perl&nbsp;5&nbsp;modules&nbsp;and&nbsp;libraries.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1402">[24]</a><br>Some&nbsp;executable&nbsp;commands&nbsp;such&nbsp;as&nbsp;makewhatis[/b]&nbsp;and&nbsp;sendmail[/b]&nbsp;have&nbsp;also&nbsp;been&nbsp;traditionally&nbsp;placed&nbsp;in&nbsp;/usr/lib.&nbsp;makewhatis[/b]&nbsp;is&nbsp;an&nbsp;internal&nbsp;binary&nbsp;and&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;a&nbsp;binary&nbsp;directory;&nbsp;users&nbsp;access&nbsp;only&nbsp;catman[/b].&nbsp;Newer&nbsp;sendmail[/b]&nbsp;binaries&nbsp;are&nbsp;now&nbsp;placed&nbsp;by&nbsp;default&nbsp;in&nbsp;/usr/sbin.&nbsp;Additionally,&nbsp;systems&nbsp;using&nbsp;a&nbsp;sendmail[/i]-compatible&nbsp;mail&nbsp;transfer&nbsp;agent&nbsp;must&nbsp;provide&nbsp;/usr/sbin/sendmail[/b]&nbsp;as&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;the&nbsp;appropriate&nbsp;executable.&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1418">[25]</a><br>Host-specific&nbsp;data&nbsp;for&nbsp;the&nbsp;X&nbsp;Window&nbsp;System&nbsp;must&nbsp;not&nbsp;be&nbsp;stored&nbsp;in&nbsp;/usr/lib/X11.&nbsp;Host-specific&nbsp;configuration&nbsp;files&nbsp;such&nbsp;as&nbsp;Xconfig&nbsp;or&nbsp;XF86Config&nbsp;must&nbsp;be&nbsp;stored&nbsp;in&nbsp;/etc/X11.&nbsp;This&nbsp;includes&nbsp;configuration&nbsp;data&nbsp;such&nbsp;as&nbsp;system.twmrc&nbsp;even&nbsp;if&nbsp;it&nbsp;is&nbsp;only&nbsp;made&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;a&nbsp;more&nbsp;global&nbsp;configuration&nbsp;file&nbsp;(probably&nbsp;in&nbsp;/usr/X11R6/lib/X11).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1435">[26]</a><br>The&nbsp;case&nbsp;where&nbsp;/usr/lib&nbsp;and&nbsp;/usr/lib&nbsp;are&nbsp;the&nbsp;same&nbsp;(one&nbsp;is&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;the&nbsp;other)&nbsp;these&nbsp;files&nbsp;and&nbsp;the&nbsp;per-application&nbsp;subdirectories&nbsp;will&nbsp;exist.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1450">[27]</a><br>Software&nbsp;placed&nbsp;in&nbsp;/&nbsp;or&nbsp;/usr&nbsp;may&nbsp;be&nbsp;overwritten&nbsp;by&nbsp;system&nbsp;upgrades&nbsp;(though&nbsp;we&nbsp;recommend&nbsp;that&nbsp;distributions&nbsp;do&nbsp;not&nbsp;overwrite&nbsp;data&nbsp;in&nbsp;/etc&nbsp;under&nbsp;these&nbsp;circumstances).&nbsp;For&nbsp;this&nbsp;reason,&nbsp;local&nbsp;software&nbsp;must&nbsp;not&nbsp;be&nbsp;placed&nbsp;outside&nbsp;of&nbsp;/usr/local&nbsp;without&nbsp;good&nbsp;reason.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1530">[28]</a><br>/usr/local/man&nbsp;may&nbsp;be&nbsp;deprecated&nbsp;in&nbsp;future&nbsp;FHS&nbsp;releases,&nbsp;so&nbsp;if&nbsp;all&nbsp;else&nbsp;is&nbsp;equal,&nbsp;making&nbsp;that&nbsp;one&nbsp;a&nbsp;symlink&nbsp;seems&nbsp;sensible.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1540">[29]</a><br>Locally&nbsp;installed&nbsp;system&nbsp;administration&nbsp;programs&nbsp;should&nbsp;be&nbsp;placed&nbsp;in&nbsp;/usr/local/sbin.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1550">[30]</a><br>Much&nbsp;of&nbsp;this&nbsp;data&nbsp;originally&nbsp;lived&nbsp;in&nbsp;/usr&nbsp;(man,&nbsp;doc)&nbsp;or&nbsp;/usr/lib&nbsp;(dict,&nbsp;terminfo,&nbsp;zoneinfo).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1701">[31]</a><br>Obviously,&nbsp;there&nbsp;are&nbsp;no&nbsp;manual&nbsp;pages&nbsp;in&nbsp;/&nbsp;because&nbsp;they&nbsp;are&nbsp;not&nbsp;required&nbsp;at&nbsp;boot&nbsp;time&nbsp;nor&nbsp;are&nbsp;they&nbsp;required&nbsp;in&nbsp;emergencies.&nbsp;Really.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1741">[32]</a><br>For&nbsp;example,&nbsp;if&nbsp;/usr/local/man&nbsp;has&nbsp;no&nbsp;manual&nbsp;pages&nbsp;in&nbsp;section&nbsp;4&nbsp;(Devices),&nbsp;then&nbsp;/usr/local/man/man4&nbsp;may&nbsp;be&nbsp;omitted.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1797">[33]</a><br>A&nbsp;major&nbsp;exception&nbsp;to&nbsp;this&nbsp;rule&nbsp;is&nbsp;the&nbsp;United&nbsp;Kingdom,&nbsp;which&nbsp;is&nbsp;`GB&#39;&nbsp;in&nbsp;the&nbsp;ISO&nbsp;3166,&nbsp;but&nbsp;`UK&#39;&nbsp;for&nbsp;most&nbsp;email&nbsp;addresses.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN1944">[34]</a><br>Some&nbsp;such&nbsp;files&nbsp;include:&nbsp;airport,&nbsp;birthtoken,&nbsp;eqnchar,&nbsp;getopt,&nbsp;gprof.callg,&nbsp;gprof.flat,&nbsp;inter.phone,&nbsp;ipfw.samp.filters,&nbsp;ipfw.samp.scripts,&nbsp;keycap.pcvt,&nbsp;mail.help,&nbsp;mail.tildehelp,&nbsp;man.template,&nbsp;map3270,&nbsp;mdoc.template,&nbsp;more.help,&nbsp;na.phone,&nbsp;nslookup.help,&nbsp;operator,&nbsp;scsi_modes,&nbsp;sendmail.hf,&nbsp;style,&nbsp;units.lib,&nbsp;vgrindefs,&nbsp;vgrindefs.db,&nbsp;zipcodes&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2042">[35]</a><br>Generally,&nbsp;source&nbsp;should&nbsp;not&nbsp;be&nbsp;built&nbsp;within&nbsp;this&nbsp;hierarchy.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2209">[36]</a><br>This&nbsp;standard&nbsp;does&nbsp;not&nbsp;currently&nbsp;incorporate&nbsp;the&nbsp;TeX&nbsp;Directory&nbsp;Structure&nbsp;(a&nbsp;document&nbsp;that&nbsp;describes&nbsp;the&nbsp;layout&nbsp;TeX&nbsp;files&nbsp;and&nbsp;directories),&nbsp;but&nbsp;it&nbsp;may&nbsp;be&nbsp;useful&nbsp;reading.&nbsp;It&nbsp;is&nbsp;located&nbsp;at&nbsp;<a target="_blank" href="ftp://ctan.tug.org/tex/">ftp://ctan.tug.org/tex/</a><br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2244">[37]</a><br>For&nbsp;example,&nbsp;/usr/share/man/man1/ls.1&nbsp;is&nbsp;formatted&nbsp;into&nbsp;/var/cache/man/cat1/ls.1,&nbsp;and&nbsp;/usr/X11R6/man//man3/XtClass.3x&nbsp;into&nbsp;/var/cache/man/X11R6//cat3/XtClass.3x.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2295">[38]</a><br>An&nbsp;important&nbsp;difference&nbsp;between&nbsp;this&nbsp;version&nbsp;of&nbsp;this&nbsp;standard&nbsp;and&nbsp;previous&nbsp;ones&nbsp;is&nbsp;that&nbsp;applications&nbsp;are&nbsp;now&nbsp;required&nbsp;to&nbsp;use&nbsp;a&nbsp;subdirectory&nbsp;of&nbsp;/var/lib.&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2381">[39]</a><br>This&nbsp;hierarchy&nbsp;should&nbsp;contain&nbsp;files&nbsp;stored&nbsp;in&nbsp;/var/db&nbsp;in&nbsp;current&nbsp;BSD&nbsp;releases.&nbsp;These&nbsp;include&nbsp;locate.database&nbsp;and&nbsp;mountdtab,&nbsp;and&nbsp;the&nbsp;kernel&nbsp;symbol&nbsp;database(s).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2396">[40]</a><br>Then,&nbsp;anything&nbsp;wishing&nbsp;to&nbsp;use&nbsp;/dev/ttyS0&nbsp;can&nbsp;read&nbsp;the&nbsp;lock&nbsp;file&nbsp;and&nbsp;act&nbsp;accordingly&nbsp;(all&nbsp;locks&nbsp;in&nbsp;/var/lock&nbsp;should&nbsp;be&nbsp;world-readable).<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2437">[41]</a><br>Note&nbsp;that&nbsp;/var/mail&nbsp;may&nbsp;be&nbsp;a&nbsp;symbolic&nbsp;link&nbsp;to&nbsp;another&nbsp;directory.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2469">[42]</a><br>/var/run&nbsp;should&nbsp;be&nbsp;unwritable&nbsp;for&nbsp;unprivileged&nbsp;users&nbsp;(root&nbsp;or&nbsp;users&nbsp;running&nbsp;daemons);&nbsp;it&nbsp;is&nbsp;a&nbsp;major&nbsp;security&nbsp;problem&nbsp;if&nbsp;any&nbsp;user&nbsp;can&nbsp;write&nbsp;in&nbsp;this&nbsp;directory.<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2493">[43]</a><br>UUCP&nbsp;lock&nbsp;files&nbsp;must&nbsp;be&nbsp;placed&nbsp;in&nbsp;/var/lock.&nbsp;See&nbsp;the&nbsp;above&nbsp;section&nbsp;on&nbsp;/var/lock.&nbsp;<br><a target="_blank" href="http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2582">[44]</a><br>NIS&nbsp;should&nbsp;not&nbsp;be&nbsp;confused&nbsp;with&nbsp;Sun&nbsp;NIS+,&nbsp;which&nbsp;uses&nbsp;a&nbsp;different&nbsp;directory,&nbsp;/var/nis.]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1639</link><dc:subject>技术文摘</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-12 16:20:07</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1638"><title>Error 500.13 (Server too busy) 解决方案</title><description><![CDATA[Error&nbsp;500.13&nbsp;(Server&nbsp;too&nbsp;busy)&nbsp;with&nbsp;many&nbsp;sites&nbsp;on&nbsp;one&nbsp;machine&nbsp;<br><br>There&nbsp;are&nbsp;4&nbsp;main&nbsp;reasons&nbsp;in&nbsp;IIS&nbsp;6&nbsp;why&nbsp;the&nbsp;Server&nbsp;Too&nbsp;Busy&nbsp;error&nbsp;will&nbsp;be&nbsp;displayed&nbsp;<br>in&nbsp;response&nbsp;to&nbsp;an&nbsp;ASP&nbsp;request:<br>]]></description><content:encoded><![CDATA[Error&nbsp;500.13&nbsp;(Server&nbsp;too&nbsp;busy)&nbsp;with&nbsp;many&nbsp;sites&nbsp;on&nbsp;one&nbsp;machine&nbsp;<br><br>There&nbsp;are&nbsp;4&nbsp;main&nbsp;reasons&nbsp;in&nbsp;IIS&nbsp;6&nbsp;why&nbsp;the&nbsp;Server&nbsp;Too&nbsp;Busy&nbsp;error&nbsp;will&nbsp;be&nbsp;displayed&nbsp;<br>in&nbsp;response&nbsp;to&nbsp;an&nbsp;ASP&nbsp;request:<br><br>1)&nbsp;The&nbsp;application&nbsp;pool&#39;s&nbsp;ASP&nbsp;queue&nbsp;is&nbsp;full&nbsp;(or&nbsp;in&nbsp;other&nbsp;words,&nbsp;the&nbsp;metabase&nbsp;value&nbsp;<br>ASPRequestQueueMax&nbsp;has&nbsp;been&nbsp;reached)<br><br>2)&nbsp;A&nbsp;new&nbsp;App&nbsp;Pool&nbsp;cannot&nbsp;be&nbsp;spawned&nbsp;due&nbsp;to&nbsp;OS&nbsp;process&nbsp;limits&nbsp;(or&nbsp;in&nbsp;other&nbsp;words,&nbsp;we&nbsp;<br>have&nbsp;reached&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;concurrently&nbsp;running&nbsp;application&nbsp;pools.<br><br>3)&nbsp;An&nbsp;ASP&nbsp;request&nbsp;has&nbsp;been&nbsp;in&nbsp;the&nbsp;ASP&nbsp;queue&nbsp;longer&nbsp;than&nbsp;the&nbsp;value&nbsp;set&nbsp;for&nbsp;the&nbsp;<br>metabase&nbsp;key&nbsp;ASPQueueTimeout<br><br>4)&nbsp;We&nbsp;have&nbsp;run&nbsp;out&nbsp;of&nbsp;desktop&nbsp;heap.<br><br>I&nbsp;would&nbsp;take&nbsp;a&nbsp;Hang&nbsp;dump&nbsp;using&nbsp;DebugDiag&nbsp;tool&nbsp;and&nbsp;see&nbsp;what&nbsp;is&nbsp;happening&nbsp;and&nbsp;why&nbsp;the&nbsp;requests&nbsp;are&nbsp;taking&nbsp;long&nbsp;time&nbsp;to&nbsp;execute.&nbsp;Normally&nbsp;this&nbsp;would&nbsp;turn&nbsp;out&nbsp;to&nbsp;be&nbsp;code&nbsp;issue.<br><br>Important&nbsp;:&nbsp;Are&nbsp;you&nbsp;running&nbsp;these&nbsp;sites&nbsp;in&nbsp;Seperate&nbsp;app&nbsp;pools&nbsp;or&nbsp;1&nbsp;single&nbsp;app&nbsp;pool?&nbsp;If&nbsp;they&nbsp;are&nbsp;in&nbsp;single&nbsp;pool,&nbsp;then&nbsp;try&nbsp;seperating&nbsp;them&nbsp;in&nbsp;different&nbsp;app&nbsp;pool.<br><br>Another&nbsp;thing&nbsp;is&nbsp;system&nbsp;resources,&nbsp;are&nbsp;you&nbsp;running&nbsp;many&nbsp;products&nbsp;like&nbsp;SQL/Exchange&nbsp;on&nbsp;the&nbsp;same&nbsp;box&nbsp;as&nbsp;IIS&nbsp;and&nbsp;also&nbsp;are&nbsp;they&nbsp;any&nbsp;third&nbsp;party&nbsp;apps,&nbsp;many&nbsp;processes&nbsp;running&nbsp;on&nbsp;this&nbsp;box?&nbsp;If&nbsp;there&nbsp;are&nbsp;many&nbsp;processes&nbsp;running&nbsp;it&nbsp;might&nbsp;cause&nbsp;desktop&nbsp;heap&nbsp;issue.&nbsp;you&nbsp;could&nbsp;use&nbsp;Dheapmonitor&nbsp;and&nbsp;see&nbsp;if&nbsp;there&nbsp;is&nbsp;enough&nbsp;desktop&nbsp;heap&nbsp;available&nbsp;to&nbsp;spwan&nbsp;a&nbsp;new&nbsp;process.<br><br>***********************************************************<br><br>I&nbsp;wanted&nbsp;to&nbsp;post&nbsp;the&nbsp;solution&nbsp;to&nbsp;this&nbsp;problem&nbsp;as&nbsp;it&nbsp;cost&nbsp;me&nbsp;a&nbsp;$300&nbsp;call&nbsp;to&nbsp;MS&nbsp;tech&nbsp;support&nbsp;to&nbsp;find&nbsp;the&nbsp;answer.&nbsp;The&nbsp;fix&nbsp;is&nbsp;very&nbsp;simple&nbsp;and&nbsp;is&nbsp;applicable&nbsp;to&nbsp;MANY&nbsp;other&nbsp;situations&nbsp;on&nbsp;nearly&nbsp;every&nbsp;recent&nbsp;windows&nbsp;OS.&nbsp;Basically&nbsp;I&nbsp;was&nbsp;running&nbsp;out&nbsp;of&nbsp;non-interactive&nbsp;desktop&nbsp;heap&nbsp;even&nbsp;though&nbsp;I&nbsp;had&nbsp;a&nbsp;vast&nbsp;surplus&nbsp;of&nbsp;memory.&nbsp;The&nbsp;reason&nbsp;for&nbsp;this&nbsp;is&nbsp;that&nbsp;every&nbsp;single&nbsp;version&nbsp;of&nbsp;windows&nbsp;is&nbsp;CRIPPLED&nbsp;by&nbsp;default&nbsp;with&nbsp;very&nbsp;restrictive&nbsp;heap&nbsp;limits&nbsp;which&nbsp;make&nbsp;absolutely&nbsp;no&nbsp;sense&nbsp;even&nbsp;for&nbsp;hardware&nbsp;from&nbsp;5&nbsp;or&nbsp;10&nbsp;years&nbsp;ago.&nbsp;There&nbsp;are&nbsp;2&nbsp;things&nbsp;you&nbsp;can&nbsp;do&nbsp;to&nbsp;fix&nbsp;this.&nbsp;First,&nbsp;you&nbsp;can&nbsp;increase&nbsp;the&nbsp;maximum&nbsp;total&nbsp;heap&nbsp;size&nbsp;using&nbsp;the&nbsp;following&nbsp;steps:<br><br>1.&nbsp;&nbsp;Start&nbsp;Registry&nbsp;Editor.<br><br>2.&nbsp;&nbsp;Locate&nbsp;and&nbsp;then&nbsp;click&nbsp;the&nbsp;following&nbsp;registry&nbsp;subkey:<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session&nbsp;Manager\Memory&nbsp;Management<br><br>3.&nbsp;&nbsp;Configure&nbsp;the&nbsp;following&nbsp;entries:<br><br><div class="code_main">Name:&nbsp;SessionViewSize<br>Data&nbsp;Type:&nbsp;REG_DWORD<br>Value&nbsp;data:&nbsp;120&nbsp;(decimal)</div><br><br>4.&nbsp;&nbsp;Configure&nbsp;the&nbsp;following&nbsp;entries:<br><br><div class="code_main">Name:&nbsp;SessionPoolSize<br>Data&nbsp;Type:&nbsp;REG_DWORD<br>Value&nbsp;data:&nbsp;60&nbsp;(decimal)</div><br><br>That&nbsp;alone&nbsp;will&nbsp;not&nbsp;fix&nbsp;the&nbsp;problem&nbsp;because&nbsp;now&nbsp;you&nbsp;need&nbsp;to&nbsp;increase&nbsp;the&nbsp;limits&nbsp;on&nbsp;the&nbsp;specific&nbsp;sections&nbsp;of&nbsp;the&nbsp;desktop&nbsp;heap,&nbsp;namely&nbsp;the&nbsp;Interactive&nbsp;and&nbsp;Non-Interactive&nbsp;parts:<br><br>1.&nbsp;&nbsp;Start&nbsp;Registry&nbsp;Editor.<br><br>2.&nbsp;&nbsp;Locate&nbsp;and&nbsp;then&nbsp;click&nbsp;the&nbsp;following&nbsp;registry&nbsp;subkey:<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session&nbsp;Manager\Subsytems<br><br>3.&nbsp;&nbsp;Find&nbsp;the&nbsp;value&nbsp;in&nbsp;this&nbsp;key&nbsp;called&nbsp;Windows,&nbsp;it&nbsp;will&nbsp;be&nbsp;a&nbsp;long&nbsp;string&nbsp;of&nbsp;name-value&nbsp;pairs&nbsp;that&nbsp;looks&nbsp;something&nbsp;like&nbsp;this:<br><br><div class="code_main">&nbsp;%SystemRoot%\system32\csrss.exe&nbsp;ObjectDirectory=\Windows&nbsp;SharedSection=1024,3072,512&nbsp;Windows=On&nbsp;SubSystemType=Windows&nbsp;ServerDll=basesrv,1&nbsp;ServerDll=winsrv:UserServerDllInitialization,3&nbsp;ServerDll=winsrv:ConServerDllInitialization,2&nbsp;ProfileControl=Off&nbsp;MaxRequestThreads=16</div><br><br>The&nbsp;portion&nbsp;of&nbsp;this&nbsp;section&nbsp;that&nbsp;we&#39;re&nbsp;interested&nbsp;in&nbsp;is&nbsp;the&nbsp;&quot;SharedSection=1024,3072,512&quot;&nbsp;part.&nbsp;Those&nbsp;3&nbsp;numbers&nbsp;define,&nbsp;in&nbsp;kb,&nbsp;the&nbsp;size&nbsp;of&nbsp;various&nbsp;specific&nbsp;heap&nbsp;limits&nbsp;in&nbsp;this&nbsp;order:&nbsp;global,&nbsp;interactive,&nbsp;non-interactive.&nbsp;You&nbsp;most&nbsp;likely&nbsp;will&nbsp;not&nbsp;ever&nbsp;need&nbsp;to&nbsp;mess&nbsp;with&nbsp;the&nbsp;first&nbsp;one&nbsp;(global).&nbsp;<br><br>The&nbsp;third&nbsp;(non-interactive)&nbsp;value&nbsp;is&nbsp;the&nbsp;one&nbsp;that&nbsp;enabled&nbsp;me&nbsp;to&nbsp;host&nbsp;hundreds/thousands&nbsp;of&nbsp;sites&nbsp;on&nbsp;a&nbsp;single&nbsp;server&nbsp;without&nbsp;getting&nbsp;the&nbsp;500.13&nbsp;errors.&nbsp;If&nbsp;you&#39;re&nbsp;running&nbsp;more&nbsp;than&nbsp;about&nbsp;60-80&nbsp;IIS&nbsp;websites&nbsp;and&nbsp;getting&nbsp;those&nbsp;500.13&#39;s&nbsp;like&nbsp;I&nbsp;was,&nbsp;you&nbsp;need&nbsp;to&nbsp;increase&nbsp;this&nbsp;number.&nbsp;I&nbsp;increased&nbsp;it&nbsp;to&nbsp;8192&nbsp;on&nbsp;my&nbsp;server&nbsp;(an&nbsp;8-core&nbsp;dual&nbsp;xeon&nbsp;with&nbsp;8&nbsp;GB&nbsp;RAM)&nbsp;and&nbsp;am&nbsp;now&nbsp;able&nbsp;to&nbsp;run&nbsp;more&nbsp;websites&nbsp;on&nbsp;that&nbsp;one&nbsp;machine&nbsp;than&nbsp;I&nbsp;was&nbsp;able&nbsp;to&nbsp;run&nbsp;on&nbsp;6&nbsp;separate&nbsp;windows&nbsp;servers&nbsp;without&nbsp;the&nbsp;adjustment.&nbsp;Needless&nbsp;to&nbsp;say&nbsp;this&nbsp;clever&nbsp;limitation&nbsp;is&nbsp;making&nbsp;MS&nbsp;a&nbsp;lot&nbsp;of&nbsp;$$$&nbsp;and&nbsp;I&nbsp;am&nbsp;living&nbsp;proof.&nbsp;I&nbsp;bought&nbsp;6&nbsp;copies&nbsp;of&nbsp;server&nbsp;2k3&nbsp;x64&nbsp;when&nbsp;I&nbsp;could&nbsp;have&nbsp;done&nbsp;it&nbsp;with&nbsp;1!&nbsp;In&nbsp;light&nbsp;of&nbsp;this&nbsp;and&nbsp;hardware&nbsp;costs&nbsp;the&nbsp;$300&nbsp;it&nbsp;cost&nbsp;me&nbsp;to&nbsp;find&nbsp;out&nbsp;was&nbsp;well&nbsp;worth&nbsp;it.<br><br>The&nbsp;second&nbsp;(interactive)&nbsp;value&nbsp;can&nbsp;be&nbsp;increased&nbsp;to&nbsp;allow&nbsp;you&nbsp;to&nbsp;scale&nbsp;your&nbsp;usage&nbsp;of&nbsp;interactive&nbsp;desktop&nbsp;heap,&nbsp;or&nbsp;in&nbsp;other&nbsp;words&nbsp;you&nbsp;can&nbsp;now&nbsp;run&nbsp;way&nbsp;more&nbsp;windows&nbsp;desktop&nbsp;apps&nbsp;simultaneously.&nbsp;I&nbsp;found&nbsp;this&nbsp;to&nbsp;be&nbsp;of&nbsp;particular&nbsp;value&nbsp;on&nbsp;a&nbsp;windows&nbsp;xp&nbsp;machine&nbsp;that&nbsp;I&nbsp;was&nbsp;trying&nbsp;to&nbsp;run&nbsp;many&nbsp;(100+)&nbsp;copies&nbsp;of&nbsp;the&nbsp;same&nbsp;app.&nbsp;After&nbsp;a&nbsp;certain&nbsp;points&nbsp;the&nbsp;instances&nbsp;would&nbsp;become&nbsp;unstable&nbsp;and&nbsp;could&nbsp;not&nbsp;spawn&nbsp;any&nbsp;more&nbsp;processes.&nbsp;I&nbsp;increased&nbsp;the&nbsp;middle&nbsp;value&nbsp;and&nbsp;the&nbsp;limit&nbsp;was&nbsp;lifted.<br><br>After&nbsp;adjusting&nbsp;these&nbsp;numbers&nbsp;reboot&nbsp;your&nbsp;machine&nbsp;and&nbsp;do&nbsp;performance&nbsp;tests&nbsp;to&nbsp;verify&nbsp;that&nbsp;you&nbsp;are&nbsp;now&nbsp;able&nbsp;to&nbsp;run&nbsp;everything&nbsp;without&nbsp;problems.&nbsp;Increasing&nbsp;the&nbsp;individual&nbsp;numbers&nbsp;too&nbsp;much&nbsp;can&nbsp;make&nbsp;you&nbsp;use&nbsp;up&nbsp;too&nbsp;much&nbsp;memory&nbsp;and&nbsp;eventually&nbsp;hit&nbsp;that&nbsp;total&nbsp;heap&nbsp;maximum&nbsp;we&nbsp;adjusted&nbsp;in&nbsp;the&nbsp;first&nbsp;part&nbsp;(which&nbsp;is&nbsp;why&nbsp;we&nbsp;increased&nbsp;it&nbsp;to&nbsp;help&nbsp;prevent&nbsp;this&nbsp;from&nbsp;happening.)&nbsp;I&nbsp;suggest&nbsp;increasing&nbsp;in&nbsp;2&nbsp;MB&nbsp;increments&nbsp;until&nbsp;you&nbsp;hit&nbsp;a&nbsp;point&nbsp;where&nbsp;you&nbsp;are&nbsp;no&nbsp;longer&nbsp;hitting&nbsp;those&nbsp;limits,&nbsp;but&nbsp;don&#39;t&nbsp;push&nbsp;it&nbsp;much&nbsp;further&nbsp;than&nbsp;you&nbsp;need&nbsp;to.&nbsp;As&nbsp;I&nbsp;mentioned&nbsp;before,&nbsp;I&#39;m&nbsp;having&nbsp;no&nbsp;problems&nbsp;with&nbsp;my&nbsp;numbers&nbsp;set&nbsp;to&nbsp;1024,10240,8192&nbsp;and&nbsp;can&nbsp;run&nbsp;over&nbsp;600&nbsp;websites&nbsp;(and&nbsp;probably&nbsp;thousands&nbsp;more)&nbsp;without&nbsp;a&nbsp;hitch.<br><br>I&nbsp;find&nbsp;it&nbsp;hard&nbsp;to&nbsp;believe&nbsp;that&nbsp;I&#39;ve&nbsp;never&nbsp;run&nbsp;across&nbsp;anything&nbsp;on&nbsp;the&nbsp;web&nbsp;that&nbsp;really&nbsp;talks&nbsp;about&nbsp;the&nbsp;significance&nbsp;of&nbsp;these&nbsp;numbers&nbsp;and&nbsp;what&nbsp;a&nbsp;massive&nbsp;artificially-imposed&nbsp;limitation&nbsp;they&nbsp;are&nbsp;on&nbsp;the&nbsp;windows&nbsp;platform.&nbsp;There&nbsp;are&nbsp;a&nbsp;couple&nbsp;of&nbsp;reference&nbsp;pages&nbsp;here&nbsp;and&nbsp;there&nbsp;which&nbsp;talk&nbsp;about&nbsp;adjusting&nbsp;the&nbsp;heap&nbsp;but&nbsp;they&nbsp;carefully&nbsp;avoid&nbsp;talking&nbsp;in&nbsp;detail&nbsp;about&nbsp;the&nbsp;real-world&nbsp;implications.&nbsp;Also&nbsp;I&nbsp;did&nbsp;see&nbsp;in&nbsp;at&nbsp;least&nbsp;one&nbsp;or&nbsp;two&nbsp;places&nbsp;people&nbsp;posting&nbsp;on&nbsp;forums&nbsp;who&nbsp;had&nbsp;the&nbsp;exact&nbsp;same&nbsp;problem/scenario&nbsp;as&nbsp;me&nbsp;but&nbsp;they&nbsp;never&nbsp;got&nbsp;the&nbsp;answer&nbsp;they&nbsp;needed&nbsp;and&nbsp;NOWHERE&nbsp;on&nbsp;the&nbsp;web&nbsp;have&nbsp;I&nbsp;ever&nbsp;been&nbsp;able&nbsp;to&nbsp;find&nbsp;a&nbsp;link&nbsp;between&nbsp;the&nbsp;500.13&nbsp;problem&nbsp;(which&nbsp;plagues&nbsp;even&nbsp;2k8&nbsp;servers)&nbsp;and&nbsp;the&nbsp;desktop&nbsp;heap&nbsp;adjustments&nbsp;fix&nbsp;to&nbsp;it.&nbsp;Also&nbsp;I&nbsp;haven&#39;t&nbsp;found&nbsp;any&nbsp;page&nbsp;at&nbsp;all&nbsp;which&nbsp;really&nbsp;explains,&nbsp;&nbsp;in&nbsp;a&nbsp;way&nbsp;that&nbsp;most&nbsp;people&nbsp;would&nbsp;find&nbsp;useful,&nbsp;how&nbsp;to&nbsp;go&nbsp;about&nbsp;tweaking&nbsp;these&nbsp;numbers&nbsp;to&nbsp;your&nbsp;particular&nbsp;situation.&nbsp;<br><br>To&nbsp;most&nbsp;home&nbsp;users&nbsp;this&nbsp;is&nbsp;probably&nbsp;no&nbsp;big&nbsp;deal&nbsp;but&nbsp;for&nbsp;we&nbsp;business&nbsp;users&nbsp;who&nbsp;are&nbsp;trying&nbsp;to&nbsp;maximize&nbsp;our&nbsp;performance&nbsp;and&nbsp;fully&nbsp;take&nbsp;advantage&nbsp;of&nbsp;new&nbsp;hardware&nbsp;(especially&nbsp;those&nbsp;doing&nbsp;windows&nbsp;web&nbsp;hosting),&nbsp;this&nbsp;heap&nbsp;issue&nbsp;is&nbsp;massively&nbsp;important.&nbsp;Personally&nbsp;I&nbsp;think&nbsp;MS&nbsp;should&nbsp;have&nbsp;refunded&nbsp;my&nbsp;$300&nbsp;on&nbsp;grounds&nbsp;that&nbsp;is&nbsp;a&nbsp;(mostly)&nbsp;undocumented&nbsp;bug&nbsp;but&nbsp;I&#39;m&nbsp;sure&nbsp;they&nbsp;have&nbsp;a&nbsp;different&nbsp;&quot;perspective&quot;&nbsp;on&nbsp;the&nbsp;whole&nbsp;issue&nbsp;and&nbsp;I&nbsp;didn&#39;t&nbsp;bother&nbsp;trying&nbsp;to&nbsp;argue&nbsp;it.&nbsp;At&nbsp;best&nbsp;I&nbsp;can&nbsp;hope&nbsp;to&nbsp;prevent&nbsp;them&nbsp;from&nbsp;making&nbsp;some&nbsp;more&nbsp;money&nbsp;off&nbsp;other&nbsp;poor&nbsp;suckers&nbsp;who&nbsp;are&nbsp;trying&nbsp;to&nbsp;find&nbsp;the&nbsp;answer&nbsp;to&nbsp;the&nbsp;same&nbsp;problem.&nbsp;<br><br>&nbsp;I&nbsp;should&nbsp;also&nbsp;mention&nbsp;that&nbsp;the&nbsp;MS&nbsp;techs&nbsp;were&nbsp;not&nbsp;especially&nbsp;forthcoming&nbsp;about&nbsp;WHY&nbsp;I&nbsp;was&nbsp;having&nbsp;this&nbsp;problem&nbsp;and&nbsp;what&nbsp;these&nbsp;various&nbsp;tweaks&nbsp;were&nbsp;doing.&nbsp;It&nbsp;was&nbsp;as&nbsp;if&nbsp;they&nbsp;wanted&nbsp;to&nbsp;solve&nbsp;my&nbsp;problem&nbsp;just&nbsp;enough&nbsp;to&nbsp;make&nbsp;me&nbsp;go&nbsp;away&nbsp;without&nbsp;actually&nbsp;letting&nbsp;me&nbsp;understand&nbsp;what&nbsp;was&nbsp;going&nbsp;on.&nbsp;The&nbsp;only&nbsp;reason&nbsp;I&nbsp;know&nbsp;as&nbsp;much&nbsp;as&nbsp;I&nbsp;do&nbsp;is&nbsp;because&nbsp;I&nbsp;badgered&nbsp;them&nbsp;relentlessly&nbsp;for&nbsp;the&nbsp;missing&nbsp;info,&nbsp;the&nbsp;why&#39;s&nbsp;and&nbsp;how&#39;s.&nbsp;This&nbsp;after&nbsp;I&nbsp;paid&nbsp;them&nbsp;$300&nbsp;for&nbsp;the&nbsp;support&nbsp;call.&nbsp;And&nbsp;it&nbsp;took&nbsp;them&nbsp;nearly&nbsp;2&nbsp;weeks&nbsp;to&nbsp;finally&nbsp;get&nbsp;to&nbsp;a&nbsp;resolution.&nbsp;They&nbsp;did&nbsp;not&nbsp;seem&nbsp;to&nbsp;want&nbsp;to&nbsp;encourage&nbsp;me&nbsp;to&nbsp;explore&nbsp;the&nbsp;upper&nbsp;limits&nbsp;of&nbsp;these&nbsp;numbers&nbsp;and&nbsp;they&nbsp;did&nbsp;not&nbsp;really&nbsp;seem&nbsp;to&nbsp;want&nbsp;to&nbsp;explain&nbsp;the&nbsp;rationale&nbsp;behind&nbsp;how&nbsp;to&nbsp;tweak&nbsp;them.&nbsp;I&nbsp;had&nbsp;to&nbsp;drag&nbsp;it&nbsp;out&nbsp;of&nbsp;them.<br><br>Also&nbsp;I&nbsp;should&nbsp;note&nbsp;that&nbsp;this&nbsp;specific&nbsp;problem&nbsp;will&nbsp;most&nbsp;likely&nbsp;not&nbsp;affect&nbsp;you&nbsp;if&nbsp;you&nbsp;are&nbsp;running&nbsp;IIS&nbsp;in&nbsp;purely&nbsp;x64&nbsp;mode.&nbsp;I&nbsp;am&nbsp;running&nbsp;classic&nbsp;ASP&nbsp;apps&nbsp;which&nbsp;make&nbsp;use&nbsp;of&nbsp;32-bit&nbsp;DLLs&nbsp;like&nbsp;ASPUpload&nbsp;so&nbsp;my&nbsp;IIS&nbsp;has&nbsp;to&nbsp;be&nbsp;set&nbsp;to&nbsp;run&nbsp;in&nbsp;a&nbsp;32&nbsp;bit&nbsp;compatible&nbsp;mode.<br><br>&nbsp;I&nbsp;hope&nbsp;this&nbsp;helps&nbsp;at&nbsp;least&nbsp;one&nbsp;person&nbsp;out&nbsp;there&nbsp;because&nbsp;I&nbsp;spent&nbsp;literally&nbsp;years&nbsp;trying&nbsp;to&nbsp;find&nbsp;a&nbsp;solution,&nbsp;and&nbsp;$10,000&#39;s&nbsp;trying&nbsp;to&nbsp;work&nbsp;around&nbsp;not&nbsp;having&nbsp;a&nbsp;solution.&nbsp;(Buying&nbsp;and&nbsp;hosting&nbsp;lots&nbsp;of&nbsp;servers&nbsp;and&nbsp;windows&nbsp;licenses.)<br><br>As&nbsp;a&nbsp;cross-platform&nbsp;dev&nbsp;who&nbsp;has&nbsp;always&nbsp;been&nbsp;the&nbsp;devils&nbsp;advocate&nbsp;for&nbsp;MS,&nbsp;I&nbsp;am&nbsp;now&nbsp;thoroughly&nbsp;disgusted&nbsp;and&nbsp;alienated&nbsp;by&nbsp;this&nbsp;company&nbsp;and&nbsp;although&nbsp;I&#39;ll&nbsp;continue&nbsp;to&nbsp;develop&nbsp;and&nbsp;support&nbsp;my&nbsp;existing&nbsp;applications&nbsp;I&nbsp;am&nbsp;done&nbsp;doing&nbsp;any&nbsp;new&nbsp;development&nbsp;on&nbsp;this&nbsp;platform.]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1638</link><dc:subject>服务器专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-10 13:53:45</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1636"><title>informix sysmaster表详解</title><description><![CDATA[[b]一、实例信息[/b]&nbsp;<br>*sysconfig&nbsp;&nbsp;————&gt;;&nbsp;&nbsp;onconfig文件&nbsp;<br>*sysprofile&nbsp;————&gt;;&nbsp;服务器统计信息&nbsp;<br>*syslog&nbsp;————&gt;;&nbsp;逻辑日志&nbsp;<br>*sysvpprof&nbsp;————&gt;;&nbsp;虚拟处理器&nbsp;]]></description><content:encoded><![CDATA[<strong>一、实例信息</strong>&nbsp;<br>*sysconfig&nbsp;&nbsp;————&gt;;&nbsp;&nbsp;onconfig文件&nbsp;<br>*sysprofile&nbsp;————&gt;;&nbsp;服务器统计信息&nbsp;<br>*syslog&nbsp;————&gt;;&nbsp;逻辑日志&nbsp;<br>*sysvpprof&nbsp;————&gt;;&nbsp;虚拟处理器&nbsp;<br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysconfig&nbsp;{服务器配置参数}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;cf_id&nbsp;&nbsp;&nbsp;integer,&nbsp;&nbsp;&nbsp;{唯一数字标志符&nbsp;}&nbsp;<br>&nbsp;&nbsp;cf_name&nbsp;&nbsp;&nbsp;char(18),&nbsp;&nbsp;{onconfig参数名&nbsp;}&nbsp;<br>&nbsp;&nbsp;cf_flags&nbsp;&nbsp;&nbsp;&nbsp;integer,&nbsp;&nbsp;&nbsp;{标志，0=在视图中&nbsp;}&nbsp;<br>&nbsp;&nbsp;cf_original&nbsp;&nbsp;char(256),&nbsp;{启动时在onconfig中的值&nbsp;}&nbsp;<br>&nbsp;&nbsp;cf_effective&nbsp;char(256),&nbsp;{实际使用的值&nbsp;}&nbsp;<br>&nbsp;&nbsp;cf_default&nbsp;&nbsp;&nbsp;char(256)&nbsp;&nbsp;{onconfig文件中不指定时默认使用的值&nbsp;}&nbsp;&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysconfig&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysprofile&nbsp;{服务器概貌信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;name&nbsp;char(13),&nbsp;{概貌元素名&nbsp;}&nbsp;<br>&nbsp;&nbsp;value&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;{当前值&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysprofile&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syslogs&nbsp;{逻辑日志信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;number&nbsp;smallint,&nbsp;{日志文件号&nbsp;}&nbsp;<br>&nbsp;&nbsp;uniqid&nbsp;&nbsp;integer,&nbsp;&nbsp;{日志文件唯一ID&nbsp;}&nbsp;<br>&nbsp;&nbsp;size&nbsp;integer,&nbsp;&nbsp;{日志文件页&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;used&nbsp;integer,&nbsp;&nbsp;{日志文件使用的页&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_used&nbsp;integer,&nbsp;&nbsp;{1为已用，0为未用&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_current&nbsp;integer,&nbsp;&nbsp;{1为当前&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_backed_up&nbsp;integer,&nbsp;&nbsp;{1为备份&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_new&nbsp;integer,&nbsp;&nbsp;{1为新&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_archived&nbsp;integer,&nbsp;&nbsp;{1为存档&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_temp&nbsp;integer,&nbsp;&nbsp;{1为临时&nbsp;}&nbsp;<br>&nbsp;&nbsp;flags&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;{日志文件标志&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syslogs&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysvpprof&nbsp;{虚处理器信息与统计}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;vpid&nbsp;integer,&nbsp;{虚拟处理器&nbsp;}&nbsp;<br>&nbsp;&nbsp;class&nbsp;char(50,&nbsp;{虚拟处理器类名(cpu,&nbsp;adm,&nbsp;lio,&nbsp;pio等)}&nbsp;<br>&nbsp;&nbsp;usercpu&nbsp;float,&nbsp;&nbsp;&nbsp;{用户时间unix秒数&nbsp;}&nbsp;<br>&nbsp;&nbsp;syscpu&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;{系统时间unix秒数&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysvpprof&nbsp;to&nbsp;public;&nbsp;<br><br><strong>二、dbspace与块信息</strong>&nbsp;<br>*sysdbspaces&nbsp;————&gt;;&nbsp;dbspace&nbsp;<br>*syschunks&nbsp;————&gt;;&nbsp;块&nbsp;<br>*syschkio&nbsp;————&gt;;&nbsp;块I/O&nbsp;<br>*syschfree&nbsp;————&gt;;&nbsp;块自由空间&nbsp;注：syschfree是个不支持的表&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysdbspaces&nbsp;{dbspace配置}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;dbsnum&nbsp;smallint,&nbsp;{dbspace号&nbsp;}&nbsp;<br>&nbsp;&nbsp;name&nbsp;char(18),&nbsp;{dbspace名&nbsp;}&nbsp;<br>&nbsp;&nbsp;owner&nbsp;char(8),&nbsp;&nbsp;{dbspace拥有者&nbsp;}&nbsp;<br>&nbsp;&nbsp;fchunk&nbsp;smallint,&nbsp;{dbspace第一块&nbsp;}&nbsp;<br>&nbsp;&nbsp;nchunks&nbsp;smallint,&nbsp;{dbspace块数&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;is_mirrored&nbsp;integer,&nbsp;&nbsp;{dbspace是否镜像&nbsp;1=YES，0=NO}&nbsp;<br>&nbsp;&nbsp;is_blobspace&nbsp;integer,&nbsp;&nbsp;{dbspace是否大对象空间&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_temp&nbsp;integer,&nbsp;&nbsp;{dbspace是否临时，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;flags&nbsp;smallint&nbsp;&nbsp;{dbspace标志&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysdbspaces&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syschunks&nbsp;{chunk配置}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;chknum&nbsp;smallint,&nbsp;{chunk号&nbsp;}&nbsp;<br>&nbsp;&nbsp;dbsnum&nbsp;smallint,&nbsp;{dbspace号&nbsp;}&nbsp;<br>&nbsp;&nbsp;nxchknum&nbsp;smallint,&nbsp;{dbspace中下一个块号&nbsp;}&nbsp;<br>&nbsp;&nbsp;chksize&nbsp;integer,&nbsp;&nbsp;{chunk中的页&nbsp;}&nbsp;<br>&nbsp;&nbsp;offset&nbsp;integer,&nbsp;&nbsp;{设备页偏移量&nbsp;}&nbsp;<br>&nbsp;&nbsp;nfree&nbsp;integer,&nbsp;&nbsp;{块中未用页数&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;is_offline&nbsp;integer,&nbsp;&nbsp;{chunk是否脱机，1=YES，0=NO}&nbsp;<br>&nbsp;&nbsp;is_recovering&nbsp;integer,&nbsp;&nbsp;{chunk是否恢复，1=YES，0=NO}&nbsp;<br>&nbsp;&nbsp;is_blobchunk&nbsp;integer,&nbsp;&nbsp;{chunk是否blobchunk，1=YES，0=NO}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;is_inconsistent&nbsp;integer,{chunk是否不一致，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;flags&nbsp;smallint,&nbsp;{由bitbal转换的块标志&nbsp;}&nbsp;<br>&nbsp;&nbsp;fname&nbsp;char(128),{设备路径名&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;mfname&nbsp;char(128),{镜像设备路径名&nbsp;}&nbsp;<br>&nbsp;&nbsp;moffset&nbsp;integer,&nbsp;&nbsp;{镜像设备偏移量&nbsp;}&nbsp;<br>&nbsp;&nbsp;mis_offline&nbsp;integer,&nbsp;&nbsp;{镜像是否脱机，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;mis_recovering&nbsp;integer,&nbsp;{镜像是否恢复，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;mflags&nbsp;smallint&nbsp;&nbsp;{镜像块标志&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syschunks&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syschfree&nbsp;{显示块中的未用空间块}&nbsp;<br>(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;chknum&nbsp;&nbsp;&nbsp;integer,&nbsp;{&nbsp;chunk&nbsp;number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;块号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;extnum&nbsp;&nbsp;&nbsp;integer,&nbsp;{&nbsp;extent&nbsp;number&nbsp;in&nbsp;chunk&nbsp;块区域号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;integer,&nbsp;{&nbsp;physical&nbsp;addr&nbsp;of&nbsp;start&nbsp;开始物理地址&nbsp;}&nbsp;<br>&nbsp;&nbsp;leng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;{&nbsp;length&nbsp;of&nbsp;extent&nbsp;&nbsp;区域长度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>);&nbsp;<br>create&nbsp;unique&nbsp;index&nbsp;syschfreeidx&nbsp;on&nbsp;syschfree&nbsp;(chknum,&nbsp;extnum);&nbsp;<br>revoke&nbsp;all&nbsp;on&nbsp;syschfree&nbsp;from&nbsp;public;&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syschfree&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syschkio&nbsp;{块设备I/O统计信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;chunknum&nbsp;smallint,&nbsp;{块号&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;reads&nbsp;integer,&nbsp;&nbsp;{读操作数&nbsp;}&nbsp;<br>&nbsp;&nbsp;pagesread&nbsp;integer,&nbsp;&nbsp;{读页数&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;writes&nbsp;integer,&nbsp;&nbsp;{写操作数&nbsp;}&nbsp;<br>&nbsp;&nbsp;pageswritten&nbsp;integer,&nbsp;&nbsp;{写页数&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;mreads&nbsp;integer,&nbsp;&nbsp;{镜像读操作数&nbsp;}&nbsp;<br>&nbsp;&nbsp;mpagesread&nbsp;integer,&nbsp;&nbsp;{镜像读页数&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;mwrites&nbsp;integer,&nbsp;&nbsp;{镜像写操作数&nbsp;}&nbsp;<br>&nbsp;&nbsp;mpageswritten&nbsp;integer&nbsp;&nbsp;&nbsp;{镜像写页数&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syschkio&nbsp;to&nbsp;public;&nbsp;<br><br><strong>三、数据库与表信息</strong>&nbsp;<br>*sysdatabases&nbsp;————&gt;;&nbsp;数据库&nbsp;<br>*systabnames&nbsp;————&gt;;&nbsp;表&nbsp;<br>*sysextents&nbsp;————&gt;;&nbsp;表区域&nbsp;<br>*sysptprof&nbsp;————&gt;;&nbsp;表I/O&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysdatabase&nbsp;{实例中所有的数据库信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;name&nbsp;char(18),&nbsp;{数据库名&nbsp;}&nbsp;<br>&nbsp;&nbsp;partnum&nbsp;integer,&nbsp;&nbsp;{systables表ID&nbsp;}&nbsp;<br>&nbsp;&nbsp;owner&nbsp;char(8),&nbsp;&nbsp;{生成者用户名&nbsp;}&nbsp;<br>&nbsp;&nbsp;created&nbsp;integer,&nbsp;&nbsp;{生成日期&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_logging&nbsp;integer,&nbsp;&nbsp;{无缓冲日志，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_buff_log&nbsp;integer,&nbsp;&nbsp;{缓冲日志，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_ansi&nbsp;integer,&nbsp;&nbsp;{ANSI方式数据库1=YES，0=NO&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;is_nls&nbsp;integer,&nbsp;&nbsp;{NLS支持，1=YES，0=NO&nbsp;}&nbsp;<br>&nbsp;&nbsp;flags&nbsp;smallint&nbsp;&nbsp;{指示日志的标志&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysdatabase&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.systabnames&nbsp;{实例中的所有表}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;partnum&nbsp;integer,&nbsp;{&nbsp;table&nbsp;id&nbsp;for&nbsp;table&nbsp;&nbsp;表号&nbsp;}&nbsp;<br>&nbsp;&nbsp;dbsname&nbsp;char(18),&nbsp;{&nbsp;database&nbsp;name&nbsp;数据库名}&nbsp;<br>&nbsp;&nbsp;owner&nbsp;char(8),&nbsp;{&nbsp;table&nbsp;owner&nbsp;表拥有者&nbsp;}&nbsp;<br>&nbsp;&nbsp;tabname&nbsp;char(18),&nbsp;{&nbsp;table&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表名&nbsp;}&nbsp;<br>&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(32)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;collation&nbsp;assoc&nbsp;with&nbsp;database&nbsp;与GLS的相关性&nbsp;}&nbsp;<br>);&nbsp;<br>create&nbsp;unique&nbsp;index&nbsp;systabs_pnix&nbsp;on&nbsp;systabnames(partnum);&nbsp;<br>revoke&nbsp;all&nbsp;on&nbsp;systabnames&nbsp;from&nbsp;public;&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;systabnames&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysextents&nbsp;{实例中的表和每个区域}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;dbsname&nbsp;char(18),&nbsp;{数据库名&nbsp;}&nbsp;<br>&nbsp;&nbsp;tabname&nbsp;char(18),&nbsp;{表名&nbsp;}&nbsp;<br>&nbsp;&nbsp;start&nbsp;integer,&nbsp;&nbsp;{这个区域的物理地址&nbsp;}&nbsp;<br>&nbsp;&nbsp;size&nbsp;integer&nbsp;&nbsp;&nbsp;{这个区域的长度(页数)&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysextents&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysptnext&nbsp;{区域的信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;pe_partnum&nbsp;&nbsp;integer,&nbsp;{&nbsp;partnum&nbsp;for&nbsp;this&nbsp;partition&nbsp;这个区域的编号&nbsp;}&nbsp;<br>&nbsp;&nbsp;pe_extnum&nbsp;&nbsp;&nbsp;smallint,&nbsp;{&nbsp;extent&nbsp;number&nbsp;区域号&nbsp;}&nbsp;<br>&nbsp;&nbsp;pe_phys&nbsp;&nbsp;integer,&nbsp;{&nbsp;physical&nbsp;addr&nbsp;for&nbsp;this&nbsp;extent&nbsp;这个区域的物理地址&nbsp;}&nbsp;<br>&nbsp;&nbsp;pe_size&nbsp;&nbsp;integer,&nbsp;{&nbsp;size&nbsp;of&nbsp;this&nbsp;extent&nbsp;这个区域的长度(页数)&nbsp;}&nbsp;<br>&nbsp;&nbsp;pe_log&nbsp;&nbsp;&nbsp;integer&nbsp;{&nbsp;logical&nbsp;page&nbsp;for&nbsp;start&nbsp;开始逻辑页&nbsp;}&nbsp;<br>);&nbsp;<br>create&nbsp;unique&nbsp;index&nbsp;sysptnextidx&nbsp;on&nbsp;sysptnext&nbsp;(pe_partnum,&nbsp;pe_extnum);&nbsp;<br>revoke&nbsp;all&nbsp;on&nbsp;sysptnext&nbsp;from&nbsp;public;&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysptnext&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysptprof&nbsp;{表I/O概貌}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;dbsname&nbsp;char(18),&nbsp;&nbsp;{数据库名}&nbsp;<br>&nbsp;&nbsp;tabname&nbsp;char(18),&nbsp;&nbsp;{表名&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;partnum&nbsp;integer,&nbsp;&nbsp;{表编号&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;lockreqs&nbsp;integer,&nbsp;&nbsp;{锁请求&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;lockwts&nbsp;integer,&nbsp;&nbsp;{锁等待&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;deadlks&nbsp;integer,&nbsp;&nbsp;{死锁&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;lktouts&nbsp;integer,&nbsp;&nbsp;{锁超时&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;isreads&nbsp;integer,&nbsp;&nbsp;{读&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;iswrites&nbsp;integer,&nbsp;&nbsp;{写入&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;isrewrites&nbsp;integer,&nbsp;&nbsp;{改写&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;isdeletes&nbsp;integer,&nbsp;{删除&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;bufreads&nbsp;integerinteger,&nbsp;{缓冲区读}&nbsp;&nbsp;<br>&nbsp;&nbsp;bufwrites&nbsp;integer,&nbsp;&nbsp;{行冲区写}&nbsp;<br>&nbsp;&nbsp;seqscans&nbsp;integer,&nbsp;&nbsp;{顺序扫描}&nbsp;<br>&nbsp;&nbsp;pagreads&nbsp;integer,&nbsp;{磁盘读&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;pagwrites&nbsp;integer&nbsp;{磁盘写&nbsp;&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysptprof&nbsp;to&nbsp;public;&nbsp;<br><br><strong>四、用户对话信息</strong>&nbsp;<br>*syssessions&nbsp;————————&gt;;&nbsp;对话数据&nbsp;<br>*syssesprof&nbsp;————————&gt;;&nbsp;用户统计信息&nbsp;<br>*syslocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;————————&gt;;&nbsp;用户锁&nbsp;<br>*syseswts&nbsp;————————&gt;;&nbsp;等待时间&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syssessions&nbsp;{用户对话与连接信息}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;sid&nbsp;integer,&nbsp;{对话号&nbsp;}&nbsp;<br>&nbsp;&nbsp;username&nbsp;char(8),&nbsp;{用户名&nbsp;}&nbsp;<br>&nbsp;&nbsp;uid&nbsp;smallint,{用户unix号&nbsp;}&nbsp;<br>&nbsp;&nbsp;pid&nbsp;integer,&nbsp;{用户进程号&nbsp;}&nbsp;<br>&nbsp;&nbsp;hostname&nbsp;char(16),{主机名&nbsp;}&nbsp;<br>&nbsp;&nbsp;tty&nbsp;char(16),{tty端口&nbsp;}&nbsp;<br>&nbsp;&nbsp;connected&nbsp;integer,&nbsp;{用户连接时间&nbsp;}&nbsp;<br>&nbsp;&nbsp;feprogram&nbsp;char(16),{程序名&nbsp;}&nbsp;<br>&nbsp;&nbsp;pooladdr&nbsp;integer,&nbsp;{专有对话池指针&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_wlatch&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待锁存&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_wlock&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待锁&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_wbuff&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待缓冲区&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_wckpt&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待校验点&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_wlogbuf&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待日志缓冲区}&nbsp;<br>&nbsp;&nbsp;is_wtrans&nbsp;integer,&nbsp;{标志1=YES，0=NO，等待事务&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_monitor&nbsp;integer,&nbsp;{标志1=YES，0=NO，监视进程&nbsp;}&nbsp;<br>&nbsp;&nbsp;is_incrit&nbsp;integer,&nbsp;{标志1=YES，0=NO，在关键段中&nbsp;}&nbsp;<br>&nbsp;&nbsp;state&nbsp;integer&nbsp;&nbsp;{标志&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syssessions&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syssesprof&nbsp;{用户对话性能统计}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;sid&nbsp;integer,&nbsp;&nbsp;&nbsp;&nbsp;{对话号&nbsp;}&nbsp;<br>&nbsp;&nbsp;lockreqs&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{请求的锁&nbsp;}&nbsp;<br>&nbsp;&nbsp;locksheld&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{锁保持&nbsp;}&nbsp;<br>&nbsp;&nbsp;lockwts&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{锁等待&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;deadlks&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{发现的死锁&nbsp;}&nbsp;<br>&nbsp;&nbsp;lktouts&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{死锁超时&nbsp;}&nbsp;<br>&nbsp;&nbsp;logrecs&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{逻辑日志记录写入&nbsp;}&nbsp;<br>&nbsp;&nbsp;isreads&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{读&nbsp;}&nbsp;<br>&nbsp;&nbsp;iswrites&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{写&nbsp;}&nbsp;<br>&nbsp;&nbsp;isrewrites&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{改写&nbsp;}&nbsp;<br>&nbsp;&nbsp;isdeletes&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{删除&nbsp;}&nbsp;<br>&nbsp;&nbsp;iscommits&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{提交&nbsp;}&nbsp;<br>&nbsp;&nbsp;isrollbacks&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{撤销&nbsp;}&nbsp;<br>&nbsp;&nbsp;longtxs&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{长事务&nbsp;}&nbsp;<br>&nbsp;&nbsp;bufreads&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{缓冲区读&nbsp;}&nbsp;<br>&nbsp;&nbsp;bufwrites&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{缓冲区写&nbsp;}&nbsp;<br>&nbsp;&nbsp;seqscans&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{顺序扫描&nbsp;}&nbsp;<br>&nbsp;&nbsp;pagreads&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{页读&nbsp;}&nbsp;<br>&nbsp;&nbsp;pagwrites&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{页写&nbsp;}&nbsp;<br>&nbsp;&nbsp;total_sorts&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{总排序&nbsp;}&nbsp;<br>&nbsp;&nbsp;dsksorts&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{磁盘排序&nbsp;}&nbsp;<br>&nbsp;&nbsp;max_sortdiskspace&nbsp;&nbsp;decimal(16,0),{排序使用的最大空间&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;logspused&nbsp;decimal(16,0),&nbsp;&nbsp;&nbsp;&nbsp;{当前使用的日志字节&nbsp;}&nbsp;<br>&nbsp;&nbsp;maxlogsp&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{逻辑日志使用的最大空间}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syssesprof&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syslocks&nbsp;{服务器上的锁活动}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;dbsname&nbsp;char(18),&nbsp;{数据库&nbsp;}&nbsp;<br>&nbsp;&nbsp;tabname&nbsp;char(18),&nbsp;{表名&nbsp;}&nbsp;<br>&nbsp;&nbsp;rowidlk&nbsp;integer,&nbsp;&nbsp;{索引关键字锁的行号&nbsp;}&nbsp;<br>&nbsp;&nbsp;keynum&nbsp;smallint,&nbsp;{索引关键字锁的关键字号}&nbsp;<br>&nbsp;&nbsp;type&nbsp;integer,&nbsp;&nbsp;{锁拥有者对话ID&nbsp;}&nbsp;<br>&nbsp;&nbsp;owner&nbsp;integer,&nbsp;&nbsp;{第一个等待者对话ID&nbsp;}&nbsp;<br>&nbsp;&nbsp;waiter&nbsp;char(4)&nbsp;&nbsp;&nbsp;{锁类型&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syslocks&nbsp;to&nbsp;public;&nbsp;<br>{*******************************************************&nbsp;<br>注：锁类型包括&nbsp;<br>*B&nbsp;——————&gt;;byte&nbsp;lock(字节锁)&nbsp;<br>*IS&nbsp;——————&gt;;intent&nbsp;shared&nbsp;lock(意图共享锁)&nbsp;<br>*S&nbsp;——————&gt;;shared&nbsp;lock(共享锁)&nbsp;<br>*XS&nbsp;——————&gt;;repeatable&nbsp;read&nbsp;shared&nbsp;key(可重复读共享锁)&nbsp;<br>*U&nbsp;——————&gt;;update&nbsp;lock(更新锁)&nbsp;<br>*IX&nbsp;——————&gt;;intent&nbsp;exclusive&nbsp;lock(意图独占锁)&nbsp;<br>*SIX&nbsp;——————&gt;;shared&nbsp;intent&nbsp;exclusive(共享意图独占锁)&nbsp;<br>*X&nbsp;——————&gt;;exclusive&nbsp;lock(独占锁)&nbsp;<br>*XR&nbsp;——————&gt;;repreatable&nbsp;read&nbsp;exclusive(可重复读独占锁)&nbsp;<br>基本说来，这些锁类型是三种锁的组合：共享锁(S)、独占锁(X)、更新锁(U)。共享锁使其他用户也能读数据，但不能改变数据。独占锁不让其他用户共享数据。&nbsp;<br>更新锁在更新数据时不让其他用户改变数据。&nbsp;<br>IDS中可以锁定的对象包括：&nbsp;<br>*数据库&nbsp;——————&gt;;每个用户打开数据库时即对数据库采用共享锁，防止别人删除正在使用的数据。这个操作显示为sysmaster数据库和sysdatabase表中的锁，rowid指向包含数据库名的记录。&nbsp;<br>*表&nbsp;——————&gt;;表锁显示为表上的锁，rowid为0，keynum为0。&nbsp;<br>*页&nbsp;——————&gt;;页锁显示为rowid以00结尾，即页中的所有行均锁定。&nbsp;<br>*行&nbsp;——————&gt;;行锁显示实际rowid(不以00结尾)。&nbsp;<br>*键&nbsp;——————&gt;;键锁显示为keynum如果行的索引需要更新，则锁在该行的索引。&nbsp;<br>********************************************************}&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.sysseswts&nbsp;{对象等待状态与时间}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;sid&nbsp;integer,&nbsp;&nbsp;{对话ID&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;reason&nbsp;char(50),&nbsp;{等待原因说明&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;numwaits&nbsp;integer,&nbsp;&nbsp;{这个原因的等待数&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;cumtime&nbsp;float,&nbsp;&nbsp;&nbsp;&nbsp;{这个原因的等待累计时间}&nbsp;<br>&nbsp;&nbsp;maxtime&nbsp;integer&nbsp;&nbsp;&nbsp;{这个原因的等待最长时间}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;sysseswts&nbsp;to&nbsp;public;&nbsp;<br><br><strong>五、不支持的表(没有建档，可能在将来版本中改变)&nbsp;</strong><br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.systrans&nbsp;{用户事务}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;tx_id&nbsp;integer,{事务表指针&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;tx_logbeg&nbsp;integer,{事务开始的逻辑日志号&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;tx_loguniq&nbsp;integer&nbsp;{事务中使用的当前逻辑日志号}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;systrans&nbsp;to&nbsp;public;&nbsp;<br><br>create&nbsp;table&nbsp;&quot;sysmaster&quot;.syssqexpalin&nbsp;{用户查询}&nbsp;<br>(&nbsp;&nbsp;<br>&nbsp;&nbsp;sqx_sessionid&nbsp;integer,&nbsp;{SQL语句的对话ID，匹配onstat&nbsp;-u&nbsp;输出&nbsp;}&nbsp;<br>&nbsp;&nbsp;sqx_bufreads&nbsp;integer,&nbsp;{SQL语句完成的缓冲区读次数}&nbsp;<br>&nbsp;&nbsp;sqx_pagereads&nbsp;integer,&nbsp;{SQL语句完成的页面读次数}&nbsp;<br>&nbsp;&nbsp;sqx_totsorts&nbsp;&nbsp;&nbsp;integer,&nbsp;{SQL语句完成的排序次数}&nbsp;<br>&nbsp;&nbsp;sqx_estcost&nbsp;integer,&nbsp;{这个查询的估计成本，应与SET&nbsp;EXPLAIN的输出相同。注：这个成本有时偏高，但可以作为寻找坏查询的参考}&nbsp;<br>&nbsp;&nbsp;sqx_estrows&nbsp;integer,&nbsp;{检查这个查询返回的行，应与SET&nbsp;EXPALIN的输出相同}&nbsp;<br>&nbsp;&nbsp;sqx_seqscan&nbsp;smallint,{查询是顺序表格扫描时返回1，通常表示有问题}&nbsp;<br>&nbsp;&nbsp;sqx_srtscan&nbsp;smallint,{查询是排序扫描时返回1}&nbsp;<br>&nbsp;&nbsp;sqx_autoindex&nbsp;smallint,{查询是表格自动索引时返回1}&nbsp;<br>&nbsp;&nbsp;sqx_mrgjoin&nbsp;smallint,{查询是合并连接时返回1}&nbsp;<br>&nbsp;&nbsp;sqx_dynhashjoin&nbsp;smallint,{查询是动态散列连接时返回1&nbsp;}&nbsp;<br>&nbsp;&nbsp;sqx_sqlstatement&nbsp;char(32000){SQL语句文本&nbsp;}&nbsp;<br>);&nbsp;<br>grant&nbsp;select&nbsp;on&nbsp;syssqexplain&nbsp;to&nbsp;public;]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1636</link><dc:subject>数据库专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-9 14:25:54</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1635"><title>Exploring the Sysmaster Database</title><description><![CDATA[Exploring&nbsp;the&nbsp;Sysmaster&nbsp;Database<br>by&nbsp;Lester&nbsp;Knutsen<br>[url=mailto:lester@advancedatatools.com][b]lester@advancedatatools.com[/b][/url]<br>When&nbsp;you&nbsp;list&nbsp;all&nbsp;the&nbsp;databases&nbsp;on&nbsp;your&nbsp;INFORMIX&nbsp;server,&nbsp;you&nbsp;will&nbsp;see&nbsp;one&nbsp;called&nbsp;&quot;sysmaster&quot;.&nbsp;This&nbsp;is&nbsp;a&nbsp;special&nbsp;database&nbsp;and&nbsp;is&nbsp;one&nbsp;of&nbsp;the&nbsp;new&nbsp;features&nbsp;that&nbsp;first&nbsp;appeared&nbsp;in&nbsp;INFORMIX-OnLine&nbsp;DSA&nbsp;6.x&nbsp;and&nbsp;7.x.&nbsp;This&nbsp;is&nbsp;a&nbsp;database&nbsp;that&nbsp;contains&nbsp;tables&nbsp;that&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;monitoring&nbsp;your&nbsp;system.&nbsp;These&nbsp;are&nbsp;referred&nbsp;to&nbsp;as&nbsp;the&nbsp;System&nbsp;Monitoring&nbsp;Interface&nbsp;(SMI)&nbsp;tables.&nbsp;In&nbsp;this&nbsp;chapter&nbsp;we&nbsp;will&nbsp;explore&nbsp;some&nbsp;of&nbsp;the&nbsp;tables&nbsp;and&nbsp;views&nbsp;that&nbsp;are&nbsp;in&nbsp;this&nbsp;database.&nbsp;<br>The&nbsp;sysmaster&nbsp;database&nbsp;is&nbsp;described&nbsp;as&nbsp;a&nbsp;pseudo&nbsp;database.&nbsp;That&nbsp;means&nbsp;most&nbsp;of&nbsp;its&nbsp;tables&nbsp;are&nbsp;not&nbsp;normal&nbsp;tables&nbsp;on&nbsp;disk,&nbsp;but&nbsp;pointers&nbsp;to&nbsp;shared&nbsp;memory&nbsp;structures&nbsp;in&nbsp;the&nbsp;OnLine&nbsp;engine.&nbsp;The&nbsp;sysmaster&nbsp;database&nbsp;contains&nbsp;over&nbsp;120&nbsp;tables.&nbsp;Only&nbsp;18&nbsp;of&nbsp;these&nbsp;tables&nbsp;are&nbsp;documented&nbsp;in&nbsp;the&nbsp;INFORMIX-OnLine&nbsp;Dynamic&nbsp;Server&nbsp;Administrator&#39;&#39;s&nbsp;Guide,&nbsp;Volume&nbsp;2,&nbsp;Chapter&nbsp;38.&nbsp;The&nbsp;rest&nbsp;are&nbsp;undocumented&nbsp;and&nbsp;described&nbsp;by&nbsp;Informix&nbsp;as&nbsp;for&nbsp;internal&nbsp;use.&nbsp;The&nbsp;examples&nbsp;and&nbsp;references&nbsp;in&nbsp;this&nbsp;article&nbsp;are&nbsp;based&nbsp;on&nbsp;OnLine&nbsp;7.23.&nbsp;I&nbsp;have&nbsp;also&nbsp;tested&nbsp;some&nbsp;of&nbsp;the&nbsp;examples&nbsp;with&nbsp;versions&nbsp;7.10,&nbsp;7.12,&nbsp;and&nbsp;7.22.&nbsp;There&nbsp;are&nbsp;some&nbsp;minor&nbsp;changes&nbsp;between&nbsp;versions&nbsp;in&nbsp;the&nbsp;undocumented&nbsp;features&nbsp;and&nbsp;structures&nbsp;of&nbsp;these&nbsp;tables.&nbsp;]]></description><content:encoded><![CDATA[Exploring&nbsp;the&nbsp;Sysmaster&nbsp;Database<br>by&nbsp;Lester&nbsp;Knutsen<br><a target="_blank" href="mailto:lester@advancedatatools.com"><strong>lester@advancedatatools.com</strong></a><br>When&nbsp;you&nbsp;list&nbsp;all&nbsp;the&nbsp;databases&nbsp;on&nbsp;your&nbsp;INFORMIX&nbsp;server,&nbsp;you&nbsp;will&nbsp;see&nbsp;one&nbsp;called&nbsp;&quot;sysmaster&quot;.&nbsp;This&nbsp;is&nbsp;a&nbsp;special&nbsp;database&nbsp;and&nbsp;is&nbsp;one&nbsp;of&nbsp;the&nbsp;new&nbsp;features&nbsp;that&nbsp;first&nbsp;appeared&nbsp;in&nbsp;INFORMIX-OnLine&nbsp;DSA&nbsp;6.x&nbsp;and&nbsp;7.x.&nbsp;This&nbsp;is&nbsp;a&nbsp;database&nbsp;that&nbsp;contains&nbsp;tables&nbsp;that&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;monitoring&nbsp;your&nbsp;system.&nbsp;These&nbsp;are&nbsp;referred&nbsp;to&nbsp;as&nbsp;the&nbsp;System&nbsp;Monitoring&nbsp;Interface&nbsp;(SMI)&nbsp;tables.&nbsp;In&nbsp;this&nbsp;chapter&nbsp;we&nbsp;will&nbsp;explore&nbsp;some&nbsp;of&nbsp;the&nbsp;tables&nbsp;and&nbsp;views&nbsp;that&nbsp;are&nbsp;in&nbsp;this&nbsp;database.&nbsp;<br>The&nbsp;sysmaster&nbsp;database&nbsp;is&nbsp;described&nbsp;as&nbsp;a&nbsp;pseudo&nbsp;database.&nbsp;That&nbsp;means&nbsp;most&nbsp;of&nbsp;its&nbsp;tables&nbsp;are&nbsp;not&nbsp;normal&nbsp;tables&nbsp;on&nbsp;disk,&nbsp;but&nbsp;pointers&nbsp;to&nbsp;shared&nbsp;memory&nbsp;structures&nbsp;in&nbsp;the&nbsp;OnLine&nbsp;engine.&nbsp;The&nbsp;sysmaster&nbsp;database&nbsp;contains&nbsp;over&nbsp;120&nbsp;tables.&nbsp;Only&nbsp;18&nbsp;of&nbsp;these&nbsp;tables&nbsp;are&nbsp;documented&nbsp;in&nbsp;the&nbsp;INFORMIX-OnLine&nbsp;Dynamic&nbsp;Server&nbsp;Administrator&#39;s&nbsp;Guide,&nbsp;Volume&nbsp;2,&nbsp;Chapter&nbsp;38.&nbsp;The&nbsp;rest&nbsp;are&nbsp;undocumented&nbsp;and&nbsp;described&nbsp;by&nbsp;Informix&nbsp;as&nbsp;for&nbsp;internal&nbsp;use.&nbsp;The&nbsp;examples&nbsp;and&nbsp;references&nbsp;in&nbsp;this&nbsp;article&nbsp;are&nbsp;based&nbsp;on&nbsp;OnLine&nbsp;7.23.&nbsp;I&nbsp;have&nbsp;also&nbsp;tested&nbsp;some&nbsp;of&nbsp;the&nbsp;examples&nbsp;with&nbsp;versions&nbsp;7.10,&nbsp;7.12,&nbsp;and&nbsp;7.22.&nbsp;There&nbsp;are&nbsp;some&nbsp;minor&nbsp;changes&nbsp;between&nbsp;versions&nbsp;in&nbsp;the&nbsp;undocumented&nbsp;features&nbsp;and&nbsp;structures&nbsp;of&nbsp;these&nbsp;tables.&nbsp;<br>A&nbsp;warning:&nbsp;<em>Some&nbsp;of&nbsp;the&nbsp;features&nbsp;discussed&nbsp;in&nbsp;this&nbsp;article&nbsp;are&nbsp;based&nbsp;on&nbsp;undocumented&nbsp;SMI&nbsp;tables&nbsp;and&nbsp;may&nbsp;change&nbsp;or&nbsp;not&nbsp;work&nbsp;in&nbsp;future&nbsp;versions&nbsp;of&nbsp;INFORMIX&nbsp;OnLine&nbsp;DSA.</em><br>This&nbsp;article&nbsp;will&nbsp;focus&nbsp;on&nbsp;users,&nbsp;server&nbsp;configuration,&nbsp;dbspaces,&nbsp;chunks,&nbsp;tables,&nbsp;and&nbsp;monitoring&nbsp;IO&nbsp;using&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;We&nbsp;will&nbsp;present&nbsp;how&nbsp;to&nbsp;create&nbsp;scripts&nbsp;to&nbsp;monitor&nbsp;the&nbsp;following:&nbsp;<br>List&nbsp;who&nbsp;is&nbsp;using&nbsp;each&nbsp;database.&nbsp;<br>Display&nbsp;information&nbsp;about&nbsp;your&nbsp;server&nbsp;configuration.&nbsp;<br>Display&nbsp;how&nbsp;much&nbsp;free&nbsp;space&nbsp;is&nbsp;available&nbsp;in&nbsp;each&nbsp;dbspace&nbsp;in&nbsp;a&nbsp;format&nbsp;like&nbsp;the&nbsp;Unix&nbsp;df&nbsp;command.&nbsp;<br>List&nbsp;the&nbsp;status&nbsp;and&nbsp;characteristics&nbsp;of&nbsp;each&nbsp;chunk&nbsp;device.&nbsp;<br>Display&nbsp;blocks&nbsp;of&nbsp;free&nbsp;space&nbsp;within&nbsp;a&nbsp;chunk.&nbsp;This&nbsp;allows&nbsp;you&nbsp;to&nbsp;plan&nbsp;where&nbsp;to&nbsp;put&nbsp;large&nbsp;tables&nbsp;without&nbsp;fragmenting&nbsp;them.&nbsp;<br>Display&nbsp;IO&nbsp;statistics&nbsp;by&nbsp;chunk&nbsp;devices.&nbsp;<br>Display&nbsp;IO&nbsp;usage&nbsp;of&nbsp;chunk&nbsp;devices&nbsp;as&nbsp;a&nbsp;percent&nbsp;of&nbsp;the&nbsp;total&nbsp;IO,&nbsp;and&nbsp;show&nbsp;which&nbsp;chunks&nbsp;are&nbsp;getting&nbsp;used&nbsp;the&nbsp;most.&nbsp;<br>Display&nbsp;tables&nbsp;and&nbsp;the&nbsp;number&nbsp;of&nbsp;extents,&nbsp;and&nbsp;number&nbsp;of&nbsp;pages&nbsp;used.&nbsp;<br>Present&nbsp;a&nbsp;layout&nbsp;of&nbsp;dbspace,&nbsp;databases,&nbsp;tables,&nbsp;and&nbsp;extents&nbsp;similar&nbsp;to&nbsp;the&nbsp;command&nbsp;&quot;tbcheck&nbsp;-pe&quot;.&nbsp;<br>Show&nbsp;table&nbsp;usage&nbsp;statistics&nbsp;sorted&nbsp;by&nbsp;which&nbsp;tables&nbsp;have&nbsp;the&nbsp;most&nbsp;reads,&nbsp;writes,&nbsp;or&nbsp;locks.&nbsp;<br>Show&nbsp;statistics&nbsp;of&nbsp;users&nbsp;sessions.&nbsp;<br>Show&nbsp;locks&nbsp;and&nbsp;users&nbsp;who&nbsp;are&nbsp;waiting&nbsp;on&nbsp;locks.&nbsp;<br><u>1.&nbsp;A&nbsp;Practical&nbsp;Example&nbsp;-&nbsp;Who&nbsp;is&nbsp;Using&nbsp;What&nbsp;Database</u><br>Let&#39;s&nbsp;begin&nbsp;with&nbsp;a&nbsp;very&nbsp;practical&nbsp;example&nbsp;of&nbsp;the&nbsp;sysmaster&nbsp;database&#39;s&nbsp;value.<br>My&nbsp;interest&nbsp;in&nbsp;this&nbsp;database&nbsp;started&nbsp;a&nbsp;couple&nbsp;of&nbsp;years&nbsp;ago,&nbsp;while&nbsp;consulting&nbsp;on&nbsp;a&nbsp;project&nbsp;for&nbsp;a&nbsp;development&nbsp;group&nbsp;where&nbsp;I&nbsp;needed&nbsp;to&nbsp;know&nbsp;who&nbsp;had&nbsp;a&nbsp;database&nbsp;open&nbsp;and&nbsp;which&nbsp;workstation&nbsp;they&nbsp;were&nbsp;using&nbsp;to&nbsp;connect&nbsp;to&nbsp;the&nbsp;database.&nbsp;This&nbsp;was&nbsp;a&nbsp;development&nbsp;environment&nbsp;and&nbsp;there&nbsp;were&nbsp;continual&nbsp;changes&nbsp;to&nbsp;the&nbsp;database&nbsp;schemas.&nbsp;In&nbsp;order&nbsp;to&nbsp;make&nbsp;updates&nbsp;to&nbsp;the&nbsp;database&nbsp;schema,&nbsp;I&nbsp;would&nbsp;have&nbsp;to&nbsp;get&nbsp;the&nbsp;developers&nbsp;to&nbsp;disconnect&nbsp;from&nbsp;the&nbsp;database.&nbsp;The&nbsp;&quot;onstat&nbsp;-u&quot;&nbsp;utility&nbsp;would&nbsp;tell&nbsp;me&nbsp;which&nbsp;users&nbsp;were&nbsp;connected&nbsp;to&nbsp;the&nbsp;server,&nbsp;but&nbsp;not&nbsp;what&nbsp;database&nbsp;and&nbsp;what&nbsp;workstation&nbsp;they&nbsp;were&nbsp;using.&nbsp;&quot;Onstat&nbsp;-g&nbsp;ses&quot;&nbsp;told&nbsp;me&nbsp;the&nbsp;user&nbsp;and&nbsp;workstation,&nbsp;but&nbsp;not&nbsp;the&nbsp;database.&nbsp;&quot;Onstat&nbsp;-g&nbsp;sql&nbsp;told&nbsp;me&nbsp;the&nbsp;session&nbsp;id&nbsp;and&nbsp;database,&nbsp;but&nbsp;not&nbsp;the&nbsp;user&nbsp;name&nbsp;and&nbsp;workstation.&nbsp;After&nbsp;some&nbsp;debugging,&nbsp;I&nbsp;found&nbsp;all&nbsp;the&nbsp;information&nbsp;I&nbsp;wanted&nbsp;in&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;And,&nbsp;because&nbsp;it&nbsp;was&nbsp;a&nbsp;database,&nbsp;I&nbsp;could&nbsp;retrieve&nbsp;it&nbsp;with&nbsp;SQL&nbsp;queries.&nbsp;The&nbsp;following&nbsp;query&nbsp;shows&nbsp;the&nbsp;database,&nbsp;who&nbsp;has&nbsp;it&nbsp;open,&nbsp;the&nbsp;workstation&nbsp;they&nbsp;are&nbsp;connected&nbsp;from,&nbsp;and&nbsp;the&nbsp;session&nbsp;id.<br><strong>Figure&nbsp;1.&nbsp;Dbwho&nbsp;SQL&nbsp;script</strong><br>--&nbsp;dbwho.sql<br>select&nbsp;&nbsp;sysdatabases.name&nbsp;database,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Database&nbsp;Name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syssessions.username,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;User&nbsp;Name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syssessions.hostname,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Workstation<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syslocks.owner&nbsp;sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Informix&nbsp;Session&nbsp;ID<br>from&nbsp;&nbsp;&nbsp;&nbsp;syslocks,&nbsp;sysdatabases&nbsp;,&nbsp;outer&nbsp;syssessions<br>where&nbsp;&nbsp;&nbsp;syslocks.tabname&nbsp;=&nbsp;&quot;sysdatabases&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Find&nbsp;locks&nbsp;on&nbsp;sysdatabases<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syslocks.rowidlk&nbsp;=&nbsp;sysdatabases.rowid&nbsp;--&nbsp;Join&nbsp;rowid&nbsp;to&nbsp;database<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syslocks.owner&nbsp;=&nbsp;syssessions.sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Session&nbsp;ID&nbsp;to&nbsp;get&nbsp;user&nbsp;info<br>order&nbsp;by&nbsp;1;<br>Every&nbsp;user&nbsp;that&nbsp;opens&nbsp;a&nbsp;database&nbsp;opens&nbsp;a&nbsp;shared&nbsp;lock&nbsp;on&nbsp;the&nbsp;row&nbsp;in&nbsp;the&nbsp;sysdatabases&nbsp;table&nbsp;of&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;that&nbsp;points&nbsp;to&nbsp;that&nbsp;database.&nbsp;First&nbsp;we&nbsp;need&nbsp;to&nbsp;find&nbsp;all&nbsp;the&nbsp;locks&nbsp;in&nbsp;syslocks&nbsp;on&nbsp;the&nbsp;sysdatabases&nbsp;table.&nbsp;This&nbsp;gives&nbsp;us&nbsp;the&nbsp;rowid&nbsp;in&nbsp;sysdatabase&nbsp;which&nbsp;has&nbsp;the&nbsp;database&nbsp;name.&nbsp;Finally,&nbsp;we&nbsp;join&nbsp;with&nbsp;the&nbsp;table&nbsp;syssessions&nbsp;to&nbsp;get&nbsp;the&nbsp;username&nbsp;and&nbsp;hostname.&nbsp;I&nbsp;put&nbsp;all&nbsp;this&nbsp;together&nbsp;in&nbsp;a&nbsp;shell&nbsp;script&nbsp;that&nbsp;can&nbsp;be&nbsp;run&nbsp;from&nbsp;the&nbsp;unix&nbsp;prompt&nbsp;and&nbsp;called&nbsp;it&nbsp;dbwho.&nbsp;Figure&nbsp;2&nbsp;contains&nbsp;the&nbsp;shell&nbsp;script.<br><strong>Figure&nbsp;2.&nbsp;Dbwho&nbsp;shell&nbsp;script</strong><br>:<br>###########################################################################<br>#&nbsp;Program:&nbsp;dbwho<br>#&nbsp;Author:&nbsp;&nbsp;Lester&nbsp;Knutsen<br>#&nbsp;Date:&nbsp;&nbsp;&nbsp;&nbsp;10/28/1995<br>#&nbsp;Description:&nbsp;List&nbsp;database,&nbsp;user&nbsp;and&nbsp;workstation&nbsp;of&nbsp;all&nbsp;db&nbsp;users<br>###########################################################################<br>echo&nbsp;&quot;Generating&nbsp;list&nbsp;of&nbsp;users&nbsp;by&nbsp;database&nbsp;...&quot;<br>dbaccess&nbsp;sysmaster&nbsp;-&nbsp;<br>One&nbsp;of&nbsp;the&nbsp;first&nbsp;things&nbsp;you&nbsp;will&nbsp;notice&nbsp;is&nbsp;that&nbsp;this&nbsp;script&nbsp;is&nbsp;slow.&nbsp;This&nbsp;led&nbsp;me&nbsp;to&nbsp;start&nbsp;digging&nbsp;into&nbsp;what&nbsp;was&nbsp;causing&nbsp;the&nbsp;slow&nbsp;performance.&nbsp;Running&nbsp;this&nbsp;query&nbsp;with&nbsp;set&nbsp;explain&nbsp;turned&nbsp;on&nbsp;(this&nbsp;shows&nbsp;the&nbsp;query&nbsp;optimizer&nbsp;plan)&nbsp;shows&nbsp;that&nbsp;there&nbsp;is&nbsp;a&nbsp;lot&nbsp;of&nbsp;work&nbsp;going&nbsp;on&nbsp;behind&nbsp;the&nbsp;scenes.&nbsp;Syslocks&nbsp;is&nbsp;a&nbsp;view,&nbsp;and&nbsp;it&nbsp;takes&nbsp;a&nbsp;sequential&nbsp;scan&nbsp;of&nbsp;six&nbsp;tables&nbsp;to&nbsp;produce&nbsp;the&nbsp;view.&nbsp;A&nbsp;temp&nbsp;table&nbsp;is&nbsp;created&nbsp;to&nbsp;hold&nbsp;the&nbsp;results&nbsp;of&nbsp;the&nbsp;syslocks&nbsp;view,&nbsp;and&nbsp;this&nbsp;is&nbsp;then&nbsp;joined&nbsp;with&nbsp;the&nbsp;other&nbsp;two&nbsp;tables.&nbsp;The&nbsp;tables&nbsp;sysdatabase&nbsp;and&nbsp;syssessions&nbsp;are&nbsp;also&nbsp;views.&nbsp;And&nbsp;the&nbsp;view&nbsp;syssessions&nbsp;uses&nbsp;a&nbsp;stored&nbsp;procedure,&nbsp;called&nbsp;bitval.&nbsp;Figure&nbsp;3&nbsp;contains&nbsp;the&nbsp;output&nbsp;from&nbsp;turning&nbsp;set&nbsp;explain&nbsp;on.&nbsp;In&nbsp;spite&nbsp;of&nbsp;these&nbsp;queries&nbsp;sometimes&nbsp;being&nbsp;a&nbsp;bit&nbsp;slow,&nbsp;these&nbsp;tables&nbsp;are&nbsp;a&nbsp;tremendous&nbsp;value&nbsp;and&nbsp;make&nbsp;it&nbsp;much&nbsp;easier&nbsp;to&nbsp;monitor&nbsp;your&nbsp;database&nbsp;server.<br><strong>Figure&nbsp;3:&nbsp;Output&nbsp;from&nbsp;&quot;set&nbsp;explain&nbsp;on&quot;&nbsp;for&nbsp;dbwho.sql</strong><br>QUERY:<br>------<br>create&nbsp;view&nbsp;&quot;informix&quot;.syslocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>(dbsname,tabname,rowidlk,keynum,type,owner,waiter)&nbsp;<br>as&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;x1.dbsname&nbsp;,x1.tabname&nbsp;,x0.rowidr&nbsp;,x0.keynum&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x4.txt&nbsp;[1,4]&nbsp;,x3.sid&nbsp;,x5.sid&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;&nbsp;&quot;informix&quot;.syslcktab&nbsp;x0&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;informix&quot;.systabnames&nbsp;x1&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;informix&quot;.systxptab&nbsp;x2&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;informix&quot;.sysrstcb&nbsp;x3&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;informix&quot;.flags_text&nbsp;x4&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer(&quot;informix&quot;.sysrstcb&nbsp;x5&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;((((((x0.partnum&nbsp;=&nbsp;x1.partnum&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(x0.owner&nbsp;=&nbsp;x2.address&nbsp;)&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(x2.owner&nbsp;=&nbsp;x3.address&nbsp;)&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(x0.wtlist&nbsp;=&nbsp;x5.address&nbsp;)&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(x4.tabname&nbsp;=&nbsp;&#39;syslcktab&#39;&nbsp;)&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(x4.flags&nbsp;=&nbsp;x0.type&nbsp;)&nbsp;)&nbsp;;<br>Estimated&nbsp;Cost:&nbsp;713<br>Estimated&nbsp;#&nbsp;of&nbsp;Rows&nbsp;Returned:&nbsp;51<br>1)&nbsp;informix.syslcktab:&nbsp;SEQUENTIAL&nbsp;SCAN<br>2)&nbsp;informix.flags_text:&nbsp;SEQUENTIAL&nbsp;SCAN<br>&nbsp;&nbsp;&nbsp;&nbsp;Filters:&nbsp;informix.flags_text.tabname&nbsp;=&nbsp;&#39;syslcktab&#39;&nbsp;<br>DYNAMIC&nbsp;HASH&nbsp;JOIN&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;Hash&nbsp;Filters:&nbsp;informix.syslcktab.type&nbsp;=&nbsp;informix.flags_text.flags&nbsp;<br>3)&nbsp;informix.systxptab:&nbsp;SEQUENTIAL&nbsp;SCAN<br>DYNAMIC&nbsp;HASH&nbsp;JOIN&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;Hash&nbsp;Filters:&nbsp;informix.syslcktab.owner&nbsp;=<br>informix.systxptab.address&nbsp;<br>4)&nbsp;informix.systabnames:&nbsp;SEQUENTIAL&nbsp;SCAN<br>&nbsp;&nbsp;&nbsp;&nbsp;Filters:&nbsp;informix.systabnames.tabname&nbsp;=&nbsp;&#39;sysdatabases&#39;&nbsp;<br>DYNAMIC&nbsp;HASH&nbsp;JOIN&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;Hash&nbsp;Filters:&nbsp;informix.syslcktab.partnum<br>informix.systabnames.partnum&nbsp;<br>5)&nbsp;informix.sysrstcb:&nbsp;SEQUENTIAL&nbsp;SCAN<br>DYNAMIC&nbsp;HASH&nbsp;JOIN&nbsp;(Build&nbsp;Outer)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;Hash&nbsp;Filters:&nbsp;informix.systxptab.owner&nbsp;=&nbsp;informix.sysrstcb.address<br>6)&nbsp;informix.sysrstcb:&nbsp;SEQUENTIAL&nbsp;SCAN<br>DYNAMIC&nbsp;HASH&nbsp;JOIN&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;Hash&nbsp;Filters:&nbsp;informix.syslcktab.wtlist&nbsp;=<br>informix.sysrstcb.address&nbsp;<br>QUERY:<br>------<br>select&nbsp;&nbsp;sysdatabases.name&nbsp;database,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syssessions.username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syssessions.hostname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syslocks.owner&nbsp;sid<br>from&nbsp;&nbsp;syslocks,&nbsp;sysdatabases,&nbsp;outer&nbsp;syssessions<br>where&nbsp;syslocks.rowidlk&nbsp;=&nbsp;sysdatabases.rowid<br>and&nbsp;&nbsp;&nbsp;syslocks.tabname&nbsp;=&nbsp;&quot;sysdatabases&quot;<br>and&nbsp;&nbsp;&nbsp;syslocks.owner&nbsp;=&nbsp;syssessions.sid<br>order&nbsp;by&nbsp;1<br>Estimated&nbsp;Cost:&nbsp;114<br>Estimated&nbsp;#&nbsp;of&nbsp;Rows&nbsp;Returned:&nbsp;11<br>Temporary&nbsp;Files&nbsp;Required&nbsp;For:&nbsp;Order&nbsp;By&nbsp;&nbsp;<br>1)&nbsp;(Temp&nbsp;Table&nbsp;For&nbsp;View):&nbsp;SEQUENTIAL&nbsp;SCAN<br>2)&nbsp;informix.sysdbspartn:&nbsp;INDEX&nbsp;PATH<br>&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;Index&nbsp;Keys:&nbsp;ROWID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lower&nbsp;Index&nbsp;Filter:&nbsp;informix.sysdbspartn.ROWID&nbsp;=&nbsp;(Temp&nbsp;Table&nbsp;For&nbsp;&nbsp;&nbsp;<br>View).rowidlk&nbsp;<br>3)&nbsp;informix.sysscblst:&nbsp;INDEX&nbsp;PATH<br>&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;Index&nbsp;Keys:&nbsp;sid&nbsp;(desc)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lower&nbsp;Index&nbsp;Filter:&nbsp;informix.sysscblst.sid&nbsp;=&nbsp;(Temp&nbsp;Table&nbsp;For&nbsp;&nbsp;<br>View).owner&nbsp;<br>4)&nbsp;informix.sysrstcb:&nbsp;AUTOINDEX&nbsp;PATH<br>&nbsp;&nbsp;&nbsp;&nbsp;Filters:&nbsp;informix.bitval(informix.sysrstcb.flags&nbsp;,&#39;0x80000&#39;&nbsp;)=&nbsp;1&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;Index&nbsp;Keys:&nbsp;scb&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lower&nbsp;Index&nbsp;Filter:&nbsp;informix.sysrstcb.scb&nbsp;=&nbsp;informix.sysscblst.address<br><u>2.&nbsp;How&nbsp;the&nbsp;Sysmaster&nbsp;Database&nbsp;is&nbsp;Created</u><br>The&nbsp;sysmaster&nbsp;database&nbsp;keeps&nbsp;track&nbsp;of&nbsp;information&nbsp;about&nbsp;the&nbsp;database&nbsp;server&nbsp;just&nbsp;like&nbsp;the&nbsp;system&nbsp;tables&nbsp;keep&nbsp;track&nbsp;of&nbsp;information&nbsp;in&nbsp;each&nbsp;database.&nbsp;This&nbsp;database&nbsp;is&nbsp;automatically&nbsp;created&nbsp;when&nbsp;you&nbsp;initialize&nbsp;OnLine.&nbsp;It&nbsp;includes&nbsp;tables&nbsp;for&nbsp;tracking&nbsp;two&nbsp;types&nbsp;of&nbsp;information:&nbsp;the&nbsp;System&nbsp;Monitoring&nbsp;Interface&nbsp;(SMI)&nbsp;tables,&nbsp;and&nbsp;the&nbsp;On-Archive&nbsp;catalog&nbsp;tables.&nbsp;This&nbsp;article&nbsp;will&nbsp;focus&nbsp;on&nbsp;the&nbsp;SMI&nbsp;tables.&nbsp;There&nbsp;is&nbsp;a&nbsp;warning&nbsp;in&nbsp;the&nbsp;documentation&nbsp;not&nbsp;to&nbsp;change&nbsp;any&nbsp;information&nbsp;in&nbsp;these&nbsp;tables&nbsp;as&nbsp;it&nbsp;may&nbsp;corrupt&nbsp;your&nbsp;database&nbsp;server.&nbsp;Also&nbsp;there&nbsp;is&nbsp;a&nbsp;warning&nbsp;that&nbsp;OnLine&nbsp;does&nbsp;not&nbsp;lock&nbsp;these&nbsp;tables,&nbsp;and&nbsp;that&nbsp;all&nbsp;selects&nbsp;from&nbsp;this&nbsp;database&nbsp;will&nbsp;use&nbsp;an&nbsp;isolation&nbsp;level&nbsp;of&nbsp;dirty&nbsp;read.&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;data&nbsp;can&nbsp;change&nbsp;dynamically&nbsp;as&nbsp;you&nbsp;are&nbsp;retrieving&nbsp;it.&nbsp;This&nbsp;also&nbsp;means&nbsp;that&nbsp;selecting&nbsp;data&nbsp;from&nbsp;the&nbsp;sysmaster&nbsp;tables&nbsp;does&nbsp;not&nbsp;lock&nbsp;any&nbsp;of&nbsp;your&nbsp;users&nbsp;from&nbsp;processing&nbsp;their&nbsp;data.&nbsp;<em>As&nbsp;mentioned&nbsp;above,</em>&nbsp;the&nbsp;SMI&nbsp;tables&nbsp;are&nbsp;described&nbsp;as&nbsp;pseudo-tables&nbsp;which&nbsp;point&nbsp;directly&nbsp;to&nbsp;the&nbsp;shared&nbsp;memory&nbsp;structures&nbsp;in&nbsp;OnLine&nbsp;where&nbsp;the&nbsp;data&nbsp;is&nbsp;stored.&nbsp;That&nbsp;means&nbsp;they&nbsp;are&nbsp;not&nbsp;actually&nbsp;on&nbsp;disk.&nbsp;However,&nbsp;because&nbsp;many&nbsp;of&nbsp;the&nbsp;SMI&nbsp;tables&nbsp;are&nbsp;really&nbsp;views,&nbsp;selecting&nbsp;from&nbsp;them&nbsp;does&nbsp;create&nbsp;temporary&nbsp;tables&nbsp;and&nbsp;generate&nbsp;disk&nbsp;activity.<br>A&nbsp;script&nbsp;located&nbsp;in&nbsp;your&nbsp;directory&nbsp;$INFORMIXDIR/etc.&nbsp;named&nbsp;sysmaster.sql&nbsp;contains&nbsp;the&nbsp;SQL&nbsp;statements&nbsp;to&nbsp;create&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;The&nbsp;process&nbsp;of&nbsp;creating&nbsp;it&nbsp;is&nbsp;interesting&nbsp;and&nbsp;outlined&nbsp;as&nbsp;follows:&nbsp;<br>First&nbsp;the&nbsp;script&nbsp;creates&nbsp;real&nbsp;tables&nbsp;with&nbsp;the&nbsp;structures&nbsp;of&nbsp;the&nbsp;pseudo&nbsp;tables.&nbsp;<br>Then,&nbsp;the&nbsp;table&nbsp;structures&nbsp;of&nbsp;the&nbsp;real&nbsp;tables&nbsp;are&nbsp;copied&nbsp;to&nbsp;temp&nbsp;tables.&nbsp;<br>The&nbsp;real&nbsp;tables&nbsp;are&nbsp;then&nbsp;dropped.&nbsp;<br>The&nbsp;column&nbsp;in&nbsp;systables&nbsp;that&nbsp;contains&nbsp;partnum&nbsp;is&nbsp;updated&nbsp;to&nbsp;indicate&nbsp;they&nbsp;point&nbsp;to&nbsp;pseudo&nbsp;tables&nbsp;in&nbsp;shared&nbsp;memory.&nbsp;<br>The&nbsp;flags_text&nbsp;table&nbsp;is&nbsp;created&nbsp;which&nbsp;has&nbsp;the&nbsp;interpretations&nbsp;for&nbsp;all&nbsp;the&nbsp;text&nbsp;descriptions&nbsp;and&nbsp;flags&nbsp;used&nbsp;in&nbsp;the&nbsp;SMI&nbsp;tables.&nbsp;<br>The&nbsp;stored&nbsp;procedures&nbsp;are&nbsp;created&nbsp;that&nbsp;are&nbsp;used&nbsp;to&nbsp;create&nbsp;the&nbsp;views,&nbsp;two&nbsp;of&nbsp;which&nbsp;may&nbsp;be&nbsp;interesting:&nbsp;<br>-&nbsp;bitval()&nbsp;is&nbsp;a&nbsp;stored&nbsp;procedure&nbsp;for&nbsp;getting&nbsp;the&nbsp;boolean&nbsp;flag&nbsp;values&nbsp;<br>-&nbsp;l2date()&nbsp;is&nbsp;a&nbsp;stored&nbsp;procedure&nbsp;for&nbsp;converting&nbsp;unix&nbsp;time()&nbsp;long&nbsp;values&nbsp;to&nbsp;dates&nbsp;<br>Finally&nbsp;the&nbsp;script&nbsp;creates&nbsp;the&nbsp;SMI&nbsp;views.&nbsp;<br>After&nbsp;the&nbsp;sysmaster&nbsp;script&nbsp;is&nbsp;run&nbsp;the&nbsp;system&nbsp;will&nbsp;execute&nbsp;another&nbsp;script&nbsp;to&nbsp;create&nbsp;the&nbsp;on-archive&nbsp;tables&nbsp;and&nbsp;views&nbsp;in&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;<br>Warning:&nbsp;The&nbsp;sysmaster&nbsp;database&nbsp;is&nbsp;created&nbsp;the&nbsp;first&nbsp;time&nbsp;you&nbsp;go&nbsp;into&nbsp;online&nbsp;mode&nbsp;after&nbsp;you&nbsp;first&nbsp;initialize&nbsp;your&nbsp;system.&nbsp;Do&nbsp;NOT&nbsp;start&nbsp;creating&nbsp;any&nbsp;other&nbsp;database&nbsp;until&nbsp;this&nbsp;process&nbsp;is&nbsp;complete&nbsp;or&nbsp;you&nbsp;may&nbsp;corrupt&nbsp;your&nbsp;sysmaster&nbsp;database.&nbsp;You&nbsp;will&nbsp;need&nbsp;2000&nbsp;KB&nbsp;of&nbsp;logical&nbsp;log&nbsp;space&nbsp;to&nbsp;create&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;If&nbsp;there&nbsp;are&nbsp;problems&nbsp;creating&nbsp;the&nbsp;sysmaster&nbsp;database,&nbsp;shut&nbsp;your&nbsp;OnLine&nbsp;server&nbsp;down&nbsp;and&nbsp;restart&nbsp;it.&nbsp;This&nbsp;will&nbsp;re-create&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;Monitor&nbsp;your&nbsp;online.log&nbsp;file&nbsp;until&nbsp;you&nbsp;see&nbsp;the&nbsp;messages&nbsp;showing&nbsp;the&nbsp;successful&nbsp;completion&nbsp;of&nbsp;building&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;in&nbsp;the&nbsp;online.log&nbsp;(Figure&nbsp;4).<br><strong>Figure&nbsp;4.&nbsp;Online.log&nbsp;messages&nbsp;showing&nbsp;successful&nbsp;creation&nbsp;of&nbsp;sysmaster&nbsp;database</strong><br>12:10:24&nbsp;&nbsp;On-Line&nbsp;Mode<br>12:10:24&nbsp;&nbsp;Building&nbsp;&#39;sysmaster&#39;&nbsp;database&nbsp;...<br>12:11:02&nbsp;&nbsp;Logical&nbsp;Log&nbsp;1&nbsp;Complete.<br>12:11:03&nbsp;&nbsp;Process&nbsp;exited&nbsp;with&nbsp;return&nbsp;code&nbsp;1:&nbsp;/bin/sh&nbsp;/bin/sh&nbsp;-c&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/u3/informix7/log_full.sh&nbsp;2&nbsp;23&nbsp;&quot;Logical&nbsp;Log&nbsp;1&nbsp;Complete.&quot;&nbsp;&quot;Logical&nbsp;Log&nbsp;1&nbsp;Complete.&quot;<br>12:11:22&nbsp;&nbsp;Logical&nbsp;Log&nbsp;2&nbsp;Complete.<br>12:11:23&nbsp;&nbsp;Process&nbsp;exited&nbsp;with&nbsp;return&nbsp;code&nbsp;1:&nbsp;/bin/sh&nbsp;/bin/sh&nbsp;-c&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/u3/informix7/log_full.sh&nbsp;2&nbsp;23&nbsp;&quot;Logical&nbsp;Log&nbsp;2&nbsp;Complete.&quot;&nbsp;&quot;Logical&nbsp;Log&nbsp;2&nbsp;Complete.&quot;<br>12:11:26&nbsp;&nbsp;Checkpoint&nbsp;Completed:&nbsp;&nbsp;duration&nbsp;was&nbsp;3&nbsp;seconds.<br>12:11:40&nbsp;&nbsp;Logical&nbsp;Log&nbsp;3&nbsp;Complete.<br>12:11:41&nbsp;&nbsp;Process&nbsp;exited&nbsp;with&nbsp;return&nbsp;code&nbsp;1:&nbsp;/bin/sh&nbsp;/bin/sh&nbsp;-c&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/u3/informix7/log_full.sh&nbsp;2&nbsp;23&nbsp;&quot;Logical&nbsp;Log&nbsp;3&nbsp;Complete.&quot;&nbsp;&quot;Logical&nbsp;Log&nbsp;3&nbsp;Complete.&quot;<br>12:11:59&nbsp;&nbsp;Logical&nbsp;Log&nbsp;4&nbsp;Complete.<br>12:12:00&nbsp;&nbsp;Process&nbsp;exited&nbsp;with&nbsp;return&nbsp;code&nbsp;1:&nbsp;/bin/sh&nbsp;/bin/sh&nbsp;-c&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/u3/informix7/log_full.sh&nbsp;2&nbsp;23&nbsp;&quot;Logical&nbsp;Log&nbsp;4&nbsp;Complete.&quot;&nbsp;&quot;Logical&nbsp;Log&nbsp;4&nbsp;Complete.&quot;<br>12:12:25&nbsp;&nbsp;&#39;sysmaster&#39;&nbsp;database&nbsp;built&nbsp;successfully.<br>Supported&nbsp;SMI&nbsp;Tables<br>There&nbsp;are&nbsp;18&nbsp;supported&nbsp;SMI&nbsp;tables&nbsp;in&nbsp;release&nbsp;7.23&nbsp;of&nbsp;INFORMIX-OnLine&nbsp;DSA.&nbsp;We&nbsp;will&nbsp;discuss&nbsp;the&nbsp;more&nbsp;important&nbsp;ones&nbsp;and&nbsp;a&nbsp;few&nbsp;unsupported&nbsp;ones&nbsp;in&nbsp;this&nbsp;chapter.<br><img src="attachments/m&#111;nth_0906/2009060914221636807_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br>&nbsp;<br><strong>Figure&nbsp;5.&nbsp;Supported&nbsp;SMI&nbsp;tables</strong><br><u>Supported&nbsp;tables&nbsp;and&nbsp;views:&nbsp;&nbsp;(OnLine&nbsp;7.23)<br></u>sysadtinfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auditing&nbsp;configuration&nbsp;table<br>sysaudit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auditing&nbsp;event&nbsp;masks&nbsp;table<br>syschkio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chunk&nbsp;I/O&nbsp;statistics&nbsp;view<br>syschunks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chunk&nbsp;information&nbsp;view<br>sysconfig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;information&nbsp;view<br>sysdatabases&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database&nbsp;information&nbsp;view<br>sysdbslocale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;information&nbsp;view<br>sysdbspaces&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dbspace&nbsp;information&nbsp;view<br>sysdri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;replication&nbsp;view<br>sysextents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;extent&nbsp;allocation&nbsp;view<br>syslocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;lock&nbsp;information&nbsp;view<br>syslogs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logical&nbsp;Log&nbsp;status&nbsp;view<br>sysprofile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;system&nbsp;profile&nbsp;view<br>sysptptof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;table&nbsp;profile&nbsp;view<br>syssessions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;user&nbsp;sessions&nbsp;view<br>sysseswts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;wait&nbsp;times&nbsp;view<br>systabnames&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;information&nbsp;table<br>sysvpprof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;VP&nbsp;profile&nbsp;view<br>Differences&nbsp;From&nbsp;Other&nbsp;Databases<br>There&nbsp;are&nbsp;several&nbsp;key&nbsp;differences&nbsp;between&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;and&nbsp;other&nbsp;databases&nbsp;you&nbsp;might&nbsp;create.&nbsp;Reminder&nbsp;that&nbsp;this&nbsp;is&nbsp;a&nbsp;database&nbsp;that&nbsp;points&nbsp;to&nbsp;the&nbsp;server&#39;s&nbsp;shared&nbsp;memory&nbsp;structures&nbsp;and&nbsp;not&nbsp;to&nbsp;tables&nbsp;that&nbsp;are&nbsp;stored&nbsp;on&nbsp;disk.&nbsp;Some&nbsp;of&nbsp;the&nbsp;differences&nbsp;are:&nbsp;<br>You&nbsp;cannot&nbsp;update&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;Its&nbsp;purpose&nbsp;is&nbsp;to&nbsp;allow&nbsp;you&nbsp;to&nbsp;read&nbsp;information&nbsp;about&nbsp;the&nbsp;server.&nbsp;Trying&nbsp;to&nbsp;update&nbsp;its&nbsp;tables&nbsp;should&nbsp;generate&nbsp;an&nbsp;error&nbsp;message&nbsp;but&nbsp;may&nbsp;corrupt&nbsp;the&nbsp;server.&nbsp;<br>You&nbsp;cannot&nbsp;run&nbsp;dbschema&nbsp;on&nbsp;these&nbsp;table&nbsp;to&nbsp;get&nbsp;their&nbsp;structure.&nbsp;This&nbsp;will&nbsp;generate&nbsp;and&nbsp;error&nbsp;message.&nbsp;<br>You&nbsp;cannot&nbsp;drop&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;or&nbsp;any&nbsp;tables&nbsp;within&nbsp;it.&nbsp;Again,&nbsp;this&nbsp;should&nbsp;generate&nbsp;an&nbsp;error&nbsp;message.&nbsp;<br>The&nbsp;data&nbsp;is&nbsp;dynamic&nbsp;and&nbsp;may&nbsp;change&nbsp;while&nbsp;you&nbsp;are&nbsp;retrieving&nbsp;it.&nbsp;The&nbsp;sysmaster&nbsp;database&nbsp;has&nbsp;an&nbsp;effective&nbsp;isolation&nbsp;level&nbsp;of&nbsp;dirty&nbsp;read&nbsp;even&nbsp;though&nbsp;it&nbsp;looks&nbsp;like&nbsp;a&nbsp;database&nbsp;with&nbsp;unbuffered&nbsp;logging.&nbsp;This&nbsp;prevents&nbsp;your&nbsp;queries&nbsp;from&nbsp;locking&nbsp;users&nbsp;and&nbsp;slowing&nbsp;down&nbsp;their&nbsp;processing.&nbsp;<br>However,&nbsp;because&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;uses&nbsp;unbuffered&nbsp;logging,&nbsp;its&nbsp;temp&nbsp;tables&nbsp;are&nbsp;logged.&nbsp;<br>You&nbsp;can&nbsp;create&nbsp;triggers&nbsp;and&nbsp;stored&nbsp;procedures&nbsp;on&nbsp;the&nbsp;sysmaster&nbsp;database,&nbsp;but&nbsp;the&nbsp;triggers&nbsp;will&nbsp;never&nbsp;be&nbsp;executed.&nbsp;Again,&nbsp;this&nbsp;is&nbsp;because&nbsp;this&nbsp;is&nbsp;not&nbsp;a&nbsp;real&nbsp;database&nbsp;but&nbsp;pointers&nbsp;to&nbsp;shared&nbsp;memory.&nbsp;<br>The&nbsp;sysmaster&nbsp;database&nbsp;reads&nbsp;the&nbsp;same&nbsp;shared&nbsp;memory&nbsp;structures&nbsp;read&nbsp;by&nbsp;the&nbsp;command&nbsp;line&nbsp;utility&nbsp;&quot;onstat&quot;.&nbsp;The&nbsp;statistical&nbsp;data&nbsp;is&nbsp;reset&nbsp;to&nbsp;zero&nbsp;when&nbsp;OnLine&nbsp;is&nbsp;shut&nbsp;down&nbsp;and&nbsp;restarted.<br>It&nbsp;is&nbsp;also&nbsp;reset&nbsp;to&nbsp;zero&nbsp;when&nbsp;the&nbsp;&quot;onstat&nbsp;-z&quot;&nbsp;command&nbsp;to&nbsp;reset&nbsp;statistics&nbsp;is&nbsp;used.&nbsp;Individual&nbsp;user&nbsp;statistical&nbsp;data&nbsp;is&nbsp;lost&nbsp;when&nbsp;a&nbsp;user&nbsp;disconnects&nbsp;from&nbsp;the&nbsp;server.<br>Now,&nbsp;let&#39;s&nbsp;examine&nbsp;some&nbsp;of&nbsp;the&nbsp;more&nbsp;interesting&nbsp;tables&nbsp;in&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;and&nbsp;what&nbsp;else&nbsp;can&nbsp;be&nbsp;done&nbsp;with&nbsp;them.&nbsp;<br><u>3.&nbsp;Server&nbsp;Information</u><br>This&nbsp;first&nbsp;section&nbsp;will&nbsp;look&nbsp;at&nbsp;how&nbsp;you&nbsp;determine&nbsp;the&nbsp;state&nbsp;and&nbsp;configuration&nbsp;of&nbsp;your&nbsp;INFORMIX-OnLine&nbsp;server&nbsp;from&nbsp;the&nbsp;sysmaster&nbsp;database.&nbsp;We&nbsp;will&nbsp;look&nbsp;at&nbsp;four&nbsp;tables&nbsp;and&nbsp;how&nbsp;to&nbsp;use&nbsp;them.<br>Server&nbsp;configuration&nbsp;and&nbsp;statistics&nbsp;tables:<br>sysconfig&nbsp;-&nbsp;ONCONFIG&nbsp;File&nbsp;<br>sysprofile&nbsp;-&nbsp;Server&nbsp;Statistics&nbsp;<br>syslogs&nbsp;-&nbsp;Logical&nbsp;Logs&nbsp;<br>sysvpprof&nbsp;-&nbsp;Virtual&nbsp;Processors&nbsp;<br><strong>Server&nbsp;Configuration&nbsp;Parameters:&nbsp;sysconfig</strong><br>The&nbsp;view&nbsp;sysonfig&nbsp;contains&nbsp;configuration&nbsp;information&nbsp;from&nbsp;the&nbsp;OnLine&nbsp;server.&nbsp;This&nbsp;information&nbsp;was&nbsp;read&nbsp;from&nbsp;the&nbsp;ONCONFIG&nbsp;file&nbsp;when&nbsp;the&nbsp;server&nbsp;was&nbsp;started.&nbsp;Have&nbsp;you&nbsp;ever&nbsp;needed&nbsp;to&nbsp;know&nbsp;from&nbsp;within&nbsp;a&nbsp;program&nbsp;how&nbsp;your&nbsp;server&nbsp;was&nbsp;setup?&nbsp;Or,&nbsp;what&nbsp;TAPEDEV&nbsp;is&nbsp;set&nbsp;to?&nbsp;<strong>View&nbsp;sysconfig<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unique&nbsp;numeric&nbsp;identifier<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config&nbsp;parameter&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags,&nbsp;0&nbsp;=&nbsp;in&nbsp;view&nbsp;sysconfig<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_original&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(256)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;in&nbsp;ONCONFIG&nbsp;at&nbsp;boottime<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_effective&nbsp;&nbsp;&nbsp;&nbsp;char(256)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;effectively&nbsp;in&nbsp;use<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf_default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(256)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;by&nbsp;default<br><strong><em>Example&nbsp;queries:</em></strong>&nbsp;<br>To&nbsp;find&nbsp;out&nbsp;what&nbsp;the&nbsp;current&nbsp;tape&nbsp;device&nbsp;is:&nbsp;<br>select&nbsp;cf_effective&nbsp;from&nbsp;sysconfig&nbsp;where&nbsp;cf_name&nbsp;=&nbsp;&quot;TAPEDEV&quot;;&nbsp;<br>To&nbsp;find&nbsp;the&nbsp;server&nbsp;name:&nbsp;<br>select&nbsp;cf_effective&nbsp;from&nbsp;sysconfig&nbsp;where&nbsp;cf_name&nbsp;=&nbsp;<br>&quot;DBSERVERNAME&quot;;&nbsp;<br>To&nbsp;find&nbsp;out&nbsp;if&nbsp;data&nbsp;replication&nbsp;is&nbsp;turned&nbsp;on:&nbsp;<br>select&nbsp;cf_effective&nbsp;from&nbsp;sysconfig&nbsp;where&nbsp;cf_name&nbsp;=&nbsp;&quot;DRAUTO&quot;;&nbsp;<br><strong>Server&nbsp;Profile&nbsp;Information:&nbsp;sysprofile</strong><br>The&nbsp;sysprofile&nbsp;table&nbsp;is&nbsp;a&nbsp;view&nbsp;based&nbsp;on&nbsp;values&nbsp;in&nbsp;a&nbsp;table&nbsp;called&nbsp;syshmhdr.&nbsp;Syshmhdr&nbsp;points&nbsp;to&nbsp;the&nbsp;same&nbsp;shared&nbsp;memory&nbsp;area&nbsp;as&nbsp;the&nbsp;onstat&nbsp;utility&nbsp;with&nbsp;the&nbsp;-p&nbsp;option.&nbsp;When&nbsp;you&nbsp;zero&nbsp;out&nbsp;the&nbsp;statistics&nbsp;with&nbsp;&quot;onstat&nbsp;-z&quot;,&nbsp;all&nbsp;values&nbsp;in&nbsp;the&nbsp;syshmhdr&nbsp;table&nbsp;are&nbsp;reset&nbsp;to&nbsp;zero.<strong>View&nbsp;sysprofile<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;profile&nbsp;element&nbsp;name&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;value<br>One&nbsp;of&nbsp;the&nbsp;best&nbsp;uses&nbsp;of&nbsp;this&nbsp;data&nbsp;is&nbsp;for&nbsp;developing&nbsp;alarms&nbsp;when&nbsp;certain&nbsp;values&nbsp;fall&nbsp;below&nbsp;acceptable&nbsp;levels.&nbsp;The&nbsp;Informix&nbsp;documentation&nbsp;says&nbsp;that&nbsp;tables&nbsp;in&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;do&nbsp;not&nbsp;run&nbsp;triggers.&nbsp;This&nbsp;is&nbsp;because&nbsp;the&nbsp;updates&nbsp;to&nbsp;these&nbsp;tables&nbsp;take&nbsp;place&nbsp;within&nbsp;OnLine&nbsp;shared&nbsp;memory&nbsp;and&nbsp;not&nbsp;through&nbsp;SQL&nbsp;which&nbsp;activates&nbsp;triggers.&nbsp;However,&nbsp;you&nbsp;can&nbsp;create&nbsp;a&nbsp;program&nbsp;to&nbsp;poll&nbsp;this&nbsp;table&nbsp;at&nbsp;specified&nbsp;intervals&nbsp;to&nbsp;select&nbsp;data&nbsp;and&nbsp;see&nbsp;if&nbsp;it&nbsp;falls&nbsp;below&nbsp;your&nbsp;expectations.<br><strong>Logical&nbsp;Logs&nbsp;Information:&nbsp;syslogs</strong><br>Syslogs&nbsp;is&nbsp;a&nbsp;view&nbsp;based&nbsp;on&nbsp;the&nbsp;table&nbsp;syslogfil.&nbsp;This&nbsp;is&nbsp;an&nbsp;example&nbsp;where&nbsp;the&nbsp;SMI&nbsp;views&nbsp;are&nbsp;a&nbsp;great&nbsp;tool&nbsp;in&nbsp;presenting&nbsp;the&nbsp;data&nbsp;in&nbsp;a&nbsp;more&nbsp;understandable&nbsp;format.&nbsp;Syslogfil&nbsp;has&nbsp;a&nbsp;field&nbsp;called&nbsp;flags&nbsp;which&nbsp;contains&nbsp;status&nbsp;information&nbsp;encoded&nbsp;in&nbsp;boolean&nbsp;smallint.&nbsp;The&nbsp;view&nbsp;syslogs&nbsp;decodes&nbsp;that&nbsp;data&nbsp;into&nbsp;six&nbsp;fields:&nbsp;is_used,&nbsp;is_current,&nbsp;is_backed_up,&nbsp;is_new,&nbsp;is_archived,&nbsp;and&nbsp;is_temp,&nbsp;with&nbsp;a&nbsp;1&nbsp;if&nbsp;true&nbsp;or&nbsp;a&nbsp;0&nbsp;if&nbsp;false.<strong>View&nbsp;syslogs<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfile&nbsp;number&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uniqid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfile&nbsp;uniqid&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages&nbsp;in&nbsp;logfile&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages&nbsp;used&nbsp;in&nbsp;logfile&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;used,&nbsp;0&nbsp;for&nbsp;free<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_current&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;current<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_backed_up&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;backuped<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;new<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_archived&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;archived<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;for&nbsp;temp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfile&nbsp;flags<br><strong>Virtual&nbsp;Processor&nbsp;Information&nbsp;and&nbsp;Statistics:&nbsp;sysvpprof</strong><br>Sysvpprof&nbsp;is&nbsp;another&nbsp;view&nbsp;that&nbsp;is&nbsp;more&nbsp;readable&nbsp;than&nbsp;the&nbsp;underlying&nbsp;table&nbsp;sysvplst.&nbsp;As&nbsp;with&nbsp;the&nbsp;view&nbsp;syslogs&nbsp;in&nbsp;the&nbsp;above&nbsp;paragraph,&nbsp;this&nbsp;view&nbsp;has&nbsp;data&nbsp;that&nbsp;is&nbsp;converted&nbsp;to&nbsp;make&nbsp;it&nbsp;more&nbsp;understandable.&nbsp;This&nbsp;time&nbsp;the&nbsp;flags&nbsp;are&nbsp;converted&nbsp;to&nbsp;text&nbsp;descriptions&nbsp;from&nbsp;the&nbsp;flags_text&nbsp;table.<strong>View&nbsp;sysvpprof<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vpid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VP&nbsp;id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(50)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VP&nbsp;class&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;unix&nbsp;secs&nbsp;of&nbsp;user&nbsp;time<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;unix&nbsp;secs&nbsp;of&nbsp;system&nbsp;time<br>The&nbsp;following&nbsp;query&nbsp;on&nbsp;the&nbsp;base&nbsp;table&nbsp;sysvplst&nbsp;achieves&nbsp;the&nbsp;same&nbsp;results&nbsp;as&nbsp;the&nbsp;view.<br><strong>Figure&nbsp;6.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;display&nbsp;VP&nbsp;status</strong><br>--&nbsp;vpstat.sql<br>select&nbsp;&nbsp;vpid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt[1,5]&nbsp;class,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_user,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_sys,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_ready<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysvplst&nbsp;a,&nbsp;flags_text&nbsp;b<br>where&nbsp;&nbsp;&nbsp;a.flags&nbsp;!=&nbsp;6<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.class&nbsp;=&nbsp;b.flags<br>and&nbsp;b.tabname&nbsp;=&nbsp;&#39;sysvplst&#39;;<br>&nbsp;&nbsp;<br><u>SQL&nbsp;Output<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vpid&nbsp;class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usecs_sys&nbsp;&nbsp;&nbsp;num_ready<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;cpu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;335&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;793.61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30.46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;336&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;lio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;337&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;pio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;338&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;339&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;msc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;340&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;341&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.72&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;tli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;342&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.79&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;343&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;345&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.09&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.86&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;aio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;346&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;<br><strong>4.&nbsp;Dbspace&nbsp;and&nbsp;Chunk&nbsp;Information</strong><br>Now&nbsp;let&#39;s&nbsp;look&nbsp;at&nbsp;the&nbsp;SMI&nbsp;tables&nbsp;that&nbsp;contain&nbsp;information&nbsp;about&nbsp;your&nbsp;disk&nbsp;space,&nbsp;chunks,&nbsp;and&nbsp;dbspace.&nbsp;There&nbsp;are&nbsp;four&nbsp;tables&nbsp;that&nbsp;contain&nbsp;this&nbsp;data.&nbsp;<br>sysdbspaces&nbsp;-&nbsp;DB&nbsp;Spaces&nbsp;<br>syschunks&nbsp;-&nbsp;Chunks&nbsp;<br>syschkio&nbsp;-&nbsp;I/O&nbsp;by&nbsp;Chunk&nbsp;<br>syschfree*&nbsp;-&nbsp;Free&nbsp;Space&nbsp;by&nbsp;Chunk&nbsp;<br>*&nbsp;Note:&nbsp;Syschfree&nbsp;is&nbsp;not&nbsp;a&nbsp;supported&nbsp;table.<br><strong>Dbspace&nbsp;Configuration:&nbsp;sysdbspaces</strong><br>The&nbsp;sysmaster&nbsp;database&nbsp;has&nbsp;three&nbsp;key&nbsp;tables&nbsp;containing&nbsp;dbspace&nbsp;and&nbsp;chunk&nbsp;information.&nbsp;The&nbsp;first&nbsp;one&nbsp;is&nbsp;sysdbspaces.&nbsp;This&nbsp;is&nbsp;a&nbsp;view&nbsp;that&nbsp;interprets&nbsp;the&nbsp;underlying&nbsp;table&nbsp;sysdbstab.&nbsp;Sysdbspaces&nbsp;serves&nbsp;two&nbsp;purposes:&nbsp;it&nbsp;translates&nbsp;a&nbsp;bit&nbsp;field&nbsp;containing&nbsp;flags&nbsp;into&nbsp;separate&nbsp;columns&nbsp;where&nbsp;1&nbsp;equals&nbsp;yes&nbsp;and&nbsp;0&nbsp;equals&nbsp;no,&nbsp;and,&nbsp;it&nbsp;allows&nbsp;the&nbsp;underlying&nbsp;table&nbsp;to&nbsp;change&nbsp;between&nbsp;releases&nbsp;without&nbsp;having&nbsp;to&nbsp;change&nbsp;code.&nbsp;The&nbsp;view&nbsp;is&nbsp;defined&nbsp;as&nbsp;follows:<strong>View&nbsp;sysdbspaces<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace&nbsp;number,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace&nbsp;name,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace&nbsp;owner,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fchunk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first&nbsp;chunk&nbsp;in&nbsp;dbspace,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nchunks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;chunks&nbsp;in&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_mirrored&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;dbspace&nbsp;mirrored,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_blobspace&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;dbspace&nbsp;a&nbsp;blob&nbsp;space,&nbsp;1=Yes,&nbsp;2=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;dbspace&nbsp;temp,&nbsp;1=Yes,&nbsp;2=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace&nbsp;flags<br>The&nbsp;columns&nbsp;of&nbsp;type&nbsp;bitval&nbsp;are&nbsp;the&nbsp;flags&nbsp;that&nbsp;are&nbsp;extracted&nbsp;from&nbsp;the&nbsp;flags&nbsp;column&nbsp;by&nbsp;a&nbsp;stored&nbsp;procedure&nbsp;called&nbsp;bitval&nbsp;when&nbsp;the&nbsp;view&nbsp;is&nbsp;generated.<br><strong>Chunk&nbsp;Configuration:&nbsp;syschunks</strong><br>The&nbsp;syschunks&nbsp;table&nbsp;is&nbsp;also&nbsp;a&nbsp;view&nbsp;based&nbsp;on&nbsp;two&nbsp;actual&nbsp;tables,&nbsp;one&nbsp;for&nbsp;primary&nbsp;chunk&nbsp;information,&nbsp;syschktab,&nbsp;and&nbsp;one&nbsp;for&nbsp;mirror&nbsp;chunk&nbsp;information,&nbsp;sysmchktab.&nbsp;The&nbsp;following&nbsp;is&nbsp;the&nbsp;layout&nbsp;of&nbsp;syschunks:<strong>View&nbsp;syschunks<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunk&nbsp;number&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace&nbsp;number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nxchknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;next&nbsp;chunk&nbsp;in&nbsp;dbspace<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chksize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages&nbsp;in&nbsp;chunk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages&nbsp;offset&nbsp;into&nbsp;device&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free&nbsp;pages&nbsp;in&nbsp;chunk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_offline&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;chunk&nbsp;offline,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_recovering&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;chunk&nbsp;recovering,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_blobchunk&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;chunk&nbsp;blobchunk,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_inconsistent&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;chunk&nbsp;inconsistent,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunk&nbsp;flags&nbsp;converted&nbsp;by&nbsp;bitval<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(128)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device&nbsp;pathname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mfname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(128)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mirror&nbsp;device&nbsp;pathname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moffset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages&nbsp;offset&nbsp;into&nbsp;mirror&nbsp;device&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mis_offline&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;mirror&nbsp;offline,&nbsp;1=Yes,&nbsp;0=No&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mis_recovering&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;mirror&nbsp;recovering,&nbsp;1=Yes,&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mflags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mirror&nbsp;chunk&nbsp;flags<br>Displaying&nbsp;Free&nbsp;Dbspace<br>Now,&nbsp;we&nbsp;will&nbsp;take&nbsp;a&nbsp;look&nbsp;at&nbsp;several&nbsp;ways&nbsp;to&nbsp;use&nbsp;this&nbsp;dbspace&nbsp;and&nbsp;chunk&nbsp;information.&nbsp;One&nbsp;capability&nbsp;I&nbsp;have&nbsp;always&nbsp;wanted&nbsp;is&nbsp;a&nbsp;way&nbsp;to&nbsp;show&nbsp;the&nbsp;amount&nbsp;of&nbsp;dbspace&nbsp;used&nbsp;and&nbsp;free&nbsp;in&nbsp;the&nbsp;same&nbsp;format&nbsp;as&nbsp;the&nbsp;Unix&nbsp;&quot;df&nbsp;-k&quot;&nbsp;command.&nbsp;The&nbsp;sysmaster&nbsp;database&nbsp;contains&nbsp;information&nbsp;about&nbsp;the&nbsp;dbspaces&nbsp;and&nbsp;chunks,&nbsp;so&nbsp;this&nbsp;can&nbsp;be&nbsp;generated&nbsp;with&nbsp;an&nbsp;SQL&nbsp;script.&nbsp;The&nbsp;following&nbsp;is&nbsp;an&nbsp;SQL&nbsp;script&nbsp;to&nbsp;generate&nbsp;the&nbsp;amount&nbsp;of&nbsp;free&nbsp;space&nbsp;in&nbsp;a&nbsp;dbspace.&nbsp;It&nbsp;uses&nbsp;the&nbsp;sysdbspaces&nbsp;and&nbsp;syschunks&nbsp;tables&nbsp;to&nbsp;collect&nbsp;its&nbsp;information.<br><strong>Figure&nbsp;7.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;display&nbsp;free&nbsp;dbspace</strong><br>--&nbsp;dbsfree.sql&nbsp;-&nbsp;display&nbsp;free&nbsp;dbspace&nbsp;like&nbsp;Unix&nbsp;&quot;df&nbsp;-k&nbsp;&quot;&nbsp;command<br>database&nbsp;sysmaster;<br>select&nbsp;&nbsp;name[1,8]&nbsp;dbspace,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;name&nbsp;truncated&nbsp;to&nbsp;fit&nbsp;on&nbsp;one&nbsp;line<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(chksize)&nbsp;Pages_size,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;sum&nbsp;of&nbsp;all&nbsp;chunks&nbsp;size&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(chksize)&nbsp;-&nbsp;sum(nfree)&nbsp;Pages_used,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(nfree)&nbsp;Pages_free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;sum&nbsp;of&nbsp;all&nbsp;chunks&nbsp;free&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round&nbsp;((sum(nfree))&nbsp;/&nbsp;(sum(chksize))&nbsp;*&nbsp;100,&nbsp;2)&nbsp;percent_free<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysdbspaces&nbsp;d,&nbsp;syschunks&nbsp;c<br>where&nbsp;&nbsp;&nbsp;d.dbsnum&nbsp;=&nbsp;c.dbsnum<br>group&nbsp;by&nbsp;1<br>order&nbsp;by&nbsp;1;<br><u>Sample&nbsp;output<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages_used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pages_free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percent_free<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13521&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;36479&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;72.96<br>dbspace1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;87532&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12468&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.47<br>dbspace2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;62876&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37.12<br>dbspace3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;99799&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;99.80<br>Displaying&nbsp;Chunk&nbsp;Status<br>The&nbsp;next&nbsp;script&nbsp;lists&nbsp;the&nbsp;status&nbsp;and&nbsp;characteristics&nbsp;of&nbsp;each&nbsp;chunk&nbsp;device.<br><strong>Figure&nbsp;8.&nbsp;SQL&nbsp;script&nbsp;showing&nbsp;chunk&nbsp;status</strong><br>--&nbsp;chkstatus.sql&nbsp;-&nbsp;display&nbsp;information&nbsp;about&nbsp;a&nbsp;chunk<br>database&nbsp;sysmaster;<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;dbspace,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dbspace&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_mirrored,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dbspace&nbsp;is&nbsp;mirrored&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_blobspace,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dbspace&nbsp;is&nbsp;blobspace&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_temp,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dbspace&nbsp;is&nbsp;temp&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum&nbsp;chunknum,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;chunk&nbsp;number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fname&nbsp;&nbsp;device,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dev&nbsp;path<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;dev_offset,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;dev&nbsp;offset<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_offline,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Offline&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_recovering,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Recovering&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_blobchunk,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Blobspace&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_inconsistent,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Inconsistent&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chksize&nbsp;Pages_size,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;chunk&nbsp;size&nbsp;in&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(chksize&nbsp;-&nbsp;nfree)&nbsp;Pages_used,&nbsp;--&nbsp;chunk&nbsp;pages&nbsp;used<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfree&nbsp;Pages_free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;chunk&nbsp;free&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round&nbsp;((nfree&nbsp;/&nbsp;chksize)&nbsp;*&nbsp;100,&nbsp;2)&nbsp;percent_free,&nbsp;--&nbsp;free<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mfname&nbsp;mirror_device,&nbsp;&nbsp;&nbsp;--&nbsp;mirror&nbsp;dev&nbsp;path<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moffset&nbsp;mirror_offset,&nbsp;&nbsp;--&nbsp;mirror&nbsp;dev&nbsp;offset<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mis_offline&nbsp;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;mirror&nbsp;offline&nbsp;1=Yes&nbsp;0=No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mis_recovering&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;mirror&nbsp;recovering&nbsp;&nbsp;1=Yes&nbsp;0=No<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysdbspaces&nbsp;d,&nbsp;syschunks&nbsp;c<br>where&nbsp;d.dbsnum&nbsp;=&nbsp;c.dbsnum<br>order&nbsp;by&nbsp;dbspace,&nbsp;chunknum<br><strong>Displaying&nbsp;Blocks&nbsp;of&nbsp;Free&nbsp;Space&nbsp;in&nbsp;a&nbsp;Chunk:&nbsp;syscchfree</strong><br>In&nbsp;planning&nbsp;expansions,&nbsp;new&nbsp;databases,&nbsp;or&nbsp;when&nbsp;adding&nbsp;new&nbsp;tables&nbsp;to&nbsp;an&nbsp;existing&nbsp;server,&nbsp;I&nbsp;like&nbsp;to&nbsp;know&nbsp;what&nbsp;blocks&nbsp;of&nbsp;contiguous&nbsp;free&nbsp;space&nbsp;are&nbsp;available.&nbsp;This&nbsp;allows&nbsp;placing&nbsp;new&nbsp;tables&nbsp;in&nbsp;dbspaces&nbsp;where&nbsp;they&nbsp;will&nbsp;not&nbsp;be&nbsp;broken&nbsp;up&nbsp;by&nbsp;extents.&nbsp;One&nbsp;of&nbsp;the&nbsp;sysmaster&nbsp;tables&nbsp;tracks&nbsp;the&nbsp;chunk&nbsp;free&nbsp;list,&nbsp;which&nbsp;is&nbsp;the&nbsp;available&nbsp;space&nbsp;in&nbsp;a&nbsp;chunk.&nbsp;<strong>Table&nbsp;syschfree<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunk&nbsp;number&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;extnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extent&nbsp;number&nbsp;in&nbsp;chunk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;physical&nbsp;addr&nbsp;of&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;of&nbsp;extent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>The&nbsp;next&nbsp;script&nbsp;uses&nbsp;this&nbsp;table&nbsp;to&nbsp;create&nbsp;a&nbsp;list&nbsp;of&nbsp;free&nbsp;space&nbsp;and&nbsp;the&nbsp;size&nbsp;of&nbsp;each&nbsp;space&nbsp;that&nbsp;is&nbsp;available.<br><strong>Figure&nbsp;9.&nbsp;SQL&nbsp;script&nbsp;showing&nbsp;free&nbsp;space&nbsp;on&nbsp;chunks</strong><br>--&nbsp;chkflist.sql&nbsp;-&nbsp;display&nbsp;list&nbsp;of&nbsp;free&nbsp;space&nbsp;within&nbsp;a&nbsp;chunk<br>database&nbsp;sysmaster;<br>select&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;dbspace,&nbsp;&nbsp;&nbsp;--&nbsp;dbspace&nbsp;name&nbsp;truncated&nbsp;to&nbsp;fit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.chknum,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;chunk&nbsp;number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.extnum,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;extent&nbsp;number&nbsp;of&nbsp;free&nbsp;space<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.start,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;starting&nbsp;address&nbsp;of&nbsp;free&nbsp;space<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.leng&nbsp;free_pages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;length&nbsp;of&nbsp;free&nbsp;space<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysdbspaces&nbsp;d,&nbsp;syschunks&nbsp;c,&nbsp;syschfree&nbsp;f<br>where&nbsp;d.dbsnum&nbsp;=&nbsp;c.dbsnum<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.chknum&nbsp;=&nbsp;f.chknum<br>order&nbsp;by&nbsp;dbspace,&nbsp;chknum<br><u>Sample&nbsp;Output&nbsp;<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;&nbsp;free_pages<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11905&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1608<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34871<br><strong>IO&nbsp;Statistics&nbsp;by&nbsp;Chunk&nbsp;Devices:&nbsp;syschkio</strong><br>Informix&nbsp;uses&nbsp;a&nbsp;view,&nbsp;syschkio,&nbsp;to&nbsp;collect&nbsp;information&nbsp;about&nbsp;the&nbsp;number&nbsp;of&nbsp;disk&nbsp;reads&nbsp;and&nbsp;writes&nbsp;per&nbsp;chunk.&nbsp;This&nbsp;view&nbsp;is&nbsp;based&nbsp;on&nbsp;the&nbsp;tables&nbsp;syschktab&nbsp;and&nbsp;symchktab.<strong>View&nbsp;syschkio&nbsp;<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunk&nbsp;number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;read&nbsp;ops<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;pages&nbsp;read<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;write&nbsp;ops<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;pages&nbsp;written<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;mirror&nbsp;read&nbsp;ops<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpagesread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;mirror&nbsp;pages&nbsp;read<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mwrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;mirror&nbsp;write&nbsp;ops<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpageswritten&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;mirror&nbsp;pages&nbsp;written<br>The&nbsp;following&nbsp;script&nbsp;displays&nbsp;IO&nbsp;usage&nbsp;of&nbsp;chunk&nbsp;devices.&nbsp;It&nbsp;uses&nbsp;the&nbsp;base&nbsp;tables&nbsp;so&nbsp;the&nbsp;mirror&nbsp;chunks&nbsp;can&nbsp;be&nbsp;displayed&nbsp;on&nbsp;separate&nbsp;rows.&nbsp;It&nbsp;also&nbsp;joins&nbsp;with&nbsp;the&nbsp;base&nbsp;table&nbsp;that&nbsp;contains&nbsp;the&nbsp;dbspace&nbsp;name.<br><strong>Figure&nbsp;10.&nbsp;SQL&nbsp;script&nbsp;displaying&nbsp;chunk&nbsp;I/O</strong><br>--&nbsp;chkio.sql&nbsp;-&nbsp;displays&nbsp;chunk&nbsp;IO&nbsp;status<br>database&nbsp;sysmaster;<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name[1,10]&nbsp;dbspace,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;truncated&nbsp;to&nbsp;fit&nbsp;80&nbsp;char&nbsp;screen&nbsp;line<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Primary&quot;&nbsp;chktype,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten<br>from&nbsp;&nbsp;&nbsp;&nbsp;syschktab&nbsp;c,&nbsp;sysdbstab&nbsp;d<br>where&nbsp;&nbsp;&nbsp;c.dbsnum&nbsp;=&nbsp;d.dbsnum<br>union&nbsp;all<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name[1,10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Mirror&quot;&nbsp;&nbsp;&nbsp;&nbsp;chktype,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysmchktab&nbsp;c,&nbsp;sysdbstab&nbsp;d<br>where&nbsp;&nbsp;&nbsp;c.dbsnum&nbsp;=&nbsp;d.dbsnum<br>order&nbsp;by&nbsp;1,2,3;&nbsp;<br><u>Sample&nbsp;Output<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;chknum&nbsp;chktype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes&nbsp;&nbsp;&nbsp;pagesread&nbsp;pageswritten<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;74209&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;165064&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;209177&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;308004<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;Mirror&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;69401&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;159832&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;209018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;307985<br>A&nbsp;better&nbsp;view&nbsp;of&nbsp;your&nbsp;IO&nbsp;is&nbsp;to&nbsp;see&nbsp;the&nbsp;percent&nbsp;of&nbsp;the&nbsp;total&nbsp;IO&nbsp;that&nbsp;takes&nbsp;place&nbsp;per&nbsp;chunk.&nbsp;This&nbsp;next&nbsp;query&nbsp;collects&nbsp;IO&nbsp;stats&nbsp;into&nbsp;a&nbsp;temp&nbsp;table,&nbsp;and&nbsp;then&nbsp;uses&nbsp;that&nbsp;to&nbsp;calculate&nbsp;total&nbsp;IO&nbsp;stats&nbsp;for&nbsp;all&nbsp;chunks.&nbsp;Then&nbsp;each&nbsp;chunk&#39;s&nbsp;IO&nbsp;is&nbsp;compared&nbsp;with&nbsp;the&nbsp;total&nbsp;to&nbsp;determine&nbsp;the&nbsp;percent&nbsp;of&nbsp;IO&nbsp;by&nbsp;chunk.&nbsp;The&nbsp;following&nbsp;script&nbsp;uses&nbsp;the&nbsp;one&nbsp;above&nbsp;as&nbsp;a&nbsp;basis&nbsp;to&nbsp;show&nbsp;IO&nbsp;by&nbsp;chunk&nbsp;as&nbsp;a&nbsp;percent&nbsp;of&nbsp;the&nbsp;total&nbsp;IO.<br><strong>Figure&nbsp;11.&nbsp;SQL&nbsp;script&nbsp;chunk&nbsp;I/O&nbsp;summary</strong><br>--&nbsp;chkiosum.sql&nbsp;-&nbsp;calculates&nbsp;percent&nbsp;of&nbsp;IO&nbsp;by&nbsp;chunk<br>database&nbsp;sysmaster;<br>--&nbsp;Collect&nbsp;chunk&nbsp;IO&nbsp;stats&nbsp;into&nbsp;temp&nbsp;table&nbsp;A<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Primary&quot;&nbsp;chktype,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten<br>from&nbsp;&nbsp;&nbsp;&nbsp;syschktab&nbsp;c,&nbsp;sysdbstab&nbsp;d<br>where&nbsp;&nbsp;&nbsp;c.dbsnum&nbsp;=&nbsp;d.dbsnum<br>union&nbsp;all<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name[1,10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Mirror&quot;&nbsp;&nbsp;&nbsp;&nbsp;chktype,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysmchktab&nbsp;c,&nbsp;sysdbstab&nbsp;d<br>where&nbsp;&nbsp;&nbsp;c.dbsnum&nbsp;=&nbsp;d.dbsnum<br>into&nbsp;temp&nbsp;A;<br>--&nbsp;Collect&nbsp;total&nbsp;IO&nbsp;stats&nbsp;into&nbsp;temp&nbsp;table&nbsp;B<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(reads)&nbsp;total_reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(writes)&nbsp;total_writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(pagesread)&nbsp;total_pgreads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(pageswritten)&nbsp;total_pgwrites<br>from&nbsp;A<br>into&nbsp;temp&nbsp;B;<br>--&nbsp;Report&nbsp;showing&nbsp;each&nbsp;chunks&nbsp;percent&nbsp;of&nbsp;total&nbsp;IO<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chknum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chktype,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageswritten,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round((reads/total_reads)&nbsp;*100,&nbsp;2)&nbsp;percent_reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round((writes/total_writes)&nbsp;*100,&nbsp;2)&nbsp;percent_writes,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round((pagesread/total_pgreads)&nbsp;*100,&nbsp;2)&nbsp;percent_pg_reads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round((pageswritten/total_pgwrites)&nbsp;*100,&nbsp;2)&nbsp;percent_pg_writes<br>from&nbsp;&nbsp;&nbsp;&nbsp;A,&nbsp;B<br>order&nbsp;by&nbsp;11;--&nbsp;order&nbsp;by&nbsp;percent&nbsp;page&nbsp;writes<br><u>Sample&nbsp;output&nbsp;for&nbsp;1&nbsp;chunk<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datadbs<br>chknum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9<br>chktype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Primary<br>reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12001<br>writes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9804<br>pagesread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23894<br>pageswritten&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14584<br>percent_reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.33<br>percent_writes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.75<br>percent_pg_reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37.59<br>percent_pg_writes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.86<br><u>5.&nbsp;Database&nbsp;and&nbsp;Table&nbsp;Information</u><br>The&nbsp;next&nbsp;five&nbsp;tables&nbsp;we&nbsp;will&nbsp;look&nbsp;at&nbsp;store&nbsp;information&nbsp;on&nbsp;your&nbsp;tables&nbsp;and&nbsp;extents.&nbsp;They&nbsp;are:&nbsp;<br>sysdatabases&nbsp;-&nbsp;Databases&nbsp;<br>systabnames&nbsp;-&nbsp;Tables&nbsp;<br>sysextents&nbsp;-&nbsp;Tables&nbsp;extents&nbsp;<br>sysptprof&nbsp;-&nbsp;Tables&nbsp;I/O&nbsp;<br><strong>Information&nbsp;on&nbsp;All&nbsp;Databases&nbsp;on&nbsp;a&nbsp;Server:&nbsp;sysdatabases</strong><br>This&nbsp;view&nbsp;has&nbsp;data&nbsp;on&nbsp;all&nbsp;databases&nbsp;on&nbsp;a&nbsp;server.&nbsp;Have&nbsp;you&nbsp;ever&nbsp;needed&nbsp;to&nbsp;create&nbsp;a&nbsp;pop-up&nbsp;list&nbsp;of&nbsp;databases&nbsp;within&nbsp;a&nbsp;program?&nbsp;This&nbsp;table&nbsp;now&nbsp;allows&nbsp;programs&nbsp;to&nbsp;give&nbsp;users&nbsp;a&nbsp;list&nbsp;of&nbsp;databases&nbsp;to&nbsp;select&nbsp;from&nbsp;without&nbsp;resorting&nbsp;to&nbsp;ESQL/C.&nbsp;The&nbsp;following&nbsp;is&nbsp;the&nbsp;definition&nbsp;of&nbsp;this&nbsp;view:<strong>View&nbsp;sysdatabases&nbsp;<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;id&nbsp;for&nbsp;systables<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;name&nbsp;of&nbsp;creator<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;created&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date&nbsp;created<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_logging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unbuffered&nbsp;logging,&nbsp;1=Yes,&nbsp;0=&nbsp;No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_buff_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffered&nbsp;logging,&nbsp;1=Yes,&nbsp;0=&nbsp;No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_ansi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ANSI&nbsp;mode&nbsp;database,&nbsp;1=Yes,&nbsp;0=&nbsp;No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_nls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NLS&nbsp;support,&nbsp;1=Yes,&nbsp;0=&nbsp;No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;indicating&nbsp;logging<br>The&nbsp;following&nbsp;is&nbsp;a&nbsp;script&nbsp;to&nbsp;list&nbsp;all&nbsp;databases,&nbsp;owners,&nbsp;dbspaces,&nbsp;and&nbsp;logging&nbsp;status.&nbsp;Notice&nbsp;the&nbsp;function&nbsp;dbinfo&nbsp;is&nbsp;used.&nbsp;This&nbsp;is&nbsp;a&nbsp;new&nbsp;function&nbsp;in&nbsp;7.X&nbsp;with&nbsp;several&nbsp;uses,&nbsp;one&nbsp;of&nbsp;which&nbsp;is&nbsp;to&nbsp;convert&nbsp;the&nbsp;partnum&nbsp;of&nbsp;a&nbsp;database&nbsp;into&nbsp;its&nbsp;corresponding&nbsp;dbspace.&nbsp;This&nbsp;function&nbsp;will&nbsp;be&nbsp;used&nbsp;in&nbsp;several&nbsp;examples&nbsp;that&nbsp;follow.<br><strong>Figure&nbsp;12.&nbsp;SQL&nbsp;script&nbsp;listing&nbsp;all&nbsp;databases&nbsp;on&nbsp;the&nbsp;server</strong><br>--&nbsp;dblist.sql&nbsp;-&nbsp;List&nbsp;all&nbsp;databases,&nbsp;owner&nbsp;and&nbsp;logging&nbsp;status<br>database&nbsp;sysmaster;<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbinfo(&quot;DBSPACE&quot;,partnum)&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;database,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_logging,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_buff_log<br>from&nbsp;sysdatabases<br>order&nbsp;by&nbsp;dbspace,&nbsp;name;<br><u>Sample&nbsp;Output<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_logging&nbsp;is_buff_log<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;central&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datatools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stores7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linda&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;informix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br><strong>Information&nbsp;About&nbsp;Database&nbsp;Tables:&nbsp;systabnames,&nbsp;sysextents,&nbsp;and&nbsp;sysptprof</strong><br>Three&nbsp;tables&nbsp;contain&nbsp;all&nbsp;the&nbsp;data&nbsp;you&nbsp;need&nbsp;from&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;about&nbsp;tables&nbsp;in&nbsp;your&nbsp;database.&nbsp;The&nbsp;first&nbsp;of&nbsp;these&nbsp;is&nbsp;a&nbsp;real&nbsp;table&nbsp;defined&nbsp;as&nbsp;follows:<strong>Table&nbsp;systabnames&nbsp;-&nbsp;All&nbsp;tables&nbsp;on&nbsp;the&nbsp;server<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;id&nbsp;for&nbsp;table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;owner<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(32)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collation&nbsp;assoc&nbsp;with&nbsp;NLS&nbsp;DB&nbsp;&nbsp;<br><strong>View&nbsp;sysextents&nbsp;-&nbsp;Tables&nbsp;and&nbsp;each&nbsp;extent&nbsp;on&nbsp;the&nbsp;server<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;physical&nbsp;addr&nbsp;for&nbsp;this&nbsp;extent<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;of&nbsp;this&nbsp;extent<br>The&nbsp;view&nbsp;sysextents&nbsp;is&nbsp;based&nbsp;on&nbsp;a&nbsp;table,&nbsp;sysptnext,&nbsp;defined&nbsp;as&nbsp;follows:<strong>Table&nbsp;sysptnext<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_partnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partnum&nbsp;for&nbsp;this&nbsp;partition&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_extnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extent&nbsp;number&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;pe_phys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;physical&nbsp;addr&nbsp;for&nbsp;this&nbsp;extent<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;of&nbsp;this&nbsp;extent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logical&nbsp;page&nbsp;for&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><strong>View&nbsp;sysptprof&nbsp;&nbsp;-&nbsp;Tables&nbsp;IO&nbsp;profile<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partnum&nbsp;for&nbsp;this&nbsp;table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockreqs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock&nbsp;requests<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockwts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock&nbsp;waits<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deadlks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deadlocks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lktouts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock&nbsp;timeouts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iswrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isrewrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrites<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isdeletes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deletes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufwrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seqscans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sequential&nbsp;scans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disk&nbsp;reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagwrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disk&nbsp;writes<br>These&nbsp;tables&nbsp;allow&nbsp;us&nbsp;to&nbsp;develop&nbsp;scripts&nbsp;to&nbsp;display&nbsp;tables,&nbsp;the&nbsp;number&nbsp;of&nbsp;extents,&nbsp;and&nbsp;pages&nbsp;used.&nbsp;We&nbsp;can&nbsp;also&nbsp;present&nbsp;a&nbsp;layout&nbsp;of&nbsp;dbspace,&nbsp;databases,&nbsp;tables,&nbsp;and&nbsp;extents&nbsp;similar&nbsp;to&nbsp;the&nbsp;command&nbsp;&quot;tbcheck&nbsp;-pe&quot;.&nbsp;And&nbsp;finally,&nbsp;we&nbsp;can&nbsp;show&nbsp;table&nbsp;usage&nbsp;statistics&nbsp;sorted&nbsp;by&nbsp;which&nbsp;tables&nbsp;have&nbsp;the&nbsp;most&nbsp;hits&nbsp;based&nbsp;on&nbsp;reads,&nbsp;writes,&nbsp;or&nbsp;locks.&nbsp;These&nbsp;scripts&nbsp;will&nbsp;enable&nbsp;a&nbsp;DBA&nbsp;to&nbsp;monitor&nbsp;and&nbsp;tune&nbsp;the&nbsp;database&nbsp;server.<br>Extents&nbsp;are&nbsp;created&nbsp;when&nbsp;a&nbsp;table&#39;s&nbsp;initial&nbsp;space&nbsp;has&nbsp;been&nbsp;filled&nbsp;up&nbsp;and&nbsp;it&nbsp;needs&nbsp;more&nbsp;space.&nbsp;OnLine&nbsp;will&nbsp;allocate&nbsp;additional&nbsp;space&nbsp;for&nbsp;a&nbsp;table.&nbsp;However,&nbsp;the&nbsp;table&nbsp;will&nbsp;no&nbsp;longer&nbsp;be&nbsp;contiguous,&nbsp;and&nbsp;performance&nbsp;will&nbsp;start&nbsp;to&nbsp;degrade.&nbsp;Informix&nbsp;will&nbsp;display&nbsp;warning&nbsp;messages&nbsp;when&nbsp;a&nbsp;table&nbsp;reaches&nbsp;more&nbsp;than&nbsp;8&nbsp;extents.&nbsp;Depending&nbsp;on&nbsp;a&nbsp;number&nbsp;of&nbsp;factors,&nbsp;at&nbsp;approximately&nbsp;180-230&nbsp;extents&nbsp;a&nbsp;table&nbsp;will&nbsp;not&nbsp;be&nbsp;able&nbsp;to&nbsp;expand&nbsp;and&nbsp;no&nbsp;additional&nbsp;rows&nbsp;can&nbsp;be&nbsp;inserted.&nbsp;The&nbsp;following&nbsp;script&nbsp;lists&nbsp;all&nbsp;tables&nbsp;sorted&nbsp;by&nbsp;the&nbsp;number&nbsp;of&nbsp;extents.&nbsp;The&nbsp;tables&nbsp;that&nbsp;show&nbsp;up&nbsp;with&nbsp;many&nbsp;extents&nbsp;may&nbsp;need&nbsp;to&nbsp;be&nbsp;unloaded&nbsp;and&nbsp;rebuilt.<br><strong>Figure&nbsp;13.&nbsp;SQL&nbsp;script&nbsp;showing&nbsp;tables&nbsp;and&nbsp;extents</strong><br>--&nbsp;tabextent.sql&nbsp;-&nbsp;List&nbsp;tables,&nbsp;number&nbsp;of&nbsp;extents&nbsp;and&nbsp;size&nbsp;of&nbsp;table.<br>database&nbsp;sysmaster;<br>select&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count(*)&nbsp;num_of_extents,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(&nbsp;pe_size&nbsp;)&nbsp;total_size<br>from&nbsp;systabnames,&nbsp;sysptnext<br>where&nbsp;partnum&nbsp;=&nbsp;pe_partnum<br>group&nbsp;by&nbsp;1,&nbsp;2&nbsp;<br>order&nbsp;by&nbsp;3&nbsp;desc,&nbsp;4&nbsp;desc;<br><u>Sample&nbsp;Output<br></u>dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_of_extents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total_size<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TBLSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;400<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inventory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;376<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_items&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;96<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;48<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;48<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumnext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32<br>Sometimes&nbsp;it&nbsp;is&nbsp;helpful&nbsp;to&nbsp;see&nbsp;how&nbsp;the&nbsp;tables&nbsp;are&nbsp;interspersed&nbsp;on&nbsp;disk.&nbsp;The&nbsp;following&nbsp;script&nbsp;lists&nbsp;by&nbsp;dbspace&nbsp;each&nbsp;table&nbsp;and&nbsp;the&nbsp;location&nbsp;of&nbsp;each&nbsp;extent.&nbsp;This&nbsp;is&nbsp;similar&nbsp;to&nbsp;the&nbsp;output&nbsp;from&nbsp;&quot;oncheck&nbsp;-pe&quot;.<br><strong>Figure&nbsp;14.&nbsp;SQL&nbsp;script&nbsp;showing&nbsp;table&nbsp;layout&nbsp;on&nbsp;chunks</strong><br>--&nbsp;tablayout.sql&nbsp;-&nbsp;Show&nbsp;layout&nbsp;of&nbsp;tables&nbsp;and&nbsp;extents<br>database&nbsp;sysmaster;<br>select&nbsp;dbinfo(&nbsp;&quot;DBSPACE&quot;&nbsp;,&nbsp;pe_partnum&nbsp;)&nbsp;dbspace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname[1,10],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_phys&nbsp;start,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe_size&nbsp;size<br>from&nbsp;&nbsp;&nbsp;&nbsp;sysptnext,&nbsp;outer&nbsp;systabnames<br>where&nbsp;&nbsp;&nbsp;pe_partnum&nbsp;=&nbsp;partnum<br>order&nbsp;by&nbsp;dbspace,&nbsp;start;<br><u>Sample&nbsp;output<br></u>dbspace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootdbs&nbsp;&nbsp;&nbsp;&nbsp;TBLSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1048589&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;sysdatabases&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050639&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;systables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050643&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;syscolumns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050651&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;sysindexes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050667&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;systabauth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050675&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;syscolauth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050683&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;sysviews&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050691&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;sysusers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050699&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;sysdepend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050707&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>rootdbs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaster&nbsp;&nbsp;syssynonyms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1050715&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>IO&nbsp;Performance&nbsp;of&nbsp;Tables<br>Have&nbsp;you&nbsp;ever&nbsp;wanted&nbsp;to&nbsp;know&nbsp;which&nbsp;tables&nbsp;have&nbsp;the&nbsp;most&nbsp;reads,&nbsp;writes,&nbsp;or&nbsp;locks?&nbsp;The&nbsp;last&nbsp;script&nbsp;in&nbsp;this&nbsp;article&nbsp;shows&nbsp;the&nbsp;performance&nbsp;profile&nbsp;of&nbsp;tables.&nbsp;By&nbsp;changing&nbsp;the&nbsp;columns&nbsp;displayed&nbsp;and&nbsp;the&nbsp;sort&nbsp;order&nbsp;of&nbsp;the&nbsp;script,&nbsp;you&nbsp;can&nbsp;display&nbsp;the&nbsp;tables&nbsp;with&nbsp;the&nbsp;most&nbsp;reads,&nbsp;writes,&nbsp;or&nbsp;locks&nbsp;first.<br><strong>Figure&nbsp;15.&nbsp;SQL&nbsp;script&nbsp;show&nbsp;table&nbsp;I/O&nbsp;activity</strong><br>--&nbsp;tabprof.sql<br>database&nbsp;sysmaster;<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isreads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufreads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagreads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;uncomment&nbsp;the&nbsp;following&nbsp;to&nbsp;show&nbsp;writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;iswrites,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;bufwrites,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;pagwrites<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;uncomment&nbsp;the&nbsp;following&nbsp;to&nbsp;show&nbsp;locks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;lockreqs,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;lockwts,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;deadlks<br>from&nbsp;sysptprof<br>order&nbsp;by&nbsp;isreads&nbsp;desc;&nbsp;--&nbsp;change&nbsp;this&nbsp;sort&nbsp;to&nbsp;whatever&nbsp;you&nbsp;need&nbsp;to&nbsp;monitor.<br><u>Sample&nbsp;Output<br></u>dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isreads&nbsp;&nbsp;&nbsp;&nbsp;bufreads&nbsp;&nbsp;&nbsp;&nbsp;pagreads<br>zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;334175&nbsp;&nbsp;&nbsp;&nbsp;35876509&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1111<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysviews&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;259712&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;634102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1119<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60999&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;240018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1878<br>zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3491&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8228&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;543<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysusers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2406&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8936&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;87<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysprocauth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1276&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12<br>sunset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;705&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2251&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysprocedures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;640&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2562&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;637&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1512&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49<br>stores7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;565&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1361&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16<br>sysmaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysdatabases&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;534&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;902<br><u>6.&nbsp;User&nbsp;Session&nbsp;Information</u><br>This&nbsp;last&nbsp;set&nbsp;of&nbsp;SMI&nbsp;tables&nbsp;deals&nbsp;with&nbsp;users&nbsp;and&nbsp;information&nbsp;about&nbsp;their&nbsp;sessions.&nbsp;These&nbsp;tables&nbsp;were&nbsp;used&nbsp;in&nbsp;our&nbsp;example&nbsp;script&nbsp;&quot;dbwho&quot;&nbsp;at&nbsp;the&nbsp;beginning&nbsp;of&nbsp;this&nbsp;chapter.&nbsp;<br>syssessions&nbsp;-&nbsp;Session&nbsp;data&nbsp;<br>syssesprof&nbsp;-&nbsp;User&nbsp;statistics&nbsp;<br>syslocks&nbsp;-&nbsp;User&nbsp;Locks&nbsp;<br>syseswts&nbsp;-&nbsp;Wait&nbsp;times&nbsp;<br><strong>User&nbsp;Session&nbsp;and&nbsp;Connection&nbsp;Information:&nbsp;syssessions</strong><br>This&nbsp;view&nbsp;contains&nbsp;information&nbsp;from&nbsp;two&nbsp;shared&nbsp;memory&nbsp;structures,&nbsp;the&nbsp;user&nbsp;control&nbsp;and&nbsp;thread&nbsp;control&nbsp;table.&nbsp;This&nbsp;tells&nbsp;you&nbsp;who&nbsp;is&nbsp;logged&nbsp;in&nbsp;to&nbsp;your&nbsp;server&nbsp;and&nbsp;some&nbsp;basic&nbsp;data&nbsp;about&nbsp;their&nbsp;session.<strong>View&nbsp;syssessions<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;id&nbsp;number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;unix&nbsp;id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;process&nbsp;id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hostname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTY&nbsp;port<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connected&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Time&nbsp;user&nbsp;connected<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;feprogram&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Program&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pooladdr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pointer&nbsp;to&nbsp;private&nbsp;session&nbsp;pool<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wlatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;latch<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wlock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wbuff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;buffer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wckpt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;checkpoint<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wlogbuf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;log&nbsp;buffer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wtrans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;wait&nbsp;on&nbsp;a&nbsp;transaction<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_monitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;a&nbsp;monitoring&nbsp;process<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_incrit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag&nbsp;1=Yes,&nbsp;0=No,&nbsp;in&nbsp;crtical&nbsp;section<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags<br>The&nbsp;following&nbsp;is&nbsp;a&nbsp;quick&nbsp;query&nbsp;to&nbsp;tell&nbsp;who&nbsp;is&nbsp;using&nbsp;your&nbsp;server.<br><strong>Figure&nbsp;16.&nbsp;SQL&nbsp;script&nbsp;showing&nbsp;user&nbsp;sessions</strong><br>--&nbsp;sessions.sql<br>select&nbsp;&nbsp;sid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l2date(connected)&nbsp;startdate&nbsp;--&nbsp;convert&nbsp;unix&nbsp;time&nbsp;to&nbsp;date<br>from&nbsp;&nbsp;&nbsp;&nbsp;syssessions<br><u>Sample&nbsp;Output<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid&nbsp;hostname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startdate<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;47&nbsp;lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11564&nbsp;merlin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;07/14/1997<br>This&nbsp;next&nbsp;query&nbsp;list&nbsp;all&nbsp;users&nbsp;and&nbsp;their&nbsp;session&nbsp;status.&nbsp;The&nbsp;objective&nbsp;is&nbsp;to&nbsp;show&nbsp;who&nbsp;is&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;another&nbsp;user,&nbsp;lock,&nbsp;or&nbsp;some&nbsp;other&nbsp;OnLine&nbsp;process.&nbsp;The&nbsp;five&nbsp;fields&nbsp;are&nbsp;yes/no&nbsp;flags&nbsp;where&nbsp;1&nbsp;=&nbsp;yes&nbsp;and&nbsp;0&nbsp;=&nbsp;no.&nbsp;If&nbsp;all&nbsp;the&nbsp;fields&nbsp;are&nbsp;0,&nbsp;then&nbsp;none&nbsp;of&nbsp;the&nbsp;sessions&nbsp;are&nbsp;blocked.&nbsp;In&nbsp;the&nbsp;following&nbsp;example,&nbsp;one&nbsp;session&nbsp;is&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;a&nbsp;locked&nbsp;record.<br><strong>Figure&nbsp;17.&nbsp;SQL&nbsp;script&nbsp;users&nbsp;waiting&nbsp;on&nbsp;resources</strong><br>--&nbsp;seswait.sql<br>select&nbsp;&nbsp;username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wlatch,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;a&nbsp;latch&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wlock,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;a&nbsp;locked&nbsp;record&nbsp;or&nbsp;table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wbuff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;a&nbsp;buffer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_wckpt,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;blocked&nbsp;waiting&nbsp;on&nbsp;a&nbsp;checkpoint<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_incrit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;session&nbsp;is&nbsp;in&nbsp;a&nbsp;critical&nbsp;section&nbsp;of&nbsp;transaction<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;(e.g&nbsp;writting&nbsp;to&nbsp;disk)<br>from&nbsp;&nbsp;&nbsp;&nbsp;syssessions<br>order&nbsp;by&nbsp;username;<br><u>Sample&nbsp;Output<br></u>username&nbsp;&nbsp;&nbsp;is_wlatch&nbsp;&nbsp;&nbsp;&nbsp;is_wlock&nbsp;&nbsp;&nbsp;&nbsp;is_wbuff&nbsp;&nbsp;&nbsp;&nbsp;is_wckpt&nbsp;&nbsp;&nbsp;is_incrit<br>lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br><strong>User&nbsp;Session&nbsp;Performance&nbsp;Statistics:&nbsp;syssesprof</strong><br>This&nbsp;view&nbsp;syssesprof&nbsp;provides&nbsp;a&nbsp;way&nbsp;to&nbsp;find&nbsp;out&nbsp;at&nbsp;a&nbsp;given&nbsp;point&nbsp;in&nbsp;time&nbsp;how&nbsp;much&nbsp;of&nbsp;your&nbsp;server&nbsp;resources&nbsp;each&nbsp;user&nbsp;is&nbsp;using.&nbsp;The&nbsp;view&nbsp;contains&nbsp;the&nbsp;following&nbsp;information.<strong>View&nbsp;syssesprof<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;Id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockreqs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Locks&nbsp;requested<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;locksheld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Locks&nbsp;held<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockwts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Locks&nbsp;waits<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deadlks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Deadlocks&nbsp;detected<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lktouts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Deadlock&nbsp;timeouts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logrecs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Logical&nbsp;Log&nbsp;records&nbsp;written<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iswrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isrewrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Rewrites<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isdeletes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Deletes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iscommits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Commits<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isrollbacks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Rollbacks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;longtxs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Long&nbsp;transactions<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Buffer&nbsp;reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufwrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Buffer&nbsp;writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seqscans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Sequential&nbsp;scans<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Page&nbsp;reads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagwrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Page&nbsp;writes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total_sorts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Total&nbsp;sorts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dsksorts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Sorts&nbsp;to&nbsp;disk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_sortdiskspace&nbsp;decimal(16,0)&nbsp;Max&nbsp;space&nbsp;used&nbsp;by&nbsp;a&nbsp;sort<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logspused&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Current&nbsp;log&nbsp;bytes&nbsp;used&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlogsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal(16,0)&nbsp;&nbsp;&nbsp;Max&nbsp;bytes&nbsp;of&nbsp;logical&nbsp;logs&nbsp;used<br>This&nbsp;table&nbsp;contains&nbsp;data&nbsp;since&nbsp;the&nbsp;user&nbsp;logged&nbsp;on.&nbsp;Each&nbsp;time&nbsp;a&nbsp;user&nbsp;disconnects&nbsp;their&nbsp;data&nbsp;is&nbsp;lost&nbsp;so&nbsp;you&nbsp;cannot&nbsp;use&nbsp;this&nbsp;data&nbsp;for&nbsp;charging&nbsp;the&nbsp;user&nbsp;for&nbsp;server&nbsp;usage.&nbsp;Also,&nbsp;when&nbsp;a&nbsp;DBA&nbsp;resets&nbsp;the&nbsp;server&nbsp;statistics&nbsp;with&nbsp;the&nbsp;command&nbsp;&quot;tbstat&nbsp;-z&quot;,&nbsp;all&nbsp;profile&nbsp;data&nbsp;is&nbsp;reset&nbsp;to&nbsp;zero.<br>I&nbsp;like&nbsp;to&nbsp;monitor&nbsp;the&nbsp;number&nbsp;of&nbsp;locks&nbsp;used&nbsp;by&nbsp;each&nbsp;user&nbsp;and&nbsp;their&nbsp;buffer&nbsp;usage.&nbsp;The&nbsp;following&nbsp;is&nbsp;an&nbsp;example&nbsp;query.<br><strong>Figure&nbsp;19.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;monitor&nbsp;resource&nbsp;usage&nbsp;by&nbsp;user&nbsp;</strong><br>--&nbsp;sesprof.sql<br>select&nbsp;&nbsp;username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syssesprof.sid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockreqs,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufreads,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufwrites<br>from&nbsp;&nbsp;&nbsp;&nbsp;syssesprof,&nbsp;syssessions<br>where&nbsp;&nbsp;&nbsp;syssesprof.sid&nbsp;=&nbsp;syssessions.sid<br>order&nbsp;by&nbsp;bufreads&nbsp;desc<br><strong>Active&nbsp;Locks&nbsp;on&nbsp;the&nbsp;Server:&nbsp;syslocks</strong><br>This&nbsp;view&nbsp;contains&nbsp;information&nbsp;about&nbsp;all&nbsp;active&nbsp;locks&nbsp;on&nbsp;your&nbsp;server.&nbsp;It&nbsp;can&nbsp;be&nbsp;very&nbsp;large;&nbsp;if&nbsp;you&nbsp;have&nbsp;a&nbsp;lot&nbsp;of&nbsp;users&nbsp;and&nbsp;your&nbsp;server&nbsp;is&nbsp;configured&nbsp;to&nbsp;handle&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;locks,&nbsp;you&nbsp;could&nbsp;end&nbsp;up&nbsp;with&nbsp;hundreds&nbsp;of&nbsp;thousands&nbsp;or&nbsp;more&nbsp;records&nbsp;in&nbsp;this&nbsp;view.&nbsp;This&nbsp;view&nbsp;is&nbsp;composed&nbsp;of&nbsp;six&nbsp;tables,&nbsp;and&nbsp;queries&nbsp;on&nbsp;this&nbsp;view&nbsp;will&nbsp;create&nbsp;a&nbsp;temp&nbsp;table&nbsp;which&nbsp;is&nbsp;logged&nbsp;to&nbsp;your&nbsp;logical&nbsp;log.&nbsp;The&nbsp;performance&nbsp;may&nbsp;be&nbsp;a&nbsp;bit&nbsp;slow&nbsp;because&nbsp;of&nbsp;the&nbsp;sheer&nbsp;volume&nbsp;of&nbsp;data&nbsp;produced&nbsp;by&nbsp;this&nbsp;view.&nbsp;However,&nbsp;the&nbsp;data&nbsp;this&nbsp;view&nbsp;contains&nbsp;can&nbsp;be&nbsp;very&nbsp;helpful&nbsp;to&nbsp;understanding&nbsp;how&nbsp;your&nbsp;system&nbsp;is&nbsp;performing.<strong>View&nbsp;syslocks<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowidlk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rowid&nbsp;for&nbsp;index&nbsp;key&nbsp;lock&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keynum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;number&nbsp;of&nbsp;index&nbsp;key&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;ID&nbsp;of&nbsp;lock&nbsp;owner<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;ID&nbsp;of&nbsp;first&nbsp;waiter<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;of&nbsp;Lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Types&nbsp;of&nbsp;Locks<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;byte&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;intent&nbsp;shared&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;shared&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;repeatable&nbsp;read&nbsp;shared&nbsp;key<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;update&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;intent&nbsp;exclusive&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;shared&nbsp;intent&nbsp;exclusive&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;exclusive&nbsp;lock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;repeatable&nbsp;read&nbsp;exclusive<br>Basically&nbsp;there&nbsp;are&nbsp;three&nbsp;types&nbsp;of&nbsp;locks:&nbsp;a&nbsp;shared&nbsp;lock&nbsp;(S),&nbsp;an&nbsp;exclusive&nbsp;lock&nbsp;(X),&nbsp;and&nbsp;an&nbsp;update&nbsp;lock(U).&nbsp;A&nbsp;shared&nbsp;lock&nbsp;allows&nbsp;other&nbsp;users&nbsp;to&nbsp;also&nbsp;read&nbsp;the&nbsp;data&nbsp;but&nbsp;none&nbsp;may&nbsp;change&nbsp;it.&nbsp;An&nbsp;exclusive&nbsp;lock&nbsp;does&nbsp;not&nbsp;allow&nbsp;anyone&nbsp;else&nbsp;to&nbsp;lock&nbsp;that&nbsp;data&nbsp;even&nbsp;in&nbsp;shared&nbsp;mode.&nbsp;An&nbsp;update&nbsp;lock&nbsp;prevents&nbsp;other&nbsp;users&nbsp;from&nbsp;changing&nbsp;data&nbsp;while&nbsp;you&nbsp;are&nbsp;changing&nbsp;it.<br>There&nbsp;are&nbsp;six&nbsp;objects&nbsp;that&nbsp;can&nbsp;be&nbsp;locked&nbsp;in&nbsp;OnLine.&nbsp;<br>Database&nbsp;-&nbsp;Every&nbsp;user&nbsp;that&nbsp;opens&nbsp;a&nbsp;database&nbsp;places&nbsp;a&nbsp;shared&nbsp;lock&nbsp;on&nbsp;the&nbsp;database&nbsp;to&nbsp;prevent&nbsp;someone&nbsp;else&nbsp;from&nbsp;dropping&nbsp;the&nbsp;database&nbsp;while&nbsp;it&nbsp;is&nbsp;in&nbsp;use.&nbsp;This&nbsp;shows&nbsp;up&nbsp;as&nbsp;a&nbsp;lock&nbsp;on&nbsp;the&nbsp;sysmaster&nbsp;database&nbsp;and&nbsp;the&nbsp;sysdatabase&nbsp;tables,&nbsp;and&nbsp;the&nbsp;rowid&nbsp;will&nbsp;point&nbsp;to&nbsp;the&nbsp;record&nbsp;containing&nbsp;database&nbsp;name.&nbsp;<br>Table&nbsp;-&nbsp;A&nbsp;table&nbsp;lock&nbsp;shows&nbsp;up&nbsp;as&nbsp;a&nbsp;lock&nbsp;on&nbsp;a&nbsp;table&nbsp;with&nbsp;a&nbsp;rowid&nbsp;of&nbsp;0&nbsp;and&nbsp;a&nbsp;keynum&nbsp;of&nbsp;0.&nbsp;<br>Page&nbsp;-&nbsp;A&nbsp;page&nbsp;level&nbsp;lock&nbsp;shows&nbsp;as&nbsp;a&nbsp;rowid&nbsp;ending&nbsp;in&nbsp;00.&nbsp;This&nbsp;means&nbsp;all&nbsp;the&nbsp;rows&nbsp;on&nbsp;that&nbsp;page&nbsp;are&nbsp;locked.&nbsp;<br>Row&nbsp;-&nbsp;A&nbsp;row&nbsp;level&nbsp;lock&nbsp;will&nbsp;show&nbsp;with&nbsp;an&nbsp;actual&nbsp;rowid&nbsp;(not&nbsp;ending&nbsp;in&nbsp;00).&nbsp;<br>Key&nbsp;-&nbsp;A&nbsp;key&nbsp;lock&nbsp;will&nbsp;show&nbsp;with&nbsp;a&nbsp;keynum.&nbsp;If&nbsp;a&nbsp;row&nbsp;has&nbsp;indexes&nbsp;that&nbsp;need&nbsp;to&nbsp;be&nbsp;updated&nbsp;this&nbsp;will&nbsp;place&nbsp;locks&nbsp;on&nbsp;the&nbsp;indexes&nbsp;for&nbsp;that&nbsp;row.&nbsp;<br>One&nbsp;of&nbsp;the&nbsp;key&nbsp;data&nbsp;elements&nbsp;missing&nbsp;from&nbsp;this&nbsp;view&nbsp;is&nbsp;the&nbsp;username&nbsp;and&nbsp;session&nbsp;id&nbsp;(sid)&nbsp;of&nbsp;the&nbsp;user&nbsp;who&nbsp;has&nbsp;a&nbsp;lock.&nbsp;The&nbsp;following&nbsp;query&nbsp;adds&nbsp;the&nbsp;user&#39;s&nbsp;name&nbsp;and&nbsp;session&nbsp;id&nbsp;and&nbsp;uses&nbsp;the&nbsp;underlying&nbsp;tables&nbsp;to&nbsp;improve&nbsp;performance.&nbsp;It&nbsp;also&nbsp;puts&nbsp;the&nbsp;data&nbsp;into&nbsp;a&nbsp;temp&nbsp;table&nbsp;from&nbsp;which&nbsp;you&nbsp;can&nbsp;select&nbsp;subsets&nbsp;of&nbsp;data&nbsp;much&nbsp;more&nbsp;quickly&nbsp;than&nbsp;if&nbsp;you&nbsp;were&nbsp;to&nbsp;repeat&nbsp;the&nbsp;query.<br><strong>Figure&nbsp;20.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;show&nbsp;all&nbsp;locks</strong><br>--&nbsp;locks.sql<br>select&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowidr,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keynum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.username&nbsp;ownername,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waiter,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.username&nbsp;waitname<br>from&nbsp;&nbsp;&nbsp;&nbsp;syslcktab&nbsp;a,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systabnames&nbsp;b,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systxptab&nbsp;c,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysrstcb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysscblst&nbsp;g,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags_text&nbsp;e,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer&nbsp;(&nbsp;sysrstcb&nbsp;f&nbsp;,&nbsp;sysscblst&nbsp;h&nbsp;&nbsp;)<br>where&nbsp;&nbsp;&nbsp;a.partnum&nbsp;=&nbsp;b.partnum<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.owner&nbsp;=&nbsp;c.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.owner&nbsp;=&nbsp;d.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.wtlist&nbsp;=&nbsp;f.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.sid&nbsp;=&nbsp;g.sid<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.tabname&nbsp;=&nbsp;&#39;syslcktab&#39;<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.flags&nbsp;=&nbsp;a.type<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.sid&nbsp;=&nbsp;h.sid<br>into&nbsp;temp&nbsp;A;<br>select&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowidr,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keynum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type[1,4],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ownername&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waiter,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waitname<br>from&nbsp;A;<br><u>Example&nbsp;SQL&nbsp;Output<br></u>dbsname&nbsp;&nbsp;&nbsp;&nbsp;sysmaster<br>tabname&nbsp;&nbsp;&nbsp;&nbsp;a<br>rowidr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>keynum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X<br>owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;47<br>ownername&nbsp;&nbsp;lester<br>waiter<br>waitname<br>The&nbsp;above&nbsp;example&nbsp;SQL&nbsp;output&nbsp;shows&nbsp;the&nbsp;row&nbsp;from&nbsp;syslocks&nbsp;that&nbsp;displays&nbsp;the&nbsp;exclusive&nbsp;lock&nbsp;I&nbsp;created&nbsp;on&nbsp;the&nbsp;temp&nbsp;table&nbsp;&quot;A&quot;&nbsp;while&nbsp;running&nbsp;the&nbsp;query.<br>A&nbsp;more&nbsp;important&nbsp;use&nbsp;of&nbsp;this&nbsp;query&nbsp;is&nbsp;to&nbsp;find&nbsp;out&nbsp;when&nbsp;one&nbsp;user&nbsp;is&nbsp;waiting&nbsp;on&nbsp;the&nbsp;lock&nbsp;owned&nbsp;by&nbsp;another&nbsp;user.&nbsp;When&nbsp;a&nbsp;user&nbsp;has&nbsp;a&nbsp;database&nbsp;object&nbsp;locked,&nbsp;the&nbsp;first&nbsp;user&nbsp;waiting&nbsp;on&nbsp;the&nbsp;object&nbsp;can&nbsp;be&nbsp;displayed.&nbsp;(This&nbsp;will&nbsp;only&nbsp;occur&nbsp;when&nbsp;a&nbsp;user&nbsp;has&nbsp;set&nbsp;lock&nbsp;mode&nbsp;to&nbsp;WAIT).&nbsp;The&nbsp;following&nbsp;script&nbsp;displays&nbsp;only&nbsp;the&nbsp;users&nbsp;that&nbsp;have&nbsp;locks&nbsp;where&nbsp;someone&nbsp;else&nbsp;is&nbsp;waiting&nbsp;on&nbsp;their&nbsp;process.&nbsp;There&nbsp;is&nbsp;one&nbsp;key&nbsp;difference&nbsp;between&nbsp;this&nbsp;script&nbsp;and&nbsp;the&nbsp;one&nbsp;above.&nbsp;The&nbsp;tables&nbsp;sysrstcb&nbsp;and&nbsp;sysscblst&nbsp;in&nbsp;this&nbsp;script&nbsp;do&nbsp;not&nbsp;use&nbsp;an&nbsp;outer&nbsp;join,&nbsp;so&nbsp;only&nbsp;rows&nbsp;that&nbsp;have&nbsp;waiters&nbsp;will&nbsp;be&nbsp;returned.&nbsp;In&nbsp;this&nbsp;example&nbsp;&quot;linda&quot;&nbsp;has&nbsp;an&nbsp;update&nbsp;lock&nbsp;on&nbsp;a&nbsp;row&nbsp;and&nbsp;&quot;lester&quot;&nbsp;is&nbsp;waiting&nbsp;for&nbsp;that&nbsp;update&nbsp;to&nbsp;complete.<br><strong>Figure&nbsp;21.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;show&nbsp;users&nbsp;waiting&nbsp;on&nbsp;locks</strong><br>--&nbsp;lockwaits.sql<br>database&nbsp;sysmaster;<br>select&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowidr,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keynum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.txt&nbsp;&nbsp;&nbsp;type,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.sid&nbsp;&nbsp;&nbsp;owner,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.username&nbsp;ownername,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.sid&nbsp;&nbsp;&nbsp;waiter,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.username&nbsp;waitname<br>from&nbsp;&nbsp;&nbsp;&nbsp;syslcktab&nbsp;a,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systabnames&nbsp;b,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systxptab&nbsp;c,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysrstcb&nbsp;d,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysscblst&nbsp;g,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags_text&nbsp;e,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysrstcb&nbsp;f&nbsp;,&nbsp;sysscblst&nbsp;h<br>where&nbsp;&nbsp;&nbsp;a.partnum&nbsp;=&nbsp;b.partnum<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.owner&nbsp;=&nbsp;c.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.owner&nbsp;=&nbsp;d.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.wtlist&nbsp;=&nbsp;f.address<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.sid&nbsp;=&nbsp;g.sid<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.tabname&nbsp;=&nbsp;&#39;syslcktab&#39;<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.flags&nbsp;=&nbsp;a.type<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.sid&nbsp;=&nbsp;h.sid<br>into&nbsp;temp&nbsp;A;<br>select&nbsp;&nbsp;dbsname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type[1,4],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ownername&nbsp;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waitname<br>from&nbsp;A;<br><u>SQL&nbsp;Output<br></u>dbsname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner&nbsp;ownername&nbsp;waitname<br>stores7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;29&nbsp;linda&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester<br><strong>Wait&nbsp;Status&nbsp;and&nbsp;Times&nbsp;on&nbsp;Objects:&nbsp;sysseswts</strong><br>This&nbsp;is&nbsp;a&nbsp;supported&nbsp;view&nbsp;that&nbsp;shows&nbsp;all&nbsp;sessions&nbsp;that&nbsp;are&nbsp;blocked&nbsp;and&nbsp;waiting&nbsp;on&nbsp;a&nbsp;database&nbsp;object.&nbsp;It&nbsp;shows&nbsp;the&nbsp;amount&nbsp;of&nbsp;time&nbsp;a&nbsp;user&nbsp;has&nbsp;been&nbsp;waiting.&nbsp;On&nbsp;a&nbsp;well&nbsp;tuned&nbsp;system&nbsp;this&nbsp;table&nbsp;should&nbsp;be&nbsp;empty.&nbsp;However,&nbsp;when&nbsp;the&nbsp;table&nbsp;is&nbsp;not&nbsp;empty,&nbsp;it&nbsp;provides&nbsp;useful&nbsp;information&nbsp;on&nbsp;what&nbsp;is&nbsp;causing&nbsp;your&nbsp;performance&nbsp;to&nbsp;slow&nbsp;down.<strong>View&nbsp;sysseswts<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reason&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char(50)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description&nbsp;of&nbsp;reason&nbsp;for&nbsp;wait<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numwaits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;waits&nbsp;for&nbsp;this&nbsp;reason<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cumtime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cumulative&nbsp;wait&nbsp;time&nbsp;for&nbsp;this&nbsp;reason<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxtime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;wait&nbsp;time&nbsp;for&nbsp;this&nbsp;reason<br><u>7.&nbsp;Some&nbsp;Unsupported&nbsp;Extras</u><br>Several&nbsp;of&nbsp;the&nbsp;SMI&nbsp;tables&nbsp;are&nbsp;not&nbsp;documented&nbsp;and&nbsp;not&nbsp;officially&nbsp;supported.&nbsp;These&nbsp;could&nbsp;change&nbsp;in&nbsp;future&nbsp;releases.&nbsp;Two&nbsp;additional&nbsp;unsupported&nbsp;tables&nbsp;I&nbsp;have&nbsp;found&nbsp;helpful&nbsp;are&nbsp;systrans&nbsp;and&nbsp;syssqexplain.<br><strong>User&nbsp;Transactions:&nbsp;systrans</strong><br>Three&nbsp;of&nbsp;the&nbsp;fields&nbsp;in&nbsp;systrans&nbsp;are&nbsp;very&nbsp;helpful&nbsp;to&nbsp;determine&nbsp;what&nbsp;logical&nbsp;log&nbsp;number&nbsp;a&nbsp;transaction&nbsp;began&nbsp;in,&nbsp;and&nbsp;the&nbsp;current&nbsp;logical&nbsp;log&nbsp;number&nbsp;in&nbsp;use&nbsp;by&nbsp;a&nbsp;transaction.<strong>Key&nbsp;systrans&nbsp;fields<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointer&nbsp;to&nbsp;transaction&nbsp;table&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_logbeg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction&nbsp;starting&nbsp;logical&nbsp;log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_loguniq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction&nbsp;current&nbsp;logical&nbsp;log&nbsp;number<br>This&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;create&nbsp;a&nbsp;script&nbsp;to&nbsp;determine&nbsp;what&nbsp;logical&nbsp;log&nbsp;files&nbsp;have&nbsp;active&nbsp;transactions.&nbsp;The&nbsp;output&nbsp;of&nbsp;this&nbsp;will&nbsp;tell&nbsp;you&nbsp;what&nbsp;logical&nbsp;logs&nbsp;are&nbsp;free&nbsp;and&nbsp;available&nbsp;for&nbsp;reuse.&nbsp;This&nbsp;first&nbsp;script&nbsp;lists&nbsp;all&nbsp;user&nbsp;transactions&nbsp;and&nbsp;what&nbsp;logs&nbsp;they&nbsp;are&nbsp;using.<br><strong>Figure&nbsp;22.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;display&nbsp;transactions&nbsp;and&nbsp;logs&nbsp;used</strong><br>--&nbsp;txlogpos.sql<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.sid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_logbeg,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_loguniq,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx_logpos<br>from&nbsp;&nbsp;&nbsp;&nbsp;systrans&nbsp;x,&nbsp;sysrstcb&nbsp;t<br>where&nbsp;&nbsp;&nbsp;tx_owner&nbsp;=&nbsp;t.address<br><u>SQL&nbsp;Output<br></u>username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;&nbsp;&nbsp;tx_logbeg&nbsp;&nbsp;tx_loguniq&nbsp;&nbsp;&nbsp;tx_logpos<br>informix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;892952<br>informix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>informix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>informix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>lester&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>This&nbsp;shows&nbsp;that&nbsp;my&nbsp;logical&nbsp;logs&nbsp;numbered&nbsp;14&nbsp;to&nbsp;16&nbsp;are&nbsp;in&nbsp;use&nbsp;by&nbsp;transactions.<br>Another&nbsp;helpful&nbsp;use&nbsp;of&nbsp;this&nbsp;view&nbsp;is&nbsp;to&nbsp;summarize&nbsp;the&nbsp;transactions&nbsp;by&nbsp;logical&nbsp;logs.&nbsp;This&nbsp;next&nbsp;script&nbsp;show&nbsp;my&nbsp;transaction&nbsp;status&nbsp;by&nbsp;logical&nbsp;log.<br><strong>Figure&nbsp;23.&nbsp;SQL&nbsp;script&nbsp;to&nbsp;view&nbsp;logical&nbsp;logs&nbsp;status&nbsp;</strong><br>--&nbsp;logstat.sql<br>database&nbsp;sysmaster;<br>--&nbsp;select&nbsp;transaction&nbsp;data&nbsp;into&nbsp;a&nbsp;temp&nbsp;table<br>select&nbsp;&nbsp;tx_logbeg,&nbsp;&nbsp;&nbsp;tx_loguniq<br>from&nbsp;&nbsp;&nbsp;&nbsp;systrans<br>into&nbsp;temp&nbsp;b;<br>--&nbsp;count&nbsp;how&nbsp;may&nbsp;transactions&nbsp;begin&nbsp;in&nbsp;each&nbsp;log<br>select&nbsp;tx_logbeg,&nbsp;count(*)&nbsp;cnt<br>from&nbsp;B<br>where&nbsp;tx_logbeg&nbsp;&gt;&nbsp;0<br>group&nbsp;by&nbsp;tx_logbeg<br>into&nbsp;temp&nbsp;C;<br>--&nbsp;count&nbsp;how&nbsp;many&nbsp;transactions&nbsp;currently&nbsp;are&nbsp;in&nbsp;each&nbsp;log<br>select&nbsp;tx_loguniq,&nbsp;count(*)&nbsp;cnt<br>from&nbsp;B<br>where&nbsp;tx_loguniq&nbsp;&gt;&nbsp;0<br>group&nbsp;by&nbsp;tx_loguniq<br>into&nbsp;temp&nbsp;D;<br>--&nbsp;join&nbsp;data&nbsp;from&nbsp;counts&nbsp;with&nbsp;syslogs<br>select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uniqid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_backed_up,&nbsp;&nbsp;&nbsp;--&nbsp;0&nbsp;=&nbsp;no,&nbsp;1&nbsp;=&nbsp;yes&nbsp;log&nbsp;is&nbsp;backed&nbsp;up<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_archived,&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;0&nbsp;=&nbsp;no,&nbsp;1&nbsp;=&nbsp;yes&nbsp;log&nbsp;is&nbsp;on&nbsp;last&nbsp;archive<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.cnt&nbsp;&nbsp;&nbsp;tx_beg_cnt,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.cnt&nbsp;&nbsp;&nbsp;tx_curr_cnt<br>from&nbsp;&nbsp;&nbsp;&nbsp;syslogs,&nbsp;outer&nbsp;c,&nbsp;outer&nbsp;D<br>where&nbsp;&nbsp;&nbsp;uniqid&nbsp;=&nbsp;c.tx_logbeg<br>and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uniqid&nbsp;=&nbsp;d.tx_loguniq<br>order&nbsp;by&nbsp;uniqid<br><u>SQL&nbsp;Output</u><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uniqid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;is_backed_up&nbsp;is_archived&nbsp;&nbsp;tx_beg_cnt&nbsp;tx_curr_cnt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>This&nbsp;shows&nbsp;that&nbsp;all&nbsp;logs&nbsp;are&nbsp;backed&nbsp;up&nbsp;except&nbsp;the&nbsp;current&nbsp;one,&nbsp;and&nbsp;it&nbsp;has&nbsp;two&nbsp;active&nbsp;transactions.<br><strong>User&nbsp;Queries:&nbsp;syssqexplain</strong><br>Have&nbsp;you&nbsp;ever&nbsp;wanted&nbsp;to&nbsp;run&nbsp;a&nbsp;query&nbsp;to&nbsp;see&nbsp;what&nbsp;your&nbsp;users&nbsp;were&nbsp;doing?&nbsp;The&nbsp;view&nbsp;syssqexplain&nbsp;contains&nbsp;some&nbsp;of&nbsp;the&nbsp;data&nbsp;from&nbsp;a&nbsp;user&#39;s&nbsp;session,&nbsp;including&nbsp;the&nbsp;sql&nbsp;that&nbsp;they&nbsp;are&nbsp;currently&nbsp;executing.&nbsp;Try&nbsp;this&nbsp;query&nbsp;on&nbsp;your&nbsp;system&nbsp;sometime&nbsp;to&nbsp;see&nbsp;your&nbsp;user&#39;s&nbsp;SQL.<br><strong>Figure&nbsp;24.&nbsp;SQL&nbsp;to&nbsp;view&nbsp;current&nbsp;executing&nbsp;SQL</strong><br><div class="code_main">--&nbsp;syssql.sql<br>select&nbsp;&nbsp;username,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqx_sessionid,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqx_conbno,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqx_sqlstatement<br>from&nbsp;syssqexplain,&nbsp;sysscblst<br>where&nbsp;&nbsp;&nbsp;sqx_sessionid&nbsp;=&nbsp;sid</div><br><u>SQL&nbsp;Output<br></u>username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester<br><div class="code_main">sqx_sessionid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55<br>sqx_conbno&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>sqx_sqlstatement&nbsp;&nbsp;select&nbsp;username,sqx_sessionid,&nbsp;sqx_conbno,&nbsp;sqx_sqlstatement<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;from&nbsp;syssqexplain,&nbsp;sysscblst<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;where&nbsp;&nbsp;&nbsp;sqx_sessionid&nbsp;=&nbsp;sid<br>username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lester<br>sqx_sessionid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;51<br>sqx_conbno&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>sqx_sqlstatement&nbsp;&nbsp;update&nbsp;items&nbsp;set&nbsp;total_price&nbsp;=&nbsp;300&nbsp;where&nbsp;item_num&nbsp;=&nbsp;1</div><br><u>Conclusion</u><br>The&nbsp;sysmaster&nbsp;database&nbsp;is&nbsp;a&nbsp;great&nbsp;tool&nbsp;for&nbsp;a&nbsp;DBA&nbsp;to&nbsp;monitor&nbsp;the&nbsp;Informix&nbsp;server.&nbsp;If&nbsp;you&nbsp;have&nbsp;any&nbsp;questions&nbsp;or&nbsp;suggestions&nbsp;please&nbsp;send&nbsp;me&nbsp;E-mail&nbsp;at&nbsp;<a target="_blank" href="mailto:lester@advancedatatools.com">lester@advancedatatools.com</a>.&nbsp;Also,&nbsp;if&nbsp;you&nbsp;have&nbsp;any&nbsp;creative&nbsp;scripts&nbsp;for&nbsp;monitoring&nbsp;your&nbsp;server&nbsp;with&nbsp;the&nbsp;sysmaster&nbsp;database,&nbsp;please&nbsp;send&nbsp;them&nbsp;in&nbsp;and&nbsp;I&nbsp;may&nbsp;include&nbsp;them&nbsp;in&nbsp;the&nbsp;future&nbsp;publications.]]></content:encoded><link>http://www.517sou.net/blogview.asp?logID=1635</link><dc:subject>数据库专栏</dc:subject><dc:creator>flyinweb</dc:creator><dc:date>2009-6-9 14:22:23</dc:date></item><item rdf:about="http://www.517sou.net/blogview.asp?logID=1634"><title>Apache 2.x 服务器中的URL重写的配置和应用</title><description><![CDATA[Apache&nbsp;2.x&nbsp;服务器中的URL重写的配置和应用<br>作者：北南南北<br>来自：LinuxSir.Org<br>摘要：&nbsp;本文是关于Apache&nbsp;2.x&nbsp;服务器中的URL别名规则的文档，它是通过rewrite模块来实现的。能过URL别名规则，我们能看到一个干净的URL，比如可以重写为类似静态网页的地址。比如&nbsp;LinuxSir.Org&nbsp;论坛中，每个帖子都有一个静态网页的地址。干净的URL，对于Google搜索引擎来说是极为受用的，能更快的收录。本文只是一个小提示，或者对有些弟兄有用。<br>]]></description><content:encoded><![CDATA[Apache&nbsp;2.x&nbsp;服务器中的URL重写的配置和应用<br>作者：北南南北<br>来自：LinuxSir.Org<br>摘要：&nbsp;本文是关于Apache&nbsp;2.x&nbsp;服务器中的URL别名规则的文档，它是通过rewrite模块来实现的。能过URL别名规则，我们能看到一个干净的URL，比如可以重写为类似静态网页的地址。比如&nbsp;LinuxSir.Org&nbsp;论坛中，每个帖子都有一个静态网页的地址。干净的URL，对于Google搜索引擎来说是极为受用的，能更快的收录。本文只是一个小提示，或者对有些弟兄有用。<br><br><strong>目录</strong>&nbsp;<br>1、关于Apache&nbsp;2.x&nbsp;URL别名的说明和设置；<br><br>1.1&nbsp;关于rewrite模块的调用；<br>1.2&nbsp;设置DocumentRoot的Directory；<br>1.3&nbsp;重启httpd服务器；&nbsp;<br>2、关于Apache&nbsp;2.x&nbsp;URL重写规则的应用；<br><br>2.1&nbsp;vbb&nbsp;论坛的URL地址重写配置&nbsp;<br>2.2&nbsp;drupal&nbsp;的URL地址重写设置；&nbsp;<br>3、关于本文；<br>4、修改日志；<br>5、参考文档；<br>6、相关文档；&nbsp;<br><br><br>++++++++++++++++++++++++++++++++++++<br>正文<br>++++++++++++++++++++++++++++++++++++<br><br><strong>1、关于Apache&nbsp;2.x&nbsp;URL别名的说明和设置；</strong><br><br>Apache&nbsp;2.x&nbsp;服务器中的URL别名规则的文档，它是通过rewrite模块来实现的。能过URL别名规则，我们能看到一个干净的URL，比如可以重写为类似静态网页的地址。比如&nbsp;LinuxSir.Org&nbsp;论坛中，每个帖子都有一个静态网页的地址。干净的URL，对于Google搜索引擎来说是极为受用的，能更快的收录。<br><br>这个重写，是通过Apache&nbsp;2.x&nbsp;内部实现的，只是表面上把Web应用程序的URL变的干净一点，原始的URL还是一样有效。<br><br>1.1&nbsp;关于rewrite模块的调用；<br><br>Apache&nbsp;2.x&nbsp;中URL重写，是通过mod_rewrite.so&nbsp;来实现的，所以您要查看您的Apache&nbsp;是否已经被编译进去这个模块了，并且在Apache的配置文件httpd.conf&nbsp;中已经调用了这个模块。在大多数主流发行版中，Apache&nbsp;2.x&nbsp;是把rewrite模块已经编入进去了。比如我用的是Slackware。Apache&nbsp;2.x的配置文件，放在&nbsp;/etc/httpd&nbsp;目录下。<br><br>在&nbsp;httpd.conf&nbsp;中，我们会发现类似如下的一行，是有关rewrite模块的，模块名是&nbsp;mod_rewrite.so&nbsp;。<br><div class="code_main">LoadModule&nbsp;rewrite_module&nbsp;lib/httpd/modules/mod_rewrite.so</div><br>或<br><div class="code_main">LoadModule&nbsp;rewrite_module&nbsp;lib/apache2/modules/mod_rewrite.so</div><br><br>如果前面有#号，您要去掉。对于大多数发行版来说，Apache&nbsp;2的模块一般是位于如下的两个位置<br><div class="code_main">/usr/lib/apache2/modules</div><br>或<br><div class="code_main">/usr/lib/httpd/modules</div><br>如果在httpd中打开调用rewrite_module的设置，查看一下是不是能调用了，要通过&nbsp;httpd&nbsp;-M的参数来查看；<br><div class="code_main">#/usr/sbin/httpd&nbsp;-M&nbsp;</div><br>如果发现有如下一行，说明模块已经能被调用了<br><div class="code_main">rewrite_module&nbsp;(shared)</div><br><br><strong>1.2&nbsp;设置DocumentRoot的Directory；</strong><br><br>在Apache&nbsp;2.x&nbsp;中，我们会看到&nbsp;DocumentRoot设置的一行。这行就是存放网页程序的地方。比如LinuxSir.Org&nbsp;存放在&nbsp;/opt/www&nbsp;目录中。那么我们就要设置&nbsp;DocumentRoot为如下的。<br><div class="code_main">DocumentRoot&nbsp;&quot;/opt/www&quot;</div><br>然后我们再还要对&nbsp;DocumentRoot做针对性的行为设置。在一般的情况下，httpd.conf&nbsp;会给一个默认的。如果你要改&nbsp;DocumentRoot的路径，同时也要改针对DocumentRoot的Directory的设置，也就是<br><div class="code_main">&lt;Directory&nbsp;&quot;DocumentRoot所设置的路径&quot;&gt;</div><br>比如我们把DocumentRoot的路径改为了&nbsp;&quot;/opt/www&quot;，那我们也要把&nbsp;DocumentRoot做针对性的行为设置也要改成这个路径。<br><div class="code_main">&lt;Directory&nbsp;&quot;/opt/www&quot;&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;FollowSymLinks<br>&nbsp;&nbsp;&nbsp;&nbsp;#AllowOverride&nbsp;None&nbsp;注：把这行前面加#号，然后加下面的一行&nbsp;&nbsp;，也就是&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;ALL&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;ALL&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br>&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br><br>&lt;/Directory&gt;</div><br>我们把AllowOverride&nbsp;的参数设置为ALL，表示整台服务器上的，都支持URL规则重写。Apache&nbsp;服务器要读每个网站下的家目录下的&nbsp;.htaccess&nbsp;文件。如果没有这个文件，或者这个文档没有定义任何关于URL重写的规则，则不会有任何效果。在一般的情况下，成熟的Web&nbsp;服务器应用套件，都支持URL重写的，比如drupal和joomla&nbsp;。当我们用这些程序时，会发现在安装包中有&nbsp;.htaccess中有这个文件。我们把Apache配置好后，只是需要在这些程序的后台打开此功能就行了。<br><br><strong>1.3&nbsp;重启httpd服务器；</strong><br><br>在一般情况下，在各个发行版中，都有httpd服务器启动脚本，比如<br><div class="code_main">#&nbsp;/etc/rc.d/rc.httpd&nbsp;restart&nbsp;&nbsp;&nbsp;注：Slackware&nbsp;Linux<br>#&nbsp;/etc/init.d/apache2&nbsp;restart&nbsp;&nbsp;注：ubuntu、Debian&nbsp;等；<br>#&nbsp;/etc/init.d/httpd&nbsp;start&nbsp;&nbsp;注:Fedora&nbsp;、Redhat、CentOS&nbsp;</div><br><br><strong>2、关于Apache&nbsp;2.x&