<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jian&#039;s Blog</title>
	<atom:link href="http://www.54sa.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.54sa.net</link>
	<description>Python，Shell，Nagios，Zenoss，Cacti……</description>
	<lastBuildDate>Wed, 25 Apr 2012 22:22:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Return code of 127 for check of service</title>
		<link>http://www.54sa.net/?p=1402</link>
		<comments>http://www.54sa.net/?p=1402#comments</comments>
		<pubDate>Wed, 25 Apr 2012 22:17:36 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[monitor]]></category>
		<category><![CDATA[原创分享]]></category>
		<category><![CDATA[nagios]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1402</guid>
		<description><![CDATA[Return code of 127 for check of service &#8216;PORT&#8217; on host &#8216;hostname&#8217; was out of bounds. Make sure the plugin you&#8217;re trying to run actually exists. 如果你的nagios出现了这个错误，解决办法如下： 1.请确认libexec目录下插件是否存在，如果没有，下载nagios-plugins解压编译就行了。（大部分是这个原因引起） 2.如果你确认文件存在，并且对应的命令都OK的话，那么可能是hostgroup或者servicegroup的member过多引起的。我最近刚遇到过这个问题，其中一个servicegroup的member达到了1万多，查了半天才发现是这个原因引起。 3.还没发现有第三种情况会引起这个错误。]]></description>
			<content:encoded><![CDATA[<p>Return code of 127 for check of service &#8216;PORT&#8217; on host &#8216;hostname&#8217; was out of bounds. Make sure the plugin you&#8217;re trying to run actually exists.</p>
<p>如果你的nagios出现了这个错误，解决办法如下：</p>
<p>1.请确认libexec目录下插件是否存在，如果没有，下载nagios-plugins解压编译就行了。（大部分是这个原因引起）</p>
<p>2.如果你确认文件存在，并且对应的命令都OK的话，那么可能是hostgroup或者servicegroup的member过多引起的。我最近刚遇到过这个问题，其中一个servicegroup的member达到了1万多，查了半天才发现是这个原因引起。</p>
<p>3.还没发现有第三种情况会引起这个错误。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1402</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios性能调优</title>
		<link>http://www.54sa.net/?p=1387</link>
		<comments>http://www.54sa.net/?p=1387#comments</comments>
		<pubDate>Thu, 29 Mar 2012 10:51:50 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[monitor]]></category>
		<category><![CDATA[原创分享]]></category>
		<category><![CDATA[nagios]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1387</guid>
		<description><![CDATA[先提供两篇文章： http://assets.nagios.com/downloads/nagiosxi/docs/Maximizing_XI_Performance.pdf http://nagios-cn.sourceforge.net/nagios-cn/selfoption.html#tuning 调优前请先确定是否有必要调优，主机服务数量分别有多少？偶的环境监控服务器已达到近20台，监控的hosts近2万，服务7万+。 一、nagios.cfg可以调整的参数： use_large_installation_tweaks=1 enable_environment_macros=0    #能减少部分CPU使用 check_result_reaper_frequency=3 #这降低检查延迟 max_check_result_reaper_time=10  #这降低检查延迟。 external_command_buffer_slots=512  #根据你的实际情况修改 cached_host_check_horizon=15  cached_service_check_horizon=15 #使用缓存结果，节省检查 use_aggressive_host_checking=0 二、使用ramdisk（强烈建议） 我修改后监控服务器的内存与磁盘使用情况下降的很不可思议，共6G内存修改前使用5G，修改后降到1G多。 操作步骤不写出来了，自行参考 http://labs.nagios.com/2012/01/30/nagios-performance-tuning-tech-tips-understanding-disk-io/]]></description>
			<content:encoded><![CDATA[<p>先提供两篇文章：</p>
<p><a href="http://assets.nagios.com/downloads/nagiosxi/docs/Maximizing_XI_Performance.pdf">http://assets.nagios.com/downloads/nagiosxi/docs/Maximizing_XI_Performance.pdf</a></p>
<p><a href="http://nagios-cn.sourceforge.net/nagios-cn/selfoption.html#tuning">http://nagios-cn.sourceforge.net/nagios-cn/selfoption.html#tuning</a></p>
<p>调优前请先确定是否有必要调优，主机服务数量分别有多少？偶的环境监控服务器已达到近20台，监控的hosts近2万，服务7万+。</p>
<p>一、nagios.cfg可以调整的参数：</p>
<p>use_large_installation_tweaks=1<br />
enable_environment_macros=0    #能减少部分CPU使用<br />
check_result_reaper_frequency=3 #这降低检查延迟<br />
max_check_result_reaper_time=10  #这降低检查延迟。<br />
external_command_buffer_slots=512  #根据你的实际情况修改<br />
cached_host_check_horizon=15  cached_service_check_horizon=15 #使用缓存结果，节省检查<br />
use_aggressive_host_checking=0</p>
<p>二、使用ramdisk（强烈建议）<br />
我修改后监控服务器的内存与磁盘使用情况下降的很不可思议，共6G内存修改前使用5G，修改后降到1G多。<br />
操作步骤不写出来了，自行参考 <a href="http://labs.nagios.com/2012/01/30/nagios-performance-tuning-tech-tips-understanding-disk-io/">http://labs.nagios.com/2012/01/30/nagios-performance-tuning-tech-tips-understanding-disk-io/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1387</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>每周一推 2012-03-18</title>
		<link>http://www.54sa.net/?p=1385</link>
		<comments>http://www.54sa.net/?p=1385#comments</comments>
		<pubDate>Sun, 18 Mar 2012 10:25:00 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1385</guid>
		<description><![CDATA[fuser lsof # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>fuser lsof <a href="http://twitter.com/xxcn/statuses/179080776091049984" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1385</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux进程状态(ps stat)之R、S、D、T、Z、X</title>
		<link>http://www.54sa.net/?p=1382</link>
		<comments>http://www.54sa.net/?p=1382#comments</comments>
		<pubDate>Sat, 10 Mar 2012 17:19:17 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[CPTA(转载)]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[stat]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1382</guid>
		<description><![CDATA[Linux是一个多用户，多任务的系统，可以同时运行多个用户的多个程序，就必然会产生很多的进程，而每个进程会有不同的状态。 Linux进程状态：R (TASK_RUNNING)，可执行状态。 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态，这些进程的task_struct结构（进程控制块）被放入对应CPU的可执行队列中（一个进程最多只能出现在一个CPU的可执行队列中）。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。 很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态，这两种状态在linux下统一为 TASK_RUNNING状态。 Linux进程状态：S (TASK_INTERRUPTIBLE)，可中断的睡眠状态。 处于这个状态的进程因为等待某某事件的发生（比如等待socket连接、等待信号量），而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时（由外部中断触发、或由其他进程触发），对应的等待队列中的一个或多个进程将被唤醒。 通过ps命令我们会看到，一般情况下，进程列表中的绝大多数进程都处于TASK_INTERRUPTIBLE状态（除非机器的负载很高）。毕竟CPU就这么一两个，进程动辄几十上百个，如果不是绝大多数进程都在睡眠，CPU又怎么响应得过来。 Linux进程状态：D (TASK_UNINTERRUPTIBLE)，不可中断的睡眠状态。 与TASK_INTERRUPTIBLE状态类似，进程处于睡眠状态，但是此刻进程是不可中断的。不可中断，指的并不是CPU不响应外部硬件的中断，而是指进程不响应异步信号。 绝大多数情况下，进程处在睡眠状态时，总是应该能够响应异步信号的。否则你将惊奇的发现，kill -9竟然杀不死一个正在睡眠的进程了！于是我们也很好理解，为什么ps命令看到的进程几乎不会出现TASK_UNINTERRUPTIBLE状态，而总是TASK_INTERRUPTIBLE状态。 而TASK_UNINTERRUPTIBLE状态存在的意义就在于，内核的某些处理流程是不能被打断的。如果响应异步信号，程序的执行流程中就会被插入一段用于处理异步信号的流程（这个插入的流程可能只存在于内核态，也可能延伸到用户态），于是原有的流程就被中断了。（参见《linux内核异步中断浅析》） 在进程对某些硬件进行操作时（比如进程调用read系统调用对某个设备文件进行读操作，而read系统调用最终执行到对应设备驱动的代码，并与对应的物理设备进行交互），可能需要使用TASK_UNINTERRUPTIBLE状态对进程进行保护，以避免进程与设备交互的过程被打断，造成设备陷入不可控的状态。这种情况下的TASK_UNINTERRUPTIBLE状态总是非常短暂的，通过ps命令基本上不可能捕捉到。 linux系统中也存在容易捕捉的TASK_UNINTERRUPTIBLE状态。执行vfork系统调用后，父进程将进入TASK_UNINTERRUPTIBLE状态，直到子进程调用exit或exec（参见《神奇的vfork》）。 通过下面的代码就能得到处于TASK_UNINTERRUPTIBLE状态的进程： #include void main() { if (!vfork()) sleep(100); } 编译运行，然后ps一下： kouu@kouu-one:~/test$ ps -ax &#124; grep a\.out 4371 pts/0    D+     0:00 ./a.out 4372 pts/0    S+     0:00 ./a.out 4374 pts/1    S+     0:00 grep a.out 然后我们可以试验一下TASK_UNINTERRUPTIBLE状态的威力。不管kill还是kill -9，这个TASK_UNINTERRUPTIBLE状态的父进程依然屹立不倒。 Linux进程状态：T (TASK_STOPPED or TASK_TRACED)，暂停状态或跟踪状态。 向进程发送一个SIGSTOP信号，它就会因响应该信号而进入TASK_STOPPED状态（除非该进程本身处于TASK_UNINTERRUPTIBLE状态而不响应信号）。（SIGSTOP与SIGKILL信号一样，是非常强制的。不允许用户进程通过signal系列的系统调用重新设置对应的信号处理函数。） 向进程发送一个SIGCONT信号，可以让其从TASK_STOPPED状态恢复到TASK_RUNNING状态。 当进程正在被跟踪时，它处于TASK_TRACED这个特殊的状态。“正在被跟踪”指的是进程暂停下来，等待跟踪它的进程对它进行操作。比如在gdb中对被跟踪的进程下一个断点，进程在断点处停下来的时候就处于TASK_TRACED状态。而在其他时候，被跟踪的进程还是处于前面提到的那些状态。 对于进程本身来说，TASK_STOPPED和TASK_TRACED状态很类似，都是表示进程暂停下来。 而TASK_TRACED状态相当于在TASK_STOPPED之上多了一层保护，处于TASK_TRACED状态的进程不能响应SIGCONT信号而被唤醒。只能等到调试进程通过ptrace系统调用执行PTRACE_CONT、PTRACE_DETACH等操作（通过ptrace系统调用的参数指定操作），或调试进程退出，被调试的进程才能恢复TASK_RUNNING状态。 Linux进程状态：Z (TASK_DEAD &#8211; EXIT_ZOMBIE)，退出状态，进程成为僵尸进程。 进程在退出的过程中，处于TASK_DEAD状态。 在这个退出过程中，进程占有的所有资源将被回收，除了task_struct结构（以及少数资源）以外。于是进程就只剩下task_struct这么个空壳，故称为僵尸。 之所以保留task_struct，是因为task_struct里面保存了进程的退出码、以及一些统计信息。而其父进程很可能会关心这些信息。比如在shell中，$?变量就保存了最后一个退出的前台进程的退出码，而这个退出码往往被作为if语句的判断条件。 当然，内核也可以将这些信息保存在别的地方，而将task_struct结构释放掉，以节省一些空间。但是使用task_struct结构更为方便，因为在内核中已经建立了从pid到task_struct查找关系，还有进程间的父子关系。释放掉task_struct，则需要建立一些新的数据结构，以便让父进程找到它的子进程的退出信息。 父进程可以通过wait系列的系统调用（如wait4、waitid）来等待某个或某些子进程的退出，并获取它的退出信息。然后wait系列的系统调用会顺便将子进程的尸体（task_struct）也释放掉。 子进程在退出的过程中，内核会给其父进程发送一个信号，通知父进程来“收尸”。这个信号默认是SIGCHLD，但是在通过clone系统调用创建子进程时，可以设置这个信号。 通过下面的代码能够制造一个EXIT_ZOMBIE状态的进程： #include void main() { if (fork()) while(1) sleep(100); } 编译运行，然后ps一下： kouu@kouu-one:~/test$ ps -ax &#124; grep a\.out 10410 pts/0    S+     0:00 ./a.out 10411 pts/0    Z+     0:00 [a.out] 10413 pts/1    S+     0:00 grep a.out 只要父进程不退出，这个僵尸状态的子进程就一直存在。那么如果父进程退出了呢，谁又来给子进程“收尸”？ 当进程退出的时候，会将它的所有子进程都托管给别的进程（使之成为别的进程的子进程）。托管给谁呢？可能是退出进程所在进程组的下一个进程（如果存在的话），或者是1号进程。所以每个进程、每时每刻都有父进程存在。除非它是1号进程。 1号进程，pid为1的进程，又称init进程。 linux系统启动后，第一个被创建的用户态进程就是init进程。它有两项使命： 1、执行系统初始化脚本，创建一系列的进程（它们都是init进程的子孙）； 2、在一个死循环中等待其子进程的退出事件，并调用waitid系统调用来完成“收尸”工作； init进程不会被暂停、也不会被杀死（这是由内核来保证的）。它在等待子进程退出的过程中处于TASK_INTERRUPTIBLE状态，“收尸”过程中则处于TASK_RUNNING状态。 Linux进程状态：X (TASK_DEAD &#8211; EXIT_DEAD)，退出状态，进程即将被销毁。 而进程在退出过程中也可能不会保留它的task_struct。比如这个进程是多线程程序中被detach过的进程（进程？线程？参见《linux线程浅析》）。或者父进程通过设置SIGCHLD信号的handler为SIG_IGN，显式的忽略了SIGCHLD信号。（这是posix的规定，尽管子进程的退出信号可以被设置为SIGCHLD以外的其他信号。） 此时，进程将被置于EXIT_DEAD退出状态，这意味着接下来的代码立即就会将该进程彻底释放。所以EXIT_DEAD状态是非常短暂的，几乎不可能通过ps命令捕捉到。 进程的初始状态 进程是通过fork系列的系统调用（fork、clone、vfork）来创建的，内核（或内核模块）也可以通过kernel_thread函数创建内核进程。这些创建子进程的函数本质上都完成了相同的功能——将调用进程复制一份，得到子进程。（可以通过选项参数来决定各种资源是共享、还是私有。） 那么既然调用进程处于TASK_RUNNING状态（否则，它若不是正在运行，又怎么进行调用？），则子进程默认也处于TASK_RUNNING状态。 另外，在系统调用调用clone和内核函数kernel_thread也接受CLONE_STOPPED选项，从而将子进程的初始状态置为 TASK_STOPPED。 进程状态变迁 进程自创建以后，状态可能发生一系列的变化，直到进程退出。而尽管进程状态有好几种，但是进程状态的变迁却只有两个方向——从TASK_RUNNING状态变为非TASK_RUNNING状态、或者从非TASK_RUNNING状态变为TASK_RUNNING状态。&#8230; <a href="http://www.54sa.net/?p=1382">继续阅读 <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Linux是一个多用户，多任务的系统，可以同时运行多个用户的多个程序，就必然会产生很多的进程，而每个进程会有不同的状态。</p>
<p>Linux进程状态：R (TASK_RUNNING)，可执行状态。</p>
<p>只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态，这些进程的task_struct结构（进程控制块）被放入对应CPU的可执行队列中（一个进程最多只能出现在一个CPU的可执行队列中）。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。</p>
<p>很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态，这两种状态在linux下统一为 TASK_RUNNING状态。</p>
<p>Linux进程状态：S (TASK_INTERRUPTIBLE)，可中断的睡眠状态。</p>
<p>处于这个状态的进程因为等待某某事件的发生（比如等待socket连接、等待信号量），而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时（由外部中断触发、或由其他进程触发），对应的等待队列中的一个或多个进程将被唤醒。</p>
<p>通过ps命令我们会看到，一般情况下，进程列表中的绝大多数进程都处于TASK_INTERRUPTIBLE状态（除非机器的负载很高）。毕竟CPU就这么一两个，进程动辄几十上百个，如果不是绝大多数进程都在睡眠，CPU又怎么响应得过来。</p>
<p>Linux进程状态：D (TASK_UNINTERRUPTIBLE)，不可中断的睡眠状态。</p>
<p>与TASK_INTERRUPTIBLE状态类似，进程处于睡眠状态，但是此刻进程是不可中断的。不可中断，指的并不是CPU不响应外部硬件的中断，而是指进程不响应异步信号。<br />
绝大多数情况下，进程处在睡眠状态时，总是应该能够响应异步信号的。否则你将惊奇的发现，kill -9竟然杀不死一个正在睡眠的进程了！于是我们也很好理解，为什么ps命令看到的进程几乎不会出现TASK_UNINTERRUPTIBLE状态，而总是TASK_INTERRUPTIBLE状态。</p>
<p>而TASK_UNINTERRUPTIBLE状态存在的意义就在于，内核的某些处理流程是不能被打断的。如果响应异步信号，程序的执行流程中就会被插入一段用于处理异步信号的流程（这个插入的流程可能只存在于内核态，也可能延伸到用户态），于是原有的流程就被中断了。（参见《linux内核异步中断浅析》）<br />
在进程对某些硬件进行操作时（比如进程调用read系统调用对某个设备文件进行读操作，而read系统调用最终执行到对应设备驱动的代码，并与对应的物理设备进行交互），可能需要使用TASK_UNINTERRUPTIBLE状态对进程进行保护，以避免进程与设备交互的过程被打断，造成设备陷入不可控的状态。这种情况下的TASK_UNINTERRUPTIBLE状态总是非常短暂的，通过ps命令基本上不可能捕捉到。</p>
<p>linux系统中也存在容易捕捉的TASK_UNINTERRUPTIBLE状态。执行vfork系统调用后，父进程将进入TASK_UNINTERRUPTIBLE状态，直到子进程调用exit或exec（参见《神奇的vfork》）。<br />
通过下面的代码就能得到处于TASK_UNINTERRUPTIBLE状态的进程：</p>
<ol>
<li>#include</li>
<li>void main() {</li>
<li>if (!vfork()) sleep(100);</li>
<li>}</li>
</ol>
<p>编译运行，然后ps一下：</p>
<ol>
<li>kouu@kouu-one:~/test$ ps -ax | grep a\.out</li>
<li>4371 pts/0    D+     0:00 ./a.out</li>
<li>4372 pts/0    S+     0:00 ./a.out</li>
<li>4374 pts/1    S+     0:00 grep a.out</li>
</ol>
<p>然后我们可以试验一下TASK_UNINTERRUPTIBLE状态的威力。不管kill还是kill -9，这个TASK_UNINTERRUPTIBLE状态的父进程依然屹立不倒。</p>
<p><strong>Linux进程状态：T (TASK_STOPPED or TASK_TRACED)，暂停状态或跟踪状态。</strong></p>
<p>向进程发送一个SIGSTOP信号，它就会因响应该信号而进入TASK_STOPPED状态（除非该进程本身处于TASK_UNINTERRUPTIBLE状态而不响应信号）。（SIGSTOP与SIGKILL信号一样，是非常强制的。不允许用户进程通过signal系列的系统调用重新设置对应的信号处理函数。）<br />
向进程发送一个SIGCONT信号，可以让其从TASK_STOPPED状态恢复到TASK_RUNNING状态。</p>
<p>当进程正在被跟踪时，它处于TASK_TRACED这个特殊的状态。“正在被跟踪”指的是进程暂停下来，等待跟踪它的进程对它进行操作。比如在gdb中对被跟踪的进程下一个断点，进程在断点处停下来的时候就处于TASK_TRACED状态。而在其他时候，被跟踪的进程还是处于前面提到的那些状态。</p>
<p>对于进程本身来说，TASK_STOPPED和TASK_TRACED状态很类似，都是表示进程暂停下来。<br />
而TASK_TRACED状态相当于在TASK_STOPPED之上多了一层保护，处于TASK_TRACED状态的进程不能响应SIGCONT信号而被唤醒。只能等到调试进程通过ptrace系统调用执行PTRACE_CONT、PTRACE_DETACH等操作（通过ptrace系统调用的参数指定操作），或调试进程退出，被调试的进程才能恢复TASK_RUNNING状态。</p>
<p><strong>Linux进程状态：Z (TASK_DEAD &#8211; EXIT_ZOMBIE)，退出状态，进程成为僵尸进程。</strong></p>
<p>进程在退出的过程中，处于TASK_DEAD状态。</p>
<p>在这个退出过程中，进程占有的所有资源将被回收，除了task_struct结构（以及少数资源）以外。于是进程就只剩下task_struct这么个空壳，故称为僵尸。<br />
之所以保留task_struct，是因为task_struct里面保存了进程的退出码、以及一些统计信息。而其父进程很可能会关心这些信息。比如在shell中，$?变量就保存了最后一个退出的前台进程的退出码，而这个退出码往往被作为if语句的判断条件。<br />
当然，内核也可以将这些信息保存在别的地方，而将task_struct结构释放掉，以节省一些空间。但是使用task_struct结构更为方便，因为在内核中已经建立了从pid到task_struct查找关系，还有进程间的父子关系。释放掉task_struct，则需要建立一些新的数据结构，以便让父进程找到它的子进程的退出信息。</p>
<p>父进程可以通过wait系列的系统调用（如wait4、waitid）来等待某个或某些子进程的退出，并获取它的退出信息。然后wait系列的系统调用会顺便将子进程的尸体（task_struct）也释放掉。<br />
子进程在退出的过程中，内核会给其父进程发送一个信号，通知父进程来“收尸”。这个信号默认是SIGCHLD，但是在通过clone系统调用创建子进程时，可以设置这个信号。</p>
<p>通过下面的代码能够制造一个EXIT_ZOMBIE状态的进程：</p>
<ol>
<li>#include</li>
<li>void main() {</li>
<li>if (fork())</li>
<li>while(1) sleep(100);</li>
<li>}</li>
</ol>
<p>编译运行，然后ps一下：</p>
<ol>
<li>kouu@kouu-one:~/test$ ps -ax | grep a\.out</li>
<li>10410 pts/0    S+     0:00 ./a.out</li>
<li>10411 pts/0    Z+     0:00 [a.out]</li>
<li>10413 pts/1    S+     0:00 grep a.out</li>
</ol>
<p>只要父进程不退出，这个僵尸状态的子进程就一直存在。那么如果父进程退出了呢，谁又来给子进程“收尸”？<br />
当进程退出的时候，会将它的所有子进程都托管给别的进程（使之成为别的进程的子进程）。托管给谁呢？可能是退出进程所在进程组的下一个进程（如果存在的话），或者是1号进程。所以每个进程、每时每刻都有父进程存在。除非它是1号进程。</p>
<p>1号进程，pid为1的进程，又称init进程。<br />
linux系统启动后，第一个被创建的用户态进程就是init进程。它有两项使命：<br />
1、执行系统初始化脚本，创建一系列的进程（它们都是init进程的子孙）；<br />
2、在一个死循环中等待其子进程的退出事件，并调用waitid系统调用来完成“收尸”工作；<br />
init进程不会被暂停、也不会被杀死（这是由内核来保证的）。它在等待子进程退出的过程中处于TASK_INTERRUPTIBLE状态，“收尸”过程中则处于TASK_RUNNING状态。</p>
<p><strong>Linux进程状态：X (TASK_DEAD &#8211; EXIT_DEAD)，退出状态，进程即将被销毁。</strong></p>
<p>而进程在退出过程中也可能不会保留它的task_struct。比如这个进程是多线程程序中被detach过的进程（进程？线程？参见《linux线程浅析》）。或者父进程通过设置SIGCHLD信号的handler为SIG_IGN，显式的忽略了SIGCHLD信号。（这是posix的规定，尽管子进程的退出信号可以被设置为SIGCHLD以外的其他信号。）<br />
此时，进程将被置于EXIT_DEAD退出状态，这意味着接下来的代码立即就会将该进程彻底释放。所以EXIT_DEAD状态是非常短暂的，几乎不可能通过ps命令捕捉到。</p>
<p>进程的初始状态</p>
<p>进程是通过fork系列的系统调用（fork、clone、vfork）来创建的，内核（或内核模块）也可以通过kernel_thread函数创建内核进程。这些创建子进程的函数本质上都完成了相同的功能——将调用进程复制一份，得到子进程。（可以通过选项参数来决定各种资源是共享、还是私有。）<br />
那么既然调用进程处于TASK_RUNNING状态（否则，它若不是正在运行，又怎么进行调用？），则子进程默认也处于TASK_RUNNING状态。<br />
另外，在系统调用调用clone和内核函数kernel_thread也接受CLONE_STOPPED选项，从而将子进程的初始状态置为 TASK_STOPPED。</p>
<p>进程状态变迁</p>
<p>进程自创建以后，状态可能发生一系列的变化，直到进程退出。而尽管进程状态有好几种，但是进程状态的变迁却只有两个方向——从TASK_RUNNING状态变为非TASK_RUNNING状态、或者从非TASK_RUNNING状态变为TASK_RUNNING状态。<br />
也就是说，如果给一个TASK_INTERRUPTIBLE状态的进程发送SIGKILL信号，这个进程将先被唤醒（进入TASK_RUNNING状态），然后再响应SIGKILL信号而退出（变为TASK_DEAD状态）。并不会从TASK_INTERRUPTIBLE状态直接退出。</p>
<p>进程从非TASK_RUNNING状态变为TASK_RUNNING状态，是由别的进程（也可能是中断处理程序）执行唤醒操作来实现的。执行唤醒的进程设置被唤醒进程的状态为TASK_RUNNING，然后将其task_struct结构加入到某个CPU的可执行队列中。于是被唤醒的进程将有机会被调度执行。</p>
<p>而进程从TASK_RUNNING状态变为非TASK_RUNNING状态，则有两种途径：<br />
1、响应信号而进入TASK_STOPED状态、或TASK_DEAD状态；<br />
2、执行系统调用主动进入TASK_INTERRUPTIBLE状态（如nanosleep系统调用）、或TASK_DEAD状态（如exit系统调用）；或由于执行系统调用需要的资源得不到满足，而进入TASK_INTERRUPTIBLE状态或TASK_UNINTERRUPTIBLE状态（如select系统调用）。<br />
显然，这两种情况都只能发生在进程正在CPU上执行的情况下。</p>
<p>内核模块代码：<br />
—————-killd.c—————-<br />
#include
<linux/init.h>
#include
<linux/module.h>
#include
<linux/sched.h> //for_each_process<br />
MODULE_LICENSE(“BSD”);<br />
static int pid = -1;<br />
module_param(pid, int, S_IRUGO);<br />
static int killd_init(void)<br />
{<br />
    struct task_struct * p;<br />
    printk(KERN_ALERT “killd: force D status process to death\n”);<br />
    printk(KERN_ALERT “killd: pid=%d\n”, pid);<br />
    //read_lock(&#038;tasklist_lock);<br />
    for_each_process(p){<br />
        if(p->pid == pid){<br />
            printk(“killd: found\n”);<br />
            set_task_state(p, TASK_STOPPED);<br />
            printk(KERN_ALERT “killd: aha, dead already\n”);<br />
            return 0;<br />
        }<br />
    }<br />
    printk(“not found”);<br />
    //read_unlock(&#038;tasklist_lock);<br />
    return 0;<br />
}<br />
static void killd_exit(void)<br />
{<br />
    printk(KERN_ALERT “killd: bye\n”);<br />
}<br />
module_init(killd_init);<br />
module_exit(killd_exit);<br />
—–Makefile————<br />
obj-m := killd.o<br />
编译模块<br />
make -C yourkerneltree M=`pwd` modules<br />
插入模块的时候提供D状态的进程号，就可以将其转换为stopped状态，使用普通kill就可以杀死。<br />
./insmod ./killd.ko pid=1234</p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1382</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trac报错Mod_python error: “PythonHandler trac.web.modpython_frontend”</title>
		<link>http://www.54sa.net/?p=1378</link>
		<comments>http://www.54sa.net/?p=1378#comments</comments>
		<pubDate>Thu, 02 Feb 2012 12:18:53 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[原创分享]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1378</guid>
		<description><![CDATA[安装好Trac后，通过tracd使用没问题，apache + mod_python时一直报下面的错误： Mod_python error: "PythonHandler trac.web.modpython_frontend" Traceback (most recent call last): File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch log=debug) File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 461, in import_module f, p, d = imp.find_module(parts[i], path) ImportError: No module named trac 纠结N久，终于找到解决办法： cd /usr/lib/python2.4/site-packages;unzip Trac-0.12.X-py2.4.egg 感谢http://h3x.no/2011/02/24/importerror-no-module-named-trac]]></description>
			<content:encoded><![CDATA[<p>安装好Trac后，通过tracd使用没问题，apache + mod_python时一直报下面的错误：</p>
<pre>Mod_python error: "PythonHandler trac.web.modpython_frontend"

Traceback (most recent call last):

  File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch
    log=debug)

  File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 461, in import_module
    f, p, d = imp.find_module(parts[i], path)

ImportError: No module named trac</pre>
<pre>纠结N久，终于找到解决办法：</pre>
<pre><span style="color: #ff0000;">cd /usr/lib/python2.4/site-packages;unzip Trac-0.12.X-py2.4.egg</span></pre>
<pre>感谢http://h3x.no/2011/02/24/importerror-no-module-named-trac</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1378</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>每周一推 2012-01-01</title>
		<link>http://www.54sa.net/?p=1377</link>
		<comments>http://www.54sa.net/?p=1377#comments</comments>
		<pubDate>Sun, 01 Jan 2012 10:25:00 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1377</guid>
		<description><![CDATA[#学习 http://t.co/vFGYXrAy jps jmap jstat使用 # #学习 http://t.co/L9A7CZui Java 6 JVM参数选项大全（中文版） # #学习 http://t.co/EK9mK6tX 大型网站架构演变和知识体系 # http://t.co/7OtuBI8L 小强和小明的故事 # 挑战传统思维局限，找出周遭难题，不屈挠地设法解决。数不清的问题正等人拿出创新的方法去解决。这需要具备敏锐的观察力，团队协作精神，执行方案的能力，从失败中学习的意愿，以及解决问题的创新能力。不过，首要的是态度，相信问题能够解决的态度。解决问题的经验积累越多，找出解决方案的信心越足。 # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>#学习 <a href="http://t.co/vFGYXrAy" rel="nofollow">http://t.co/vFGYXrAy</a>   jps jmap jstat使用 <a href="http://twitter.com/xxcn/statuses/153001699743776768" class="aktt_tweet_time">#</a></li>
<li>#学习  <a href="http://t.co/L9A7CZui" rel="nofollow">http://t.co/L9A7CZui</a>   Java 6 JVM参数选项大全（中文版） <a href="http://twitter.com/xxcn/statuses/152961887565393920" class="aktt_tweet_time">#</a></li>
<li>#学习  <a href="http://t.co/EK9mK6tX" rel="nofollow">http://t.co/EK9mK6tX</a> 大型网站架构演变和知识体系 <a href="http://twitter.com/xxcn/statuses/152961793260650496" class="aktt_tweet_time">#</a></li>
<li><a href="http://t.co/7OtuBI8L" rel="nofollow">http://t.co/7OtuBI8L</a><br />
小强和小明的故事 <a href="http://twitter.com/xxcn/statuses/151533177977049088" class="aktt_tweet_time">#</a></li>
<li>挑战传统思维局限，找出周遭难题，不屈挠地设法解决。数不清的问题正等人拿出创新的方法去解决。这需要具备敏锐的观察力，团队协作精神，执行方案的能力，从失败中学习的意愿，以及解决问题的创新能力。不过，首要的是态度，相信问题能够解决的态度。解决问题的经验积累越多，找出解决方案的信心越足。 <a href="http://twitter.com/xxcn/statuses/151183752817676290" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1377</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>每周一推 2011-12-25</title>
		<link>http://www.54sa.net/?p=1376</link>
		<comments>http://www.54sa.net/?p=1376#comments</comments>
		<pubDate>Sun, 25 Dec 2011 10:25:00 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1376</guid>
		<description><![CDATA[MIB Private Enterprise Number http://t.co/ZHleaXRI # http://t.co/AHVYFgvs 老子我很屌，因为有了支付宝。 # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>MIB Private Enterprise Number  <a href="http://t.co/ZHleaXRI" rel="nofollow">http://t.co/ZHleaXRI</a> <a href="http://twitter.com/xxcn/statuses/150226639383576576" class="aktt_tweet_time">#</a></li>
<li><a href="http://t.co/AHVYFgvs" rel="nofollow">http://t.co/AHVYFgvs</a><br />
老子我很屌，因为有了支付宝。 <a href="http://twitter.com/xxcn/statuses/148998199275831296" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1376</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>net-snmp中载入第三方mib库</title>
		<link>http://www.54sa.net/?p=1373</link>
		<comments>http://www.54sa.net/?p=1373#comments</comments>
		<pubDate>Fri, 23 Dec 2011 12:04:02 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[CPTA(转载)]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[mib]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1373</guid>
		<description><![CDATA[一般我们下载回来的mib文件可能后缀名为.mib，为了清晰起见，可能需要改名。一般改成 MIB_NAME.txt 这样的形式。 例如/usr/share/snmp/mibs/IP-MIB.txt 中包含如下一行 IP-MIB DEFINITIONS ::= BEGIN 这个MIB_NAME具体的定义是在mib文件中第一个包含 DEFINITIONS 的行，在DEFINITIONS之前的那个词就是MIB_NAME。 不过这个mib文件的名字是什么其实不重要，重要的是包含DEFINITIONS 的行中所定义的”Module”名字。 网上有一些文档说增加一个新的mib文件就是把mib文件复制到&#8217;/usr/share/snmp/mibs/&#8217;中就可以了，其实这是不对的! 首先，我们要将mib文件复制到&#8217;/usr/share/snmp/mibs/&#8217;中 但是光复制过去还不能生效，&#8217;snmpget&#8217;是不会自动加载所有在/usr/share/snmp/mibs/目录中的mib文件的! 如果不能正确加载mib文件的话，就会出现 “Unknown Object Identifier” 这样的错误。 因此在复制了mib文件到&#8217;/usr/share/snmp/mibs/&#8217;中以后，需要修改/usr/share/snmp/snmp.conf，加入下边一行： mibfile /usr/share/snmp/mibs/DS11INTEG-MIB.txt 或者 mibs +DS11INTEG-MIB 或者也可以在提示符下输入 # export MIBS=ALL 这样就可以引用我们新加入的mib文件了。例如： # snmpget -v1 -c public 192.168.49.253 BREEZECOM-DOT11EXT-MIB::roamQuality.1 BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3 或者这样也可以 # snmpget -v1 -c public 192.168.49.253 roamQuality.1 BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3 使用&#8217;snmptranslate&#8217; 命令可以获得一个文本项对应的OID值 # snmptranslate -On BREEZECOM-DOT11EXT-MIB::roamQuality .1.3.6.1.4.1.710.7.1.5.1.23.1.7 也可以使用&#8217;snmptranslate&#8217; 命令查询一个指定的对象 # snmptranslate -IR roamQuality BREEZECOM-DOT11EXT-MIB::roamQuality 还可以用snmptranslate命令把OID转化成文字描述 # snmptranslate .1.2.840.10036.2.2.1.12 IEEE802dot11-MIB::dot11FCSErrorCount # snmptranslate -Of .1.2.840.10036.2.2.1.12 .iso.member-body.us.ieee802dot11.dot11mac.dot11CountersTable.dot11CountersEntry.dot11FCSErrorCount&#8230; <a href="http://www.54sa.net/?p=1373">继续阅读 <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>一般我们下载回来的mib文件可能后缀名为.mib，为了清晰起见，可能需要改名。一般改成 MIB_NAME.txt 这样的形式。</p>
<p>例如/usr/share/snmp/mibs/IP-MIB.txt 中包含如下一行</p>
<p>IP-MIB DEFINITIONS ::= BEGIN</p>
<p>这个MIB_NAME具体的定义是在mib文件中第一个包含 DEFINITIONS 的行，在DEFINITIONS之前的那个词就是MIB_NAME。</p>
<p>不过这个mib文件的名字是什么其实不重要，重要的是包含DEFINITIONS 的行中所定义的”Module”名字。</p>
<p>网上有一些文档说增加一个新的mib文件就是把mib文件复制到&#8217;/usr/share/snmp/mibs/&#8217;中就可以了，其实这是不对的!</p>
<p>首先，我们要将mib文件复制到&#8217;/usr/share/snmp/mibs/&#8217;中</p>
<p>但是光复制过去还不能生效，&#8217;snmpget&#8217;是不会自动加载所有在/usr/share/snmp/mibs/目录中的mib文件的!</p>
<p>如果不能正确加载mib文件的话，就会出现 “Unknown Object Identifier” 这样的错误。</p>
<p>因此在复制了mib文件到&#8217;/usr/share/snmp/mibs/&#8217;中以后，需要修改/usr/share/snmp/snmp.conf，加入下边一行：</p>
<p>mibfile /usr/share/snmp/mibs/DS11INTEG-MIB.txt</p>
<p>或者</p>
<p>mibs +DS11INTEG-MIB</p>
<p>或者也可以在提示符下输入</p>
<p># export MIBS=ALL</p>
<p>这样就可以引用我们新加入的mib文件了。例如：</p>
<p># snmpget -v1 -c public 192.168.49.253 BREEZECOM-DOT11EXT-MIB::roamQuality.1<br />
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3</p>
<p>或者这样也可以</p>
<p># snmpget -v1 -c public 192.168.49.253 roamQuality.1<br />
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3</p>
<p>使用&#8217;snmptranslate&#8217; 命令可以获得一个文本项对应的OID值</p>
<p># snmptranslate -On BREEZECOM-DOT11EXT-MIB::roamQuality<br />
.1.3.6.1.4.1.710.7.1.5.1.23.1.7</p>
<p>也可以使用&#8217;snmptranslate&#8217; 命令查询一个指定的对象</p>
<p># snmptranslate -IR roamQuality<br />
BREEZECOM-DOT11EXT-MIB::roamQuality</p>
<p>还可以用snmptranslate命令把OID转化成文字描述</p>
<p># snmptranslate .1.2.840.10036.2.2.1.12<br />
IEEE802dot11-MIB::dot11FCSErrorCount</p>
<p># snmptranslate -Of .1.2.840.10036.2.2.1.12<br />
.iso.member-body.us.ieee802dot11.dot11mac.dot11CountersTable.dot11CountersEntry.dot11FCSErrorCount</p>
<p>也可用snmptranslate命令从mib文件获得某个对象的全部细节</p>
<p># snmptranslate -Td BREEZECOM-DOT11EXT-MIB:roamQuality<br />
BREEZECOM-DOT11EXT-MIB::roamQuality<br />
roamQuality OBJECT-TYPE<br />
&#8211; FROM       BREEZECOM-DOT11EXT-MIB<br />
SYNTAX        Integer32<br />
MAX-ACCESS    read-only<br />
STATUS        current<br />
DESCRIPTION   “An indicator for the quality of the BSS. The quality is<br />
calculated over the received Beacons of the BSS and depends<br />
on the selected quality indicator. The semantics of the<br />
indicator is &#8216;low is good quality&#8217; and &#8216;high is bad quality&#8217;.”<br />
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) breezeCOM(710) ds11Products(7)    dot11ExtMIB(1) dot11ExtWBUObjs(5) roam(1) roamTable</p>
<p>(23) roamEntry(1) 7 }</p>
<p>另一个有用的命令是snmpwalk</p>
<p># snmpwalk -v1 -c public 192.168.49.253 dot11CountersTable<br />
IEEE802dot11-MIB::dot11TransmittedFragmentCount.1 = INTEGER: 122172497<br />
IEEE802dot11-MIB::dot11MulticastTransmittedFrameCount.1 = INTEGER: 45242<br />
IEEE802dot11-MIB::dot11FailedCount.1 = INTEGER: 4009<br />
IEEE802dot11-MIB::dot11RetryCount.1 = INTEGER: 1601483<br />
IEEE802dot11-MIB::dot11MultipleRetryCount.1 = INTEGER: 885859<br />
IEEE802dot11-MIB::dot11FrameDuplicateCount.1 = INTEGER: 543281<br />
IEEE802dot11-MIB::dot11RTSSuccessCount.1 = INTEGER: 0<br />
IEEE802dot11-MIB::dot11RTSFailureCount.1 = INTEGER: 0<br />
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971754<br />
IEEE802dot11-MIB::dot11ReceivedFragmentCount.1 = INTEGER: 108826417<br />
IEEE802dot11-MIB::dot11MulticastReceivedFrameCount.1 = INTEGER: 31359<br />
IEEE802dot11-MIB::dot11FCSErrorCount.1 = INTEGER: 831325<br />
IEEE802dot11-MIB::dot11TransmittedFrameCount.1 = INTEGER: 122156588<br />
IEEE802dot11-MIB::dot11WEPUndecryptableCount.1 = INTEGER: 0</p>
<p>需要注意的是，在使用snmpget命令的时候，需要在查询的OID尾部增加.0 或者 .1，不然会报错。</p>
<p># snmpget -v1 -c public 192.168.49.253 dot11ACKfailureCount<br />
Error in packet<br />
Reason: (noSuchName) There is no such variable name in this MIB.<br />
Failed object: IEEE802dot11-MIB::dot11ACKFailureCount</p>
<p># snmpget -v1 -c public 192.168.49.253 dot11ACKFailureCount.1<br />
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971912</p>
<p>还有在unix系统中，系统是大小写敏感的，因此写OID的时候注意大小写不要写错。</p>
<p>FROM:http://liantongxue.iteye.com/blog/845648</p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1373</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux NET-SNMP常用OID(转)</title>
		<link>http://www.54sa.net/?p=1369</link>
		<comments>http://www.54sa.net/?p=1369#comments</comments>
		<pubDate>Fri, 23 Dec 2011 11:57:01 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[CPTA(转载)]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[oid]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1369</guid>
		<description><![CDATA[CPU Statistics 1 2 3 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1 5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2 15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3 &#160; CPU 1 2 3 4 5 6 7 percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0 raw user cpu time: .1.3.6.1.4.1.2021.11.50.0 percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0 raw system cpu time: .1.3.6.1.4.1.2021.11.52.0 percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0 raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0 raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0 &#160; Memory Statistics 1 2 3 4 5 6 7 8 Total Swap Size: .1.3.6.1.4.1.2021.4.3.0 Available&#8230; <a href="http://www.54sa.net/?p=1369">继续阅读 <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><strong>CPU Statistics</strong></h4>
<div>
<div id="highlighter_755957">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
</td>
<td>
<div>
<div><code>1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1</code></div>
<div><code>5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2</code></div>
<div><code>15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4><strong>CPU</strong></h4>
<div>
<div id="highlighter_542360">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</td>
<td>
<div>
<div><code>percentage of user CPU </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.9.0</code></div>
<div><code>raw user cpu </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.50.0</code></div>
<div><code>percentages of system CPU </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.10.0</code></div>
<div><code>raw system cpu </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.52.0</code></div>
<div><code>percentages of idle CPU </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.11.0</code></div>
<div><code>raw idle cpu </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.53.0</code></div>
<div><code>raw </code><code>nice</code> <code>cpu </code><code>time</code><code>: .1.3.6.1.4.1.2021.11.51.0</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4><strong>Memory Statistics</strong></h4>
<div>
<div id="highlighter_737866">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</td>
<td>
<div>
<div><code>Total Swap Size: .1.3.6.1.4.1.2021.4.3.0</code></div>
<div><code>Available Swap Space: .1.3.6.1.4.1.2021.4.4.0</code></div>
<div><code>Total RAM </code><code>in</code> <code>machine: .1.3.6.1.4.1.2021.4.5.0</code></div>
<div><code>Total RAM used: .1.3.6.1.4.1.2021.4.6.0</code></div>
<div><code>Total RAM Free: .1.3.6.1.4.1.2021.4.11.0</code></div>
<div><code>Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0</code></div>
<div><code>Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0</code></div>
<div><code>Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4><strong>Disk Statistics</strong></h4>
<p>The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):</p>
<p>disk / 100000 (or)</p>
<p>includeAllDisks 10% for all partitions and disks</p>
<p>The OIDs are as follows</p>
<div>
<div id="highlighter_178635">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</td>
<td>
<div>
<div><code>Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1</code></div>
<div><code>Path of the device </code><code>for</code> <code>the partition: .1.3.6.1.4.1.2021.9.1.3.1</code></div>
<div><code>Total size of the disk</code><code>/partion</code> <code>(kBytes): .1.3.6.1.4.1.2021.9.1.6.1</code></div>
<div><code>Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1</code></div>
<div><code>Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1</code></div>
<div><code>Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1</code></div>
<div><code>Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4><strong>System Uptime:</strong></h4>
<p>&nbsp;</p>
<div>
<div id="highlighter_699535">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div>
<div><code>.1.3.6.1.2.1.1.3.0</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4><strong>Examples</strong></h4>
<p>These Commands you need to run on the SNMP server</p>
<p>Get available disk space for / on the target host</p>
<p>#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1</p>
<p>this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry</p>
<p>&nbsp;</p>
<p>Get the 1-minute system load on the target host</p>
<p>#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1</p>
<p>&nbsp;</p>
<p>Get the 5-minute system load on the target host</p>
<p>#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2</p>
<p>&nbsp;</p>
<p>Get the 15-minute system load on the target host</p>
<p>#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3</p>
<p>&nbsp;</p>
<p>Get amount of available swap space on the target host</p>
<p>#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0</p>
<p>&nbsp;</p>
<h3>Variable Descriptor Object Identifier</h3>
<h4>SNMP System Group</h4>
<div>
<div id="highlighter_671707">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</td>
<td>
<div>
<div><code>sysDescr 1.3.6.1.2.1.1.1</code></div>
<div><code>sysObjectID 1.3.6.1.2.1.1.2</code></div>
<div><code>sysUpTime 1.3.6.1.2.1.1.3</code></div>
<div><code>sysContact 1.3.6.1.2.1.1.4</code></div>
<div><code>sysName 1.3.6.1.2.1.1.5</code></div>
<div><code>sysLocation 1.3.6.1.2.1.1.6</code></div>
<div><code>sysServices 1.3.6.1.2.1.1.7</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4>SNMP Interfaces Group</h4>
<p>&nbsp;</p>
<div>
<div id="highlighter_963417">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
<div>07</div>
<div>08</div>
<div>09</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>
<div>25</div>
</td>
<td>
<div>
<div><code>ifNumber 1.3.6.1.2.1.2.1</code></div>
<div><code>ifTable 1.3.6.1.2.1.2.2</code></div>
<div><code>ifEntry 1.3.6.1.2.1.2.2.1</code></div>
<div><code>ifIndex 1.3.6.1.2.1.2.2.1.1</code></div>
<div><code>ifDescr 1.3.6.1.2.1.2.2.1.2</code></div>
<div><code>ifType 1.3.6.1.2.1.2.2.1.3</code></div>
<div><code>ifMtu 1.3.6.1.2.1.2.2.1.4</code></div>
<div><code>ifSpeed 1.3.6.1.2.1.2.2.1.5</code></div>
<div><code>ifPhysAddress 1.3.6.1.2.1.2.2.1.6</code></div>
<div><code>ifAdminStatus 1.3.6.1.2.1.2.2.1.7</code></div>
<div><code>ifOperStatus 1.3.6.1.2.1.2.2.1.8</code></div>
<div><code>ifLastChange 1.3.6.1.2.1.2.2.1.9</code></div>
<div><code>ifInOctets 1.3.6.1.2.1.2.2.1.10</code></div>
<div><code>ifInUcastPkts 1.3.6.1.2.1.2.2.1.11</code></div>
<div><code>ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12</code></div>
<div><code>ifInDiscards 1.3.6.1.2.1.2.2.1.13</code></div>
<div><code>ifInErrors 1.3.6.1.2.1.2.2.1.14</code></div>
<div><code>ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15</code></div>
<div><code>ifOutOctets 1.3.6.1.2.1.2.2.1.16</code></div>
<div><code>ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17</code></div>
<div><code>ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18</code></div>
<div><code>ifOutDiscards 1.3.6.1.2.1.2.2.1.19</code></div>
<div><code>ifOutErrors 1.3.6.1.2.1.2.2.1.20</code></div>
<div><code>ifOutQLen 1.3.6.1.2.1.2.2.1.21</code></div>
<div><code>ifSpecific 1.3.6.1.2.1.2.2.1.22</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>SNMP IP Group</h4>
<div>
<div id="highlighter_120626">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
<div>07</div>
<div>08</div>
<div>09</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>
<div>25</div>
<div>26</div>
</td>
<td>
<div>
<div><code>ipForwarding 1.3.6.1.2.1.4.1</code></div>
<div><code>ipDefaultTTL 1.3.6.1.2.1.4.2</code></div>
<div><code>ipInReceives 1.3.6.1.2.1.4.3</code></div>
<div><code>ipInHdrErrors 1.3.6.1.2.1.4.4</code></div>
<div><code>ipInAddrErrors 1.3.6.1.2.1.4.5</code></div>
<div><code>ipForwDatagrams 1.3.6.1.2.1.4.6</code></div>
<div><code>ipInUnknownProtos 1.3.6.1.2.1.4.7</code></div>
<div><code>ipInDiscards 1.3.6.1.2.1.4.8</code></div>
<div><code>ipInDelivers 1.3.6.1.2.1.4.9</code></div>
<div><code>ipOutRequests 1.3.6.1.2.1.4.10</code></div>
<div><code>ipOutDiscards 1.3.6.1.2.1.4.11</code></div>
<div><code>ipOutNoRoutes 1.3.6.1.2.1.4.12</code></div>
<div><code>ipReasmTimeout 1.3.6.1.2.1.4.13</code></div>
<div><code>ipReasmReqds 1.3.6.1.2.1.4.14</code></div>
<div><code>ipReasmOKs 1.3.6.1.2.1.4.15</code></div>
<div><code>ipReasmFails 1.3.6.1.2.1.4.16</code></div>
<div><code>ipFragsOKs 1.3.6.1.2.1.4.17</code></div>
<div><code>ipFragsFails 1.3.6.1.2.1.4.18</code></div>
<div><code>ipFragCreates 1.3.6.1.2.1.4.19</code></div>
<div><code>ipAddrTable 1.3.6.1.2.1.4.20</code></div>
<div><code>ipAddrEntry 1.3.6.1.2.1.4.20.1</code></div>
<div><code>ipAdEntAddr 1.3.6.1.2.1.4.20.1.1</code></div>
<div><code>ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2</code></div>
<div><code>ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3</code></div>
<div><code>ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4</code></div>
<div><code>ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4>SNMP ICMP Group</h4>
<div>
<div id="highlighter_92346">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
<div>07</div>
<div>08</div>
<div>09</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>
<div>25</div>
<div>26</div>
</td>
<td>
<div>
<div><code>icmpInMsgs 1.3.6.1.2.1.5.1</code></div>
<div><code>icmpInErrors 1.3.6.1.2.1.5.2</code></div>
<div><code>icmpInDestUnreachs 1.3.6.1.2.1.5.3</code></div>
<div><code>icmpInTimeExcds 1.3.6.1.2.1.5.4</code></div>
<div><code>icmpInParmProbs 1.3.6.1.2.1.5.5</code></div>
<div><code>icmpInSrcQuenchs 1.3.6.1.2.1.5.6</code></div>
<div><code>icmpInRedirects 1.3.6.1.2.1.5.7</code></div>
<div><code>icmpInEchos 1.3.6.1.2.1.5.8</code></div>
<div><code>icmpInEchoReps 1.3.6.1.2.1.5.9</code></div>
<div><code>icmpInTimestamps 1.3.6.1.2.1.5.10</code></div>
<div><code>icmpInTimestampReps 1.3.6.1.2.1.5.11</code></div>
<div><code>icmpInAddrMasks 1.3.6.1.2.1.5.12</code></div>
<div><code>icmpInAddrMaskReps 1.3.6.1.2.1.5.13</code></div>
<div><code>icmpOutMsgs 1.3.6.1.2.1.5.14</code></div>
<div><code>icmpOutErrors 1.3.6.1.2.1.5.15</code></div>
<div><code>icmpOutDestUnreachs 1.3.6.1.2.1.5.16</code></div>
<div><code>icmpOutTimeExcds 1.3.6.1.2.1.5.17</code></div>
<div><code>icmpOutParmProbs 1.3.6.1.2.1.5.18</code></div>
<div><code>icmpOutSrcQuenchs 1.3.6.1.2.1.5.19</code></div>
<div><code>icmpOutRedirects 1.3.6.1.2.1.5.20</code></div>
<div><code>icmpOutEchos 1.3.6.1.2.1.5.21</code></div>
<div><code>icmpOutEchoReps 1.3.6.1.2.1.5.22</code></div>
<div><code>icmpOutTimestamps 1.3.6.1.2.1.5.23</code></div>
<div><code>icmpOutTimestampReps 1.3.6.1.2.1.5.24</code></div>
<div><code>icmpOutAddrMasks 1.3.6.1.2.1.5.25</code></div>
<div><code>icmpOutAddrMaskReps 1.3.6.1.2.1.5.26</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4>SNMP TCP Group</h4>
<div>
<div id="highlighter_405909">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
<div>07</div>
<div>08</div>
<div>09</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
</td>
<td>
<div>
<div><code>tcpRtoAlgorithm 1.3.6.1.2.1.6.1</code></div>
<div><code>tcpRtoMin 1.3.6.1.2.1.6.2</code></div>
<div><code>tcpRtoMax 1.3.6.1.2.1.6.3</code></div>
<div><code>tcpMaxConn 1.3.6.1.2.1.6.4</code></div>
<div><code>tcpActiveOpens 1.3.6.1.2.1.6.5</code></div>
<div><code>tcpPassiveOpens 1.3.6.1.2.1.6.6</code></div>
<div><code>tcpAttemptFails 1.3.6.1.2.1.6.7</code></div>
<div><code>tcpEstabResets 1.3.6.1.2.1.6.8</code></div>
<div><code>tcpCurrEstab 1.3.6.1.2.1.6.9</code></div>
<div><code>tcpInSegs 1.3.6.1.2.1.6.10</code></div>
<div><code>tcpOutSegs 1.3.6.1.2.1.6.11</code></div>
<div><code>tcpRetransSegs 1.3.6.1.2.1.6.12</code></div>
<div><code>tcpConnTable 1.3.6.1.2.1.6.13</code></div>
<div><code>tcpConnEntry 1.3.6.1.2.1.6.13.1</code></div>
<div><code>tcpConnState 1.3.6.1.2.1.6.13.1.1</code></div>
<div><code>tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2</code></div>
<div><code>tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3</code></div>
<div><code>tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4</code></div>
<div><code>tcpConnRemPort 1.3.6.1.2.1.6.13.1.5</code></div>
<div><code>tcpInErrs 1.3.6.1.2.1.6.14</code></div>
<div><code>tcpOutRsts 1.3.6.1.2.1.6.15</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4>SNMP UDP Group</h4>
<div>
<div id="highlighter_420527">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</td>
<td>
<div>
<div><code>udpInDatagrams 1.3.6.1.2.1.7.1</code></div>
<div><code>udpNoPorts 1.3.6.1.2.1.7.2</code></div>
<div><code>udpInErrors 1.3.6.1.2.1.7.3</code></div>
<div><code>udpOutDatagrams 1.3.6.1.2.1.7.4</code></div>
<div><code>udpTable 1.3.6.1.2.1.7.5</code></div>
<div><code>udpEntry 1.3.6.1.2.1.7.5.1</code></div>
<div><code>udpLocalAddress 1.3.6.1.2.1.7.5.1.1</code></div>
<div><code>udpLocalPort 1.3.6.1.2.1.7.5.1.2</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<h4>SNMP Group</h4>
<div>
<div id="highlighter_900049">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
<div>07</div>
<div>08</div>
<div>09</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>
<div>25</div>
<div>26</div>
<div>27</div>
<div>28</div>
<div>29</div>
<div>30</div>
</td>
<td>
<div>
<div><code>snmpInPkts 1.3.6.1.2.1.11.1</code></div>
<div><code>snmpOutPkts 1.3.6.1.2.1.11.2</code></div>
<div><code>snmpInBadVersions 1.3.6.1.2.1.11.3</code></div>
<div><code>snmpInBadCommunityNames 1.3.6.1.2.1.11.4</code></div>
<div><code>snmpInBadCommunityUses 1.3.6.1.2.1.11.5</code></div>
<div><code>snmpInASNParseErrs 1.3.6.1.2.1.11.6</code></div>
<div><code>NOT USED 1.3.6.1.2.1.11.7</code></div>
<div><code>snmpInTooBigs 1.3.6.1.2.1.11.8</code></div>
<div><code>snmpInNoSuchNames 1.3.6.1.2.1.11.9</code></div>
<div><code>snmpInBadValues 1.3.6.1.2.1.11.10</code></div>
<div><code>snmpInReadOnlys 1.3.6.1.2.1.11.11</code></div>
<div><code>snmpInGenErrs 1.3.6.1.2.1.11.12</code></div>
<div><code>snmpInTotalReqVars 1.3.6.1.2.1.11.13</code></div>
<div><code>snmpInTotalSetVars 1.3.6.1.2.1.11.14</code></div>
<div><code>snmpInGetRequests 1.3.6.1.2.1.11.15</code></div>
<div><code>snmpInGetNexts 1.3.6.1.2.1.11.16</code></div>
<div><code>snmpInSetRequests 1.3.6.1.2.1.11.17</code></div>
<div><code>snmpInGetResponses 1.3.6.1.2.1.11.18</code></div>
<div><code>snmpInTraps 1.3.6.1.2.1.11.19</code></div>
<div><code>snmpOutTooBigs 1.3.6.1.2.1.11.20</code></div>
<div><code>snmpOutNoSuchNames 1.3.6.1.2.1.11.21</code></div>
<div><code>snmpOutBadValues 1.3.6.1.2.1.11.22</code></div>
<div><code>NOT USED 1.3.6.1.2.1.11.23</code></div>
<div><code>snmpOutGenErrs 1.3.6.1.2.1.11.24</code></div>
<div><code>snmpOutGetRequests 1.3.6.1.2.1.11.25</code></div>
<div><code>snmpOutGetNexts 1.3.6.1.2.1.11.26</code></div>
<div><code>snmpOutSetRequests 1.3.6.1.2.1.11.27</code></div>
<div><code>snmpOutGetResponses 1.3.6.1.2.1.11.28</code></div>
<div><code>snmpOutTraps 1.3.6.1.2.1.11.29</code></div>
<div><code>snmpEnableAuthenTraps 1.3.6.1.2.1.11.30</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>&nbsp;</p>
<p>mib值和OID的转换</p>
<p>#mib2c IF-MIB::ifInOctets.1</p>
<p>网络流量</p>
<p>32-bit v1 counters<br />
.1.3.6.1.2.1.2.2.1.10 ifInOctets<br />
.1.3.6.1.2.1.2.2.1.16 ifOutOctets</p>
<p>64-bit v2c counters<br />
.1.3.6.1.2.1.31.1.1.1.6 ifHCInOctets<br />
.1.3.6.1.2.1.31.1.1.1.10 ifHCOutOctets</p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1369</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>每周一推 2011-12-18</title>
		<link>http://www.54sa.net/?p=1368</link>
		<comments>http://www.54sa.net/?p=1368#comments</comments>
		<pubDate>Sun, 18 Dec 2011 10:25:00 +0000</pubDate>
		<dc:creator>Jian</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54sa.net/?p=1368</guid>
		<description><![CDATA[Test # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>Test <a href="http://twitter.com/xxcn/statuses/148305939727003648" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.54sa.net/?feed=rss2&#038;p=1368</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

