<?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>My Crusade &#187; Linux</title>
	<atom:link href="http://www.jarodwang.cn/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jarodwang.cn</link>
	<description>For the future we believe in.</description>
	<lastBuildDate>Thu, 26 Nov 2009 12:29:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gentoo Linux Installation 3</title>
		<link>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/</link>
		<comments>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 14:14:15 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=299</guid>
		<description><![CDATA[自从上次之后，有大半年没有折腾 Gentoo 了，这个周末又研究了一下，在此小结一下。
1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单，等机器从 Linux 系统或者 LiveCD 启动之后，挂载相应的硬盘分区到 /mnt/gentoo， chroot 过去，接着就可以按照官方的安装文档走下去了。
2. 之前我都是 emerge gnome 的，但是感觉装了很多不想要的软件，比如 evolution 这家伙（我平时都用的是 thunderbird），所以这次安装我选择了 emerge gnome-light，大概可以少安装 100 多个包。至于 KDE 嘛，我还是不敢造次，看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍，太耗费时间了。
3. 一定要在 emerge 桌面系统之前，先 emerge &#8211;sync &#38;&#38; emerge -avuDN world 一次，不然在安装桌面系统的过程之中会遇到一些被阻挡的包。
4. 每次 emerge world 之后记得要 revdep-rebuild 一下。
5. 在遇到和 Python [...]]]></description>
			<content:encoded><![CDATA[<p>自从上次之后，有大半年没有折腾 Gentoo 了，这个周末又研究了一下，在此小结一下。</p>
<p>1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单，等机器从 Linux 系统或者 LiveCD 启动之后，挂载相应的硬盘分区到 /mnt/gentoo， chroot 过去，接着就可以按照官方的安装文档走下去了。</p>
<p>2. 之前我都是 emerge gnome 的，但是感觉装了很多不想要的软件，比如 evolution 这家伙（我平时都用的是 thunderbird），所以这次安装我选择了 emerge gnome-light，大概可以少安装 100 多个包。至于 KDE 嘛，我还是不敢造次，看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍，太耗费时间了。</p>
<p>3. 一定要在 emerge 桌面系统之前，先 emerge &#8211;sync &amp;&amp; emerge -avuDN world 一次，不然在安装桌面系统的过程之中会遇到一些被阻挡的包。</p>
<p>4. 每次 emerge world 之后记得要 revdep-rebuild 一下。</p>
<p>5. 在遇到和 Python 有关的包的问题时（比如我在 emerge gnome-light 的过程中遇到了 pycairo 的错误），可以试试先运行一下 python-updater，问题可能就此解决了。</p>
<p>6. 这次用了最新的 stage3 和 portage 快照，但在 emerge vnc 的时候遭遇了 <a href="http://bugs.gentoo.org/show_bug.cgi?id=273087" target="_blank">Gentoo Bug 273087</a>，最后只得改用了 tightvnc 提供的 vncserver （需要设置 USE 标记 server）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning IPMI</title>
		<link>http://www.jarodwang.cn/2009/01/19/learning-ipmi/</link>
		<comments>http://www.jarodwang.cn/2009/01/19/learning-ipmi/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 12:47:07 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[IPMI]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/2009/01/19/learning-ipmi/</guid>
		<description><![CDATA[IPMI 是 Intelligent Platform Management Interface （智能平台管理接口）的缩写。
IPMI 规格说明定义了一组可以被系统管理员用来监测和管理计算机系统的通用接口。
IPMI 独立运作于操作系统之外，并且允许管理员在没有操作系统或者系统管理软件存在的情况下远程管理计算机系统，甚至在系统关机的状态下也可以（但是系统需要接上电源）。
参考链接：
http://en.wikipedia.org/wiki/IPMI
http://en.wikipedia.org/wiki/Baseboard_Management_Controller
http://www.intel.com/design/servers/ipmi/
http://sourceforge.net/projects/openipmi/
http://sourceforge.net/projects/ipmitool/
http://sourceforge.net/projects/ipmiutil/
]]></description>
			<content:encoded><![CDATA[<p>IPMI 是 Intelligent Platform Management Interface （智能平台管理接口）的缩写。<br />
IPMI 规格说明定义了一组可以被系统管理员用来监测和管理计算机系统的通用接口。<br />
IPMI 独立运作于操作系统之外，并且允许管理员在没有操作系统或者系统管理软件存在的情况下远程管理计算机系统，甚至在系统关机的状态下也可以（但是系统需要接上电源）。</p>
<p>参考链接：<br />
<a href="http://en.wikipedia.org/wiki/IPMI">http://en.wikipedia.org/wiki/IPMI</a><br />
<a href="http://en.wikipedia.org/wiki/Baseboard_Management_Controller">http://en.wikipedia.org/wiki/Baseboard_Management_Controller</a><br />
<a href="http://www.intel.com/design/servers/ipmi/">http://www.intel.com/design/servers/ipmi/</a><br />
<a href="http://sourceforge.net/projects/openipmi/">http://sourceforge.net/projects/openipmi/</a><br />
<a href="http://sourceforge.net/projects/ipmitool/">http://sourceforge.net/projects/ipmitool/</a><br />
<a href="http://sourceforge.net/projects/ipmiutil/">http://sourceforge.net/projects/ipmiutil/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/01/19/learning-ipmi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gentoo Linux installation 2</title>
		<link>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/</link>
		<comments>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 14:46:11 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/</guid>
		<description><![CDATA[昨天由于晚上临时加班，没有来得及安装 GNOME，但也不是没有折腾 Gentoo，而是参照 LinuxSir 论坛中的安装 Gentoo 疑难解答先升级了一次基本系统：
emerge &#8211;sync
emerge -avuDN world
man emerge 可以看到 &#8211;sync 选项用来启动一次 Portage 树的更新，而更新所使用的 rsync.gentoo.org 镜像是之前安装过程中使用 mirrorselect 来进行选择和设定的。另外，这里还涉及到了为 rsync 设置代理的问题，man rsync 会告诉你设置 RSYNC_PROXY 环境变量即可，每次都 export 会比较麻烦，于是我就把它加到了 /etc/make.conf 中。
剩下的 -a, -v, -u, -D 和 -N 选项的具体意义看看 man emerge 也都一目了然了。最后的 world 是 2 大软件包集合之一，另一个是 system。
今天早上，什么文档都还没有看，就先直接依葫芦画瓢的来了个 emerge -avuDN gnome （事实证明这样是会出问题的），开始 GNOME 安装的漫漫长路，260+ 的包需要全新安装。
结果第一个问题出现了，在安装 gtk+ 时报错了，错误信息告诉我是因为 cairo [...]]]></description>
			<content:encoded><![CDATA[<p>昨天由于晚上临时加班，没有来得及安装 GNOME，但也不是没有折腾 Gentoo，而是参照 LinuxSir 论坛中的<a href="http://www.linuxsir.org/bbs/thread320006.html" target="_blank">安装 Gentoo 疑难解答</a>先升级了一次基本系统：</p>
<p>emerge &#8211;sync<br />
emerge -avuDN world</p>
<p>man emerge 可以看到 &#8211;sync 选项用来启动一次 Portage 树的更新，而更新所使用的 rsync.gentoo.org 镜像是之前安装过程中使用 mirrorselect 来进行选择和设定的。另外，这里还涉及到了为 rsync 设置代理的问题，man rsync 会告诉你设置 RSYNC_PROXY 环境变量即可，每次都 export 会比较麻烦，于是我就把它加到了 /etc/make.conf 中。</p>
<p>剩下的 -a, -v, -u, -D 和 -N 选项的具体意义看看 man emerge 也都一目了然了。最后的 world 是 2 大软件包集合之一，另一个是 system。</p>
<p>今天早上，什么文档都还没有看，就先直接依葫芦画瓢的来了个 emerge -avuDN gnome （事实证明这样是会出问题的），开始 GNOME 安装的漫漫长路，260+ 的包需要全新安装。</p>
<p>结果第一个问题出现了，在安装 gtk+ 时报错了，错误信息告诉我是因为 <a href="http://cairographics.org/" target="_blank">cairo</a> 需要在 USE 标记中设置 X 标记，把 X 加到 /etc/make.conf 的 USE 中去，然后再次 emerge -avuDN gnome 就过去了。</p>
<p>后来又遇到一个错误，又需要添加了 gtk 到 USE 中，看来这样下去不是办法，只好求助于 Google，结果就搜到了 <a href="http://www.gentoo.org/doc/zh_cn/gnome-config.xml" target="_blank">GNOME 配置指南</a>这篇官方的中文文档，终于有了个 USE 的范例：</p>
<p>USE=&#8221;-qt3 -qt4 -arts -kde X dbus gtk gnome hal <span style="color: #ff0000;">avahi</span>&#8221;</p>
<p>只是其中的 avahi 在后来安装 cups 时又遇到了问题，被我拿掉了，其它都保留了下来。</p>
<p>后面的步骤就完全照着这篇文档来了，就此搞定了 GNOME 的安装。</p>
<p>值得一提的是文档中为 gnome-base/gnome-session 这个包单独设置 branding 标记的方法：</p>
<p>echo &#8220;gnome-base/gnome-session branding&#8221; &gt;&gt; /etc/portage/package.use</p>
<p>在后来安装 net-misc/vnc 时又被我依葫芦画瓢了一次：</p>
<p>echo &#8220;net-misc/vnc server&#8221; &gt;&gt; /etc/portage/package.use</p>
<p>只有设置了 server 标记，vncserver 才会被包括在安装中，否则默认情况下 emerge vnc 只会生成 vncviewer。</p>
<p>最后，详细的中文 Portage 入门可以看<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=1" target="_blank">这里</a>，中文 USE 标记使用可以看<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=2" target="_blank">这里</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo Linux installation 1</title>
		<link>http://www.jarodwang.cn/2009/01/07/gentoo-linux-installation-1/</link>
		<comments>http://www.jarodwang.cn/2009/01/07/gentoo-linux-installation-1/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 12:58:18 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/2009/01/07/gentoo-linux-installation-1/</guid>
		<description><![CDATA[昨天第一次尝试安装 Gentoo Linux 失败了，用的是其最新发布的 Gentoo 2008.0 LiveCD。用 LiveCD 启动电脑，进入 GUI 环境，用 Gentoo Linux Installer (GLI) 进行安装，貌似遇到了 Gentoo Bug 231037，install.log.failed 中的报错信息和 Bug 中的相同。失败的安装还弄乱了硬盘上的分区编号，原本挂载 Debian 根分区的 /dev/sda7 莫名变成了 /dev/sda5，导致从硬盘重启后遇到 GRUB Error 17，之后在 GRUB 菜单中手工修改了 root 和 kernel 的值，指向 /dev/sda5 才后再 boot，成功进入 Debian。最后还要记得进入系统之后编辑 /boot/grub/menu.lst 中对应的行。安装 Gentoo 失败之后向 Gentoo 中文发邮件求助，r0bertz 回复说 GLI 不是推荐的安装方法，应当按照手册用 stage3 一步一步地进行安装。
不甘心失败，今天继续实验。有了昨天的经验，今天的我至少已经不怕无法启动昨晚刚刚升级到 lenny 的 Debian 了。找到另外一个 [...]]]></description>
			<content:encoded><![CDATA[<p>昨天第一次尝试安装 <a href="http://www.gentoo.org/">Gentoo Linux</a> 失败了，用的是其最新发布的 <a href="http://bouncer.gentoo.org/fetch/gentoo-2008.0-livecd/x86/">Gentoo 2008.0 LiveCD</a>。用 LiveCD 启动电脑，进入 GUI 环境，用 Gentoo Linux Installer (GLI) 进行安装，貌似遇到了 <a href="http://bugs.gentoo.org/show_bug.cgi?id=231037">Gentoo Bug 231037</a>，install.log.failed 中的报错信息和 Bug 中的相同。失败的安装还弄乱了硬盘上的分区编号，原本挂载 <a href="http://www.debian.org/">Debian</a> 根分区的 /dev/sda7 莫名变成了 /dev/sda5，导致从硬盘重启后遇到 <a href="http://www.gnu.org/software/grub/manual/grub.html#Stage2-errors">GRUB Error 17</a>，之后在 GRUB 菜单中手工修改了 root 和 kernel 的值，指向 /dev/sda5 才后再 boot，成功进入 Debian。最后还要记得进入系统之后编辑 /boot/grub/menu.lst 中对应的行。安装 Gentoo 失败之后向 <a href="http://groups.google.com/group/gentoo-china">Gentoo 中文</a>发邮件求助，<a href="http://r0bertz.blogspot.com/">r0bertz</a> 回复说 GLI 不是推荐的安装方法，应当按照<a href="http://www.gentoo.org/doc/zh_cn/handbook/index.xml">手册</a>用 stage3 一步一步地进行安装。</p>
<p>不甘心失败，今天继续实验。有了昨天的经验，今天的我至少已经不怕无法启动昨晚刚刚升级到 <a href="http://www.debian.org/releases/lenny/">lenny</a> 的 Debian 了。找到另外一个 <a href="http://www.gentoo.org/doc/zh_cn/gentoo-x86-quickinstall.xml">Gentoo Linux x86 快速安装指南</a>和 <a href="http://www.chinaunix.net/jh/4/514650.html">CU 上的一篇 Gentoo 安装精华贴</a>之后，开始动手。</p>
<p>还是用昨天的 LiveCD 启动电脑，用 gentoo 来启动之后，这次不进 GUI 界面了，直接 Ctrl + Alt + F1 进入终端模式。</p>
<p>net-setup 也不用了，LiveCD 已经帮我搞定（可用 /sbin/ifconfig -a 进行验证）。</p>
<p>fdisk -l /dev/sda 找到了昨天本来建好给 Gentoo 用的 /dev/sda7 (swap) 和 /dev/sda8 (/)。</p>
<p>mke2fs -j /dev/sda8<br />
mkswap /dev/sda7<br />
swapon /dev/sda7</p>
<p>挂载文件系统：</p>
<p>mount /dev/sda8 /mnt/gentoo<br />
mkdir /mnt/gentoo/boot<br />
cd /mnt/gentoo</p>
<p>从镜像站点下载 stage3 的压缩包并解开：</p>
<p>export http_proxy=你的代理服务器地址:端口<br />
wget -c http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/x86/current/stages/stage3-i686-2008.0.tar.bz2<br />
tar xjf stage3-i686-2008.0.tar.bz2</p>
<p>下载最新的 Portage 快照的压缩包并解开：</p>
<p>wget -c http://ftp.jaist.ac.jp/pub/Linux/Gentoo/snapshots/portage-latest.tar.bz2<br />
tar xjf portage-latest.tar.bz2</p>
<p>后面完全按照手册，直到安装完引导程序 GRUB 之后。由于手册中的 grub.conf (menu.lst) 文件内容非常简单，只考虑了启动刚刚安装的 Gentoo，还需要手工加上我的 Debian：</p>
<p>title Debian GNU/Linux 5.0 Lenny<br />
root (hd0,4)<br />
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda5 ro<br />
initrd /boot/initrd.img-2.6.26-1-686</p>
<p>之后就可用退出 chroot 环境，卸载所有文件系统并重启电脑了：</p>
<p>umount /mnt/gentoo/proc /mnt/gentoo<br />
reboot</p>
<p>回来之后就有一个基本的 Gentoo Linux 可用了，总共花去了大概 2 个小时，这时候 GNOME 还没装呢，明天再继续折腾。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/01/07/gentoo-linux-installation-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A sample program for stat()</title>
		<link>http://www.jarodwang.cn/2008/12/11/a-sample-program-for-stat/</link>
		<comments>http://www.jarodwang.cn/2008/12/11/a-sample-program-for-stat/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 15:23:09 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[stat]]></category>
		<category><![CDATA[strace]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=180</guid>
		<description><![CDATA[stat() is a Unix system call that returns useful data about a file inode.
今天在看一个 strace 的输出时，看到下面的一行：
19:42:00.545797 stat64(&#8221;/cdctest/orahome&#8221;, {st_mode=S_IFDIR&#124;0755, st_size=8192, &#8230;}) = 0
Google 之后发现 stat64 背后就是 stat() 系统调用，这里有详细的介绍。
于是一时手痒，想自己写一个简单的程序来实验一下，就在自己的 PC 机（跑的是 Debian &#8220;etch&#8221; 4.0r5）上动手。
首先是搭建编译环境：
# apt-get install gcc build-essential
然后coding如下：

?Download test_stat.c1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include &#60;stdio.h&#62;
#include &#60;stdlib.h&#62;
#include &#60;string.h&#62;
#include &#60;errno.h&#62;
#include &#60;sys/stat.h&#62;
&#160;
int main&#40;&#41;
&#123;
	struct stat *buf;
	const char *path = &#34;/home/ftp/upload&#34;;
&#160;
	buf = &#40;struct stat *&#41; malloc&#40;sizeof&#40;struct stat&#41;&#41;;
	memset&#40;buf, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a title="stat()" href="http://en.wikipedia.org/wiki/Stat_(Unix)" target="_blank">stat()</a> is a Unix system call that returns useful data about a file inode.</p></blockquote>
<p>今天在看一个 strace 的输出时，看到下面的一行：</p>
<p>19:42:00.545797 stat64(&#8221;/cdctest/orahome&#8221;, {st_mode=S_IFDIR|0755, st_size=8192, &#8230;}) = 0</p>
<p>Google 之后发现 stat64 背后就是 stat() 系统调用，<a title="这里" href="http://linux.die.net/man/2/stat64" target="_blank">这里</a>有详细的介绍。</p>
<p>于是一时手痒，想自己写一个简单的程序来实验一下，就在自己的 PC 机（跑的是 Debian &#8220;etch&#8221; 4.0r5）上动手。</p>
<p>首先是搭建编译环境：</p>
<p># apt-get install gcc build-essential</p>
<p>然后coding如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.jarodwang.cn/wordpress/wp-content/plugins/wp-codebox/wp-codebox.php?p=180&amp;download=test_stat.c">test_stat.c</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p1802"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</pre></td><td class="code" id="p180code2"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;errno.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/stat.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">struct</span> stat <span style="color: #339933;">*</span>buf<span style="color: #339933;">;</span>
	<span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>path <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;/home/ftp/upload&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	buf <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> stat <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> malloc<span style="color: #009900;">&#40;</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> stat<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	memset<span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> stat<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #993333;">int</span> ret<span style="color: #339933;">;</span> 
&nbsp;
	ret <span style="color: #339933;">=</span> stat<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;/home/ftp/upload&quot;</span><span style="color: #339933;">,</span> buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">==</span> EACCES<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;EACCES<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		free<span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		buf <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>EACCES<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> buf<span style="color: #339933;">-&gt;</span>st_mode<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>S_ISDIR<span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">-&gt;</span>st_mode<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s is a diretory.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> path<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s is NOT a directory.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> path<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	free<span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	buf<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>编译生成可执行文件</p>
<p>jarod@zhenwan:~$ gcc -o test_stat test_stat.c</p>
<p>运行之：</p>
<p>jarod@zhenwan:~$ ./test_stat<br />
16895<br />
/home/ftp/upload is a diretory.</p>
<p>大功告成。</p>
<p>最后还可以自己 strace 一把：</p>
<p><span id="more-180"></span></p>
<p>jarod@zhenwan:~$ strace ./test_stat<br />
execve(&#8221;./test_stat&#8221;, ["./test_stat"], [/* 27 vars */]) = 0<br />
uname({sys=&#8221;Linux&#8221;, node=&#8221;zhenwan&#8221;, &#8230;}) = 0<br />
brk(0)                                  = 0&#215;804a000<br />
access(&#8221;/etc/ld.so.nohwcap&#8221;, F_OK)      = -1 ENOENT (No such file or directory)<br />
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee9000<br />
access(&#8221;/etc/ld.so.preload&#8221;, R_OK)      = -1 ENOENT (No such file or directory)<br />
open(&#8221;/etc/ld.so.cache&#8221;, O_RDONLY)      = 3<br />
fstat64(3, {st_mode=S_IFREG|0644, st_size=45513, &#8230;}) = 0<br />
mmap2(NULL, 45513, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7edd000<br />
close(3)                                = 0<br />
access(&#8221;/etc/ld.so.nohwcap&#8221;, F_OK)      = -1 ENOENT (No such file or directory)<br />
open(&#8221;/lib/tls/i686/cmov/libc.so.6&#8243;, O_RDONLY) = 3<br />
read(3, &#8220;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1&#8243;&#8230;, 512) = 512<br />
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, &#8230;}) = 0<br />
mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dac000<br />
mmap2(0xb7ed3000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0&#215;127) = 0xb7ed3000<br />
mmap2(0xb7eda000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eda000<br />
close(3)                                = 0<br />
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dab000<br />
mprotect(0xb7ed3000, 20480, PROT_READ)  = 0<br />
set_thread_area({entry_number:-1 -&gt; 6, base_addr:0xb7dab8e0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0<br />
munmap(0xb7edd000, 45513)               = 0<br />
brk(0)                                  = 0&#215;804a000<br />
brk(0&#215;806b000)                          = 0&#215;806b000<br />
<span style="color: #ff0000;">stat64(&#8221;/home/ftp/upload&#8221;, {st_mode=S_IFDIR|0777, st_size=4096, &#8230;}) = 0</span><br />
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 5), &#8230;}) = 0<br />
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee8000<br />
write(1, &#8220;16895\n&#8221;, 616895<br />
)                  = 6<br />
write(1, &#8220;/home/ftp/upload is a diretory.\n&#8221;, 32/home/ftp/upload is a diretory.<br />
) = 32<br />
munmap(0xb7ee8000, 4096)                = 0<br />
exit_group(0)                           = ?<br />
Process 32729 detached<br />
jarod@zhenwan:~$</p>
<p>可以看出来其中<span style="color: #ff0000;">红色</span>的一行即是由程序中的 stat() 系统调用所产生。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/12/11/a-sample-program-for-stat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Linux toolkit</title>
		<link>http://www.jarodwang.cn/2008/11/29/my-linux-toolkit/</link>
		<comments>http://www.jarodwang.cn/2008/11/29/my-linux-toolkit/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 05:01:34 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=156</guid>
		<description><![CDATA[alias
ar
cat
cp -p
diff
egrep
fvwm
ftp
gdb
ifconfig
ksh
make
man
mutt
nano
Perl
rsh
ssh
strace
svn
tail -f
tar
top
vim
VNC
vsftp
wget
xterm
]]></description>
			<content:encoded><![CDATA[<p>alias</p>
<p>ar</p>
<p>cat</p>
<p>cp -p</p>
<p>diff</p>
<p>egrep</p>
<p>fvwm</p>
<p>ftp</p>
<p>gdb</p>
<p>ifconfig</p>
<p>ksh</p>
<p>make</p>
<p>man</p>
<p>mutt</p>
<p>nano</p>
<p>Perl</p>
<p>rsh</p>
<p>ssh</p>
<p>strace</p>
<p>svn</p>
<p>tail -f</p>
<p>tar</p>
<p>top</p>
<p>vim</p>
<p>VNC</p>
<p>vsftp</p>
<p>wget</p>
<p>xterm</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/11/29/my-linux-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A glance of core dump</title>
		<link>http://www.jarodwang.cn/2008/09/20/a-glance-of-core-dump/</link>
		<comments>http://www.jarodwang.cn/2008/09/20/a-glance-of-core-dump/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 03:11:27 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=95</guid>
		<description><![CDATA[在平时的测试工作中经常碰到程序产生core dump的情况，什么是core dump？下面是摘自Wikipedia的core dump的定义：
A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally. In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and [...]]]></description>
			<content:encoded><![CDATA[<p>在平时的测试工作中经常碰到程序产生core dump的情况，什么是core dump？下面是摘自<a title="Wikipedia" href="http://www.wikipedia.org/" target="_blank">Wikipedia</a>的core dump的定义：</p>
<p>A <strong>core dump</strong> is the recorded state of the working <span class="mw-redirect">memory</span> of a computer program at a specific time, generally when the program has terminated abnormally. In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and stack pointer, memory management information, and other processor and operating system flags and information. The name comes from the once-standard <span class="mw-redirect">core memory</span> technology. Core dumps are often used to diagnose or <span class="mw-redirect">debug</span> errors in computer programs.</p>
<p>简单来说，core dump是在程序异常终止的时候对其所使用的内存内容和程序状态的一个记录。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/09/20/a-glance-of-core-dump/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OCFS2 Installation</title>
		<link>http://www.jarodwang.cn/2008/09/07/ocfs2-installation/</link>
		<comments>http://www.jarodwang.cn/2008/09/07/ocfs2-installation/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 14:16:39 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAC]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[OCFS2]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=83</guid>
		<description><![CDATA[OCFS2 (Oracle Cluster File System 2)是由Oracle开发的通用集群文件系统，是一个以GPLv2许可发布的开放源代码项目。由于OCFS2是Cluster-aware的，所以很自然的可以作为RAC的存储的选择之一（其他的选择还有裸设备和ASM）。但是必须指出的是，Oracle home和datafile（还有redo log，archive log，control file，以及Clusterware的OCR和Voting Disks）不能放在同一个OCFS2 volume上。
最近尝试了一下将Oracle Clusterware 11gR1的OCR和VD放在OCFS2上，这里记录一下OCFS2的安装过程。
首先是确定所使用的Linux的发行版本（distribution），内核版本（version）和风格（flavor），处理器架构：
# cat /etc/redhat-release
Enterprise Linux Enterprise Linux AS release 4 (October Update 5)
# uname -r
2.6.9-67.0.4.0.2.ELsmp
# uname -p
i686
可以看到这里我使用的是Oracle Enterprise Linux 4u5（可以认为是等同于Red Hat Enterprise Linux 4u5），内核版本是2.6.9-67.0.4.0.2，内核风格是smp，处理器架构是i686（也就是x86）。
接下来按照上面的信息去下载相应的OCFS2和OCFS2 Tools（包括ocfs2-tools和ocfs2console）的RPM包。
# wget -c http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL4/i386/1.2.9-1/2.6.9-67.0.4.EL/ocfs2-2.6.9-67.0.4.ELsmp-1.2.9-1.el4.i686.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2-tools-1.2.7-1.el4.i386.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2console-1.2.7-1.el4.i386.rpm
删除掉现有的老版本的OCFS2相关RPM包：
# rpm -qa &#124; grep ocfs &#124; xargs rpm -e
依次安装刚刚下载的3个RPM：
# [...]]]></description>
			<content:encoded><![CDATA[<p><a title="OCFS2" href="http://oss.oracle.com/projects/ocfs2/" target="_blank">OCFS2</a> (Oracle Cluster File System 2)是由Oracle开发的通用集群文件系统，是一个以GPLv2许可发布的开放源代码项目。由于OCFS2是Cluster-aware的，所以很自然的可以作为RAC的存储的选择之一（其他的选择还有裸设备和ASM）。但是必须指出的是，Oracle home和datafile（还有redo log，archive log，control file，以及Clusterware的OCR和Voting Disks）<strong>不能</strong>放在同一个OCFS2 volume上。</p>
<p>最近尝试了一下将<a title="Oracle Clusterware" href="http://www.oracle.com/technology/products/database/clusterware/index.html" target="_blank">Oracle Clusterware</a> 11gR1的OCR和VD放在OCFS2上，这里记录一下OCFS2的安装过程。</p>
<p>首先是确定所使用的Linux的发行版本（distribution），内核版本（version）和风格（flavor），处理器架构：</p>
<p># cat /etc/redhat-release<br />
Enterprise Linux Enterprise Linux AS release 4 (October Update 5)</p>
<p># uname -r<br />
2.6.9-67.0.4.0.2.ELsmp</p>
<p># uname -p<br />
i686</p>
<p>可以看到这里我使用的是<a title="Oracle Enterprise Linux" href="http://www.oracle.com/technologies/linux/index.html" target="_blank">Oracle Enterprise Linux</a> 4u5（可以认为是等同于Red Hat Enterprise Linux 4u5），内核版本是2.6.9-67.0.4.0.2，内核风格是smp，处理器架构是i686（也就是x86）。</p>
<p>接下来按照上面的信息去下载相应的OCFS2和<a title="OCFS2 Tools" href="http://oss.oracle.com/projects/ocfs2-tools/" target="_blank">OCFS2 Tools</a>（包括ocfs2-tools和ocfs2console）的RPM包。</p>
<pre># wget -c http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL4/i386/1.2.9-1/2.6.9-67.0.4.EL/ocfs2-2.6.9-67.0.4.ELsmp-1.2.9-1.el4.i686.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2-tools-1.2.7-1.el4.i386.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2console-1.2.7-1.el4.i386.rpm</pre>
<p>删除掉现有的老版本的OCFS2相关RPM包：</p>
<pre># rpm -qa | grep ocfs | xargs rpm -e</pre>
<p>依次安装刚刚下载的3个RPM：</p>
<pre># rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
# rpm -ivh ocfs2console-1.2.7-1.el4.i386.rpm
# rpm -ivh --nodeps ocfs2-2.6.9-67.0.4.ELsmp-1.2.9-1.el4.i686.rpm</pre>
<p>注意安装OCFS2 RPM时需要加上“&#8211;nodeps”选项。</p>
<p>这里还有一个问题，上面安装的OCFS2 RPM的内核版本（2.6.9-67.0.4）与我所使用的Linux的内核版本（2.6.9-67.0.4.0.2）并不完全一致，所以还需要进行下面的额外工作：</p>
<pre># cp -r /lib/modules/2.6.9-67.0.4.ELsmp/kernel/fs/* /lib/modules/2.6.9-67.0.4.0.2.ELsmp/kernel/fs</pre>
<p>至此，OCFS2的安装已经完成。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/09/07/ocfs2-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux raw device</title>
		<link>http://www.jarodwang.cn/2008/08/10/linux-raw-device/</link>
		<comments>http://www.jarodwang.cn/2008/08/10/linux-raw-device/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 10:21:45 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[raw device]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=81</guid>
		<description><![CDATA[使用
raw -qa
命令来查询当前已经存在的绑定。
Use  the /etc/sysconfig/rawdevices file to define the set of raw device mappings automatically created during the system startup sequence.
在/etc/sysconfig/rawdevices中，注意裸设备对应的块设备如果是SATA或者iSCSI，则应该使用/dev/disk/by-id中的链接来进行指定。
如何确定裸设备对应的块设备？以裸设备/dev/raw/raw57为例：
# ls -l /dev/raw/raw57
crw-rw&#8212;-  1 root disk 162, 57 Jul 31 02:02 /dev/raw/raw57
# raw -qa &#124; grep raw57
/dev/raw/raw57: bound to major 65, minor 233
# ls -l /dev &#124; grep 65 &#124; grep 233
brwxrwxrwx  1 root    disk    [...]]]></description>
			<content:encoded><![CDATA[<p>使用</p>
<p>raw -qa</p>
<p>命令来查询当前已经存在的绑定。</p>
<p>Use  the <strong>/etc/sysconfig/rawdevices</strong> file to define the set of raw device mappings automatically created during the system startup sequence.</p>
<p>在/etc/sysconfig/rawdevices中，注意裸设备对应的块设备如果是SATA或者iSCSI，则应该使用/dev/disk/by-id中的链接来进行指定。</p>
<p>如何确定裸设备对应的块设备？以裸设备/dev/raw/raw57为例：</p>
<p># ls -l /dev/raw/raw57<br />
crw-rw&#8212;-  1 root disk 162, 57 Jul 31 02:02 /dev/raw/raw57</p>
<p># raw -qa | grep raw57<br />
/dev/raw/raw57: bound to major 65, minor 233</p>
<p># ls -l /dev | grep 65 | grep 233<br />
brwxrwxrwx  1 root    disk    65, 233 Jul 31 02:01 sdae9</p>
<p>从而知道裸设备/dev/raw/raw57是绑定到了/dev/sdae9这个块设备。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/08/10/linux-raw-device/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rediscover Linux top command</title>
		<link>http://www.jarodwang.cn/2008/07/11/rediscover-linux-top-command/</link>
		<comments>http://www.jarodwang.cn/2008/07/11/rediscover-linux-top-command/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 05:38:33 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[top]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=74</guid>
		<description><![CDATA[以往我使用top命令都是不带任何开关的，直接一个top之后就任其不停地刷屏。可是最近才发现原来这个命令不简单，有不少的开关可以用，而且默认启动的时候还是一个交互式（interactive）程序，彻底服了-_-b
这里搜集了几个最近用到的开关：
-b
批处理模式，批处理模式在需要将top命令的输出发送到其他程序或者是文件时非常有用
-c
显示命令行（command line）而不只是程序名称（program name）
-d delay
屏幕刷新时间延迟
-n iterations
指定命令在退出前产生的输出的最大递归次数
-p PID [, PID...]
仅监控指定PID所对应的进程
最后是一个综合使用以上所有开关的top命令示例：
$ top -bc -d 5 -n 2 -p 8648,8752,8715
top &#8211; 22:48:27 up 16 days, 22:20,  4 users,  load average: 2.40, 2.18, 2.07
Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.6% us,  2.1% sy,  0.0% ni, 69.9% id, 25.4% wa,  0.0% hi,  0.0% si
Mem:   6227868k total,  [...]]]></description>
			<content:encoded><![CDATA[<p>以往我使用top命令都是不带任何开关的，直接一个top之后就任其不停地刷屏。可是最近才发现原来这个命令不简单，有不少的开关可以用，而且默认启动的时候还是一个交互式（interactive）程序，彻底服了-_-b</p>
<p>这里搜集了几个最近用到的开关：</p>
<p>-b</p>
<p>批处理模式，批处理模式在需要将top命令的输出发送到其他程序或者是文件时非常有用</p>
<p>-c</p>
<p>显示命令行（command line）而不只是程序名称（program name）</p>
<p>-d delay</p>
<p>屏幕刷新时间延迟</p>
<p>-n iterations</p>
<p>指定命令在退出前产生的输出的最大递归次数</p>
<p>-p PID [, PID...]</p>
<p>仅监控指定PID所对应的进程</p>
<p>最后是一个综合使用以上所有开关的top命令示例：</p>
<p>$ top -bc -d 5 -n 2 -p 8648,8752,8715<br />
top &#8211; 22:48:27 up 16 days, 22:20,  4 users,  load average: 2.40, 2.18, 2.07<br />
Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie<br />
Cpu(s):  2.6% us,  2.1% sy,  0.0% ni, 69.9% id, 25.4% wa,  0.0% hi,  0.0% si<br />
Mem:   6227868k total,  6109896k used,   117972k free,     2736k buffers<br />
Swap: 10288440k total,  1263740k used,  9024700k free,  4210252k cached</p>
<p>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND<br />
8648 cdcrac    RT   0  564m 563m  37m S  0.0  9.3  77:23.29 /oracle/cluster/crs/bin/ocssd.bin<br />
8752 root      19   0  669m  50m  12m S  0.0  0.8  10:45.79 /oracle/cluster/crs/bin/crsd.bin reboot<br />
8715 cdcrac    16   0  208m  12m 7148 S  0.0  0.2   0:33.25 /oracle/cluster/crs/bin/evmd.bin</p>
<p>top &#8211; 22:48:32 up 16 days, 22:20,  4 users,  load average: 2.60, 2.22, 2.09<br />
Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie<br />
Cpu(s):  1.9% us,  2.1% sy,  0.0% ni, 67.1% id, 28.9% wa,  0.1% hi,  0.0% si<br />
Mem:   6227868k total,  6109880k used,   117988k free,     2856k buffers<br />
Swap: 10288440k total,  1263740k used,  9024700k free,  4213512k cached</p>
<p>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND<br />
8648 cdcrac    RT   0  564m 563m  37m S  2.0  9.3  77:23.39 /oracle/cluster/crs/bin/ocssd.bin<br />
8752 root      19   0  669m  50m  12m S  0.0  0.8  10:45.79 /oracle/cluster/crs/bin/crsd.bin reboot<br />
8715 cdcrac    16   0  208m  12m 7148 S  0.0  0.2   0:33.25 /oracle/cluster/crs/bin/evmd.bin</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/07/11/rediscover-linux-top-command/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
