<?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>潘文斌个人博客 &#187; admin</title>
	<atom:link href="http://www.panwenbin.com/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.panwenbin.com</link>
	<description>记忆不行，只能记录</description>
	<lastBuildDate>Sun, 25 Jul 2010 15:08:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>wget输出重定向</title>
		<link>http://www.panwenbin.com/2010/07/25/wget%e8%be%93%e5%87%ba%e9%87%8d%e5%ae%9a%e5%90%91/</link>
		<comments>http://www.panwenbin.com/2010/07/25/wget%e8%be%93%e5%87%ba%e9%87%8d%e5%ae%9a%e5%90%91/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 15:08:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1193</guid>
		<description><![CDATA[wget 下载的内容由 -O file 来重定向 wget 下载过程提示，输出在标准错误输出，用2>/dev/null可以不显示。或者使用-o选项]]></description>
			<content:encoded><![CDATA[<p>wget 下载的内容由 -O file 来重定向<br />
wget 下载过程提示，输出在标准错误输出，用2>/dev/null可以不显示。或者使用-o选项</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/25/wget%e8%be%93%e5%87%ba%e9%87%8d%e5%ae%9a%e5%90%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>修改crontab的默认编辑器为vim</title>
		<link>http://www.panwenbin.com/2010/07/25/%e4%bf%ae%e6%94%b9crontab%e7%9a%84%e9%bb%98%e8%ae%a4%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%bavim/</link>
		<comments>http://www.panwenbin.com/2010/07/25/%e4%bf%ae%e6%94%b9crontab%e7%9a%84%e9%bb%98%e8%ae%a4%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%bavim/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 00:09:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1191</guid>
		<description><![CDATA[vi /etc/bashrc export EDITOR=vim export VISUAL=vim]]></description>
			<content:encoded><![CDATA[<p>vi /etc/bashrc</p>
<p>export EDITOR=vim<br />
export VISUAL=vim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/25/%e4%bf%ae%e6%94%b9crontab%e7%9a%84%e9%bb%98%e8%ae%a4%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%bavim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cpubenchmark</title>
		<link>http://www.panwenbin.com/2010/07/20/cpubenchmark/</link>
		<comments>http://www.panwenbin.com/2010/07/20/cpubenchmark/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 09:41:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1182</guid>
		<description><![CDATA[http://www.cpubenchmark.net/cpu_list.php]]></description>
			<content:encoded><![CDATA[<p>http://www.cpubenchmark.net/cpu_list.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/20/cpubenchmark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux 技巧：使用 screen 管理你的远程会话</title>
		<link>http://www.panwenbin.com/2010/07/19/linux-%e6%8a%80%e5%b7%a7%ef%bc%9a%e4%bd%bf%e7%94%a8-screen-%e7%ae%a1%e7%90%86%e4%bd%a0%e7%9a%84%e8%bf%9c%e7%a8%8b%e4%bc%9a%e8%af%9d/</link>
		<comments>http://www.panwenbin.com/2010/07/19/linux-%e6%8a%80%e5%b7%a7%ef%bc%9a%e4%bd%bf%e7%94%a8-screen-%e7%ae%a1%e7%90%86%e4%bd%a0%e7%9a%84%e8%bf%9c%e7%a8%8b%e4%bc%9a%e8%af%9d/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 05:17:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1180</guid>
		<description><![CDATA[2007 年 7 月 31 日 你是不是经常需要远程登录到Linux服务器？你是不是经常为一些长时间运行的任务头疼？还在用 nohup 吗？那么来看看 screen 吧，它会给你一个惊喜！ 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器？你是不是经常为一些长时间运行的任务而头疼，比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口，因为他们执行的时间太长了。必须等待它执行完毕，在此期间可不能关掉窗口或者断开连接，否则这个任务就会被杀掉，一切半途而废了。 元凶：SIGHUP 信号 让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。 在Linux/Unix中，有这样几个概念： 进程组（process group）：一个或多个进程的集合，每一个进程组有唯一一个进程组ID，即进程组长进程的ID。 会话期（session）：一个或多个进程组的集合，有唯一一个会话期首进程（session leader）。会话期ID为首进程的ID。 会话期可以有一个单独的控制终端（controlling terminal）。与控制终端连接的会话期首进程叫做控制进程（controlling process）。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。 根据POSIX.1定义： 挂断信号（SIGHUP）默认的动作是终止程序。 当终端接口检测到网络连接断开，将挂断信号发送给控制进程（会话期首进程）。 如果会话期首进程终止，则该信号发送到该会话期前台进程组。 一个进程退出导致一个孤儿进程组中产生时，如果任意一个孤儿进程组进程处于STOP状态，发送SIGHUP和SIGCONT信号到该进程组中所有进程。 因此当网络断开或终端窗口关闭后，控制进程收到SIGHUP信号退出，会导致该会话期内其他进程退出。 我们来看一个例子。打开两个SSH终端窗口，在其中一个运行top命令。 [root@tivf09 root]# top 在另一个终端窗口，找到top的进程ID为5180，其父进程ID为5128，即登录shell。 [root@tivf09 root]# ps -ef&#124;grep top root 5180 5128 0 01:03 pts/0 00:00:02 top root]]></description>
			<content:encoded><![CDATA[<p>2007 年 7 月 31 日</p>
<blockquote><p>你是不是经常需要远程登录到Linux服务器？你是不是经常为一些长时间运行的任务头疼？还在用 nohup 吗？那么来看看 screen 吧，它会给你一个惊喜！</p></blockquote>
<p>你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器？你是不是经常为一些长时间运行的任务而头疼，比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口，因为他们执行的时间太长了。必须等待它执行完毕，在此期间可不能关掉窗口或者断开连接，否则这个任务就会被杀掉，一切半途而废了。</p>
<p><a name="N10042">元凶：SIGHUP 信号</a></p>
<p>让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。</p>
<p>在Linux/Unix中，有这样几个概念：</p>
<ul>
<li>进程组（process group）：一个或多个进程的集合，每一个进程组有唯一一个进程组ID，即进程组长进程的ID。</li>
<li>会话期（session）：一个或多个进程组的集合，有唯一一个会话期首进程（session leader）。会话期ID为首进程的ID。</li>
<li>会话期可以有一个单独的控制终端（controlling terminal）。与控制终端连接的会话期首进程叫做控制进程（controlling process）。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。</li>
</ul>
<p>根据POSIX.1定义：</p>
<ul>
<li>挂断信号（SIGHUP）默认的动作是终止程序。</li>
<li>当终端接口检测到网络连接断开，将挂断信号发送给控制进程（会话期首进程）。</li>
<li>如果会话期首进程终止，则该信号发送到该会话期前台进程组。</li>
<li>一个进程退出导致一个孤儿进程组中产生时，如果任意一个孤儿进程组进程处于STOP状态，发送SIGHUP和SIGCONT信号到该进程组中所有进程。</li>
</ul>
<p>因此当网络断开或终端窗口关闭后，控制进程收到SIGHUP信号退出，会导致该会话期内其他进程退出。</p>
<p>我们来看一个例子。打开两个SSH终端窗口，在其中一个运行top命令。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf09 root]# top</pre>
</td>
</tr>
</tbody>
</table>
<p>在另一个终端窗口，找到top的进程ID为5180，其父进程ID为5128，即登录shell。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf09 root]# ps -ef|grep top
root      5180  5128  0 01:03 pts/0    00:00:02 top
root      5857  3672  0 01:12 pts/2    00:00:00 grep top</pre>
</td>
</tr>
</tbody>
</table>
<p>使用pstree命令可以更清楚地看到这个关系：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf09 root]# pstree -H 5180|grep top
|-sshd-+-sshd---bash---top</pre>
</td>
</tr>
</tbody>
</table>
<p>使用ps-xj命令可以看到，登录shell（PID 5128）和top在同一个会话期，shell为会话期首进程，所在进程组PGID为5128，top所在进程组PGID为5180，为前台进程组。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf09 root]# ps -xj|grep 5128
 5126  5128  5128  5128 pts/0     5180 S        0   0:00 -bash
 5128  5180  5180  5128 pts/0     5180 S        0   0:50 top
 3672 18095 18094  3672 pts/2    18094 S        0   0:00 grep 5128</pre>
</td>
</tr>
</tbody>
</table>
<p>关闭第一个SSH窗口，在另一个窗口中可以看到top也被杀掉了。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf09 root]# ps -ef|grep 5128
root     18699  3672  0 04:35 pts/2    00:00:00 grep 5128</pre>
</td>
</tr>
</tbody>
</table>
<p>如果我们可以忽略SIGHUP信号，关掉窗口应该就不会影响程序的运行了。nohup命令可以达到这个目的，如果程序的标准输出/标准错误是终端，nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号，还需要使用标记<strong>&amp;</strong>把它放在后台运行。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>nohup &lt;command&gt; [argument…] &amp;</pre>
</td>
</tr>
</tbody>
</table>
<p>虽然nohup很容易使用，但还是比较“简陋”的，对于简单的命令能够应付过来，对于复杂的需要人机交互的任务就麻烦了。</p>
<p>其实我们可以使用一个更为强大的实用程序screen。流行的Linux发行版（例如Red Hat Enterprise Linux 4）通常会自带screen实用程序，如果没有的话，可以从GNU screen的官方网站下载。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# rpm -qa|grep screen
xscreensaver-4.18-5.rhel4.11
screen-4.0.2-5</pre>
</td>
</tr>
</tbody>
</table>
<p><a name="N100B4">开始使用Screen</a></p>
<p>简单来说，Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念，用户可以在一个screen会话中创建多个screen窗口，在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方式：</p>
<p>1．直接在命令行键入screen命令</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# screen</pre>
</td>
</tr>
</tbody>
</table>
<p>Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序，就像在ssh窗口中那样。在该窗口中键入exit退出该窗口，如果这是该screen会话的唯一窗口，该screen会话退出，否则screen自动切换到前一个窗口。</p>
<p>2．Screen命令后跟你要执行的程序。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# screen vi test.c</pre>
</td>
</tr>
</tbody>
</table>
<p>Screen创建一个执行vi test.c的单窗口会话，退出vi将退出该窗口/会话。</p>
<p>3．以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入<code>C-a c</code>，即Ctrl键+a键，之后再按下c键，screen 在该会话内生成一个新的窗口并切换到该窗口。</p>
<p>screen还有更高级的功能。你可以不中断screen窗口中程序的运行而暂时断开（detach）screen会话，并在随后时间重新连接（attach）该会话，重新控制各窗口中运行的程序。例如，我们打开一个screen窗口编辑/tmp/abc文件：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# screen vi /tmp/abc</pre>
</td>
</tr>
</tbody>
</table>
<p>之后我们想暂时退出做点别的事情，比如出去散散步，那么在screen窗口键入<code>C-a d</code>，Screen会给出detached提示：<br />
<a name="N100EC"><strong>暂时中断会话</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/vi.jpg" alt="暂时中断会话" width="572" height="307" /></p>
<p>半个小时之后回来了，找到该screen会话：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# screen -ls
There is a screen on:
        16582.pts-1.tivf06      (Detached)
1 Socket in /tmp/screens/S-root.</pre>
</td>
</tr>
</tbody>
</table>
<p>重新连接会话：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 ~]# screen -r 16582</pre>
</td>
</tr>
</tbody>
</table>
<p>看看出现什么了，太棒了，一切都在。继续干吧。</p>
<p>你可能注意到给screen发送命令使用了特殊的键组合C-a。这是因为我们在键盘上键入的信息是直接发送给当前screen窗口，必须用其他方式向screen窗口管理器发出命令，默认情况下，screen接收以C-a开始的命令。这种命令形式在screen中叫做键绑定（key binding），C-a叫做命令字符（command character）。</p>
<p>可以通过<code>C-a ?</code>来查看所有的键绑定，常用的键绑定有：</p>
<table border="0" cellspacing="0" cellpadding="0" width="50%">
<tbody>
<tr>
<th scope="row">C-a ?</th>
<td>显示所有键绑定信息</td>
</tr>
<tr>
<th scope="row">C-a w</th>
<td>显示所有窗口列表</td>
</tr>
<tr>
<th scope="row">C-a C-a</th>
<td>切换到之前显示的窗口</td>
</tr>
<tr>
<th scope="row">C-a c</th>
<td>创建一个新的运行shell的窗口并切换到该窗口</td>
</tr>
<tr>
<th scope="row">C-a n</th>
<td>切换到下一个窗口</td>
</tr>
<tr>
<th scope="row">C-a p</th>
<td>切换到前一个窗口(与C-a n相对)</td>
</tr>
<tr>
<th scope="row">C-a 0..9</th>
<td>切换到窗口0..9</td>
</tr>
<tr>
<th scope="row">C-a a</th>
<td>发送 C-a到当前窗口</td>
</tr>
<tr>
<th scope="row">C-a d</th>
<td>暂时断开screen会话</td>
</tr>
<tr>
<th scope="row">C-a k</th>
<td>杀掉当前窗口</td>
</tr>
<tr>
<th scope="row">C-a [</th>
<td>进入拷贝/回滚模式</td>
</tr>
</tbody>
</table>
<p><a name="N101A3">Screen常用选项</a></p>
<p>使用键绑定C-a ?命令可以看到, 默认的命令字符（Command key）为C-a，转义C-a（literal ^a）的字符为a：<br />
<a name="N101AF"><strong>Screen 常用选项</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/keybindings.jpg" alt="Screen 常用选项" width="572" height="308" /></p>
<p>因为screen把C-a看作是screen命令的开始，所以如果你想要screen窗口接收到C-a字符，就要输入C-a a。Screen也允许你使用-e选项设置自己的命令字符和转义字符，其格式为：</p>
<p>-exy	 x为命令字符，y为转义命令字符的字符</p>
<p>下面命令启动的screen会话指定了命令字符为C-t，转义C-t的字符为t，通过C-t ?命令可以看到该变化。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf18 root]# screen -e^tt</pre>
</td>
</tr>
</tbody>
</table>
<p><a name="N101CC"><strong>自定义命令字符和转义字符</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/newkeybinding.jpg" alt="自定义命令字符和转义字符" width="572" height="309" /></p>
<p>其他常用的命令选项有：</p>
<table border="0" cellspacing="0" cellpadding="0" width="80%">
<tbody>
<tr>
<th scope="row">-c file</th>
<td>使用配置文件file，而不使用默认的$HOME/.screenrc</td>
</tr>
<tr>
<th scope="row">-d|-D [pid.tty.host]</th>
<td>不开启新的screen会话，而是断开其他正在运行的screen会话</td>
</tr>
<tr>
<th scope="row">-h num</th>
<td>指定历史回滚缓冲区大小为num行</td>
</tr>
<tr>
<th scope="row">-list|-ls</th>
<td>列出现有screen会话，格式为pid.tty.host</td>
</tr>
<tr>
<th scope="row">-d -m</th>
<td>启动一个开始就处于断开模式的会话</td>
</tr>
<tr>
<th scope="row">-r sessionowner/ [pid.tty.host]</th>
<td>重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要指定sessionowner，需要setuid-root权限</td>
</tr>
<tr>
<th scope="row">-S sessionname</th>
<td>创建screen会话时为会话指定一个名字</td>
</tr>
<tr>
<th scope="row">-v</th>
<td>显示screen版本信息</td>
</tr>
<tr>
<th scope="row">-wipe [match]</th>
<td>同-list，但删掉那些无法连接的会话</td>
</tr>
</tbody>
</table>
<p>下例显示当前有两个处于detached状态的screen会话，你可以使用screen -r &lt;screen_pid&gt;重新连接上：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf18 root]# screen –ls
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Detached)
2 Sockets in /root/.screen.

[root@tivf18 root]# screen –r 8736</pre>
</td>
</tr>
</tbody>
</table>
<p>如果由于某种原因其中一个会话死掉了（例如人为杀掉该会话），这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf18 root]# kill -9 8462
[root@tivf18 root]# screen -ls
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /root/.screen.

[root@tivf18 root]# screen -wipe
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Removed)
1 socket wiped out.
1 Socket in /root/.screen.

[root@tivf18 root]# screen -ls
There is a screen on:
        8736.pts-1.tivf18       (Detached)
1 Socket in /root/.screen.

[root@tivf18 root]#</pre>
</td>
</tr>
</tbody>
</table>
<p>-d –m 选项是一对很有意思的搭档。他们启动一个开始就处于断开模式的会话。你可以在随后需要的时候连接上该会话。有时候这是一个很有用的功能，比如我们可以使用它调试后台程序。该选项一个更常用的搭配是：-dmS sessionname</p>
<p>启动一个初始状态断开的screen会话：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 tianq]# screen -dmS mygdb gdb execlp_test</pre>
</td>
</tr>
</tbody>
</table>
<p>连接该会话：</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf06 tianq]# screen -r mygdb</pre>
</td>
</tr>
</tbody>
</table>
<p><a name="N10275">管理你的远程会话</a></p>
<p>先来看看如何使用screen解决SIGHUP问题，比如现在我们要ftp传输一个大文件。如果按老的办法，SSH登录到系统，直接ftp命令开始传输，之后。。如果网络速度还可以，恭喜你，不用等太长时间了；如果网络不好，老老实实等着吧，只能传输完毕再断开SSH连接了。让我们使用screen来试试。</p>
<p>SSH登录到系统，在命令行键入screen。</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>[root@tivf18 root]# screen</pre>
</td>
</tr>
</tbody>
</table>
<p>在screen shell窗口中输入ftp命令，登录，开始传输。不愿意等了？OK，在窗口中键入C-a d：<br />
<a name="N1028C"><strong>管理你的远程会话</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/ftp.jpg" alt="管理你的远程会话" width="572" height="306" /></p>
<p>然后。。退出SSH登录？随你怎样，只要别杀掉screen会话。</p>
<p>是不是很方便？更进一步，其实我们可以利用screen这种功能来管理你的远程会话，保存你所有的工作内容。你是不是每次登录到系统都要开很多窗口，然后每天都要重复打开关闭这些窗口？让screen来帮你“保存”吧，你只需要打开一个ssh窗口，创建需要的screen窗口，退出的时候C-a d“保存”你的工作，下次登录后直接screen -r &lt;screen_pid&gt;就可以了。</p>
<p>最好能给每个窗口起一个名字，这样好记些。使用C-a A给窗口起名字。使用C-a w可以看到这些窗口名字，可能名字出现的位置不同。使用putty：<br />
<a name="N102A4"><strong>putty</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/putty.jpg" alt="putty" width="572" height="318" /></p>
<p>使用telnet：<br />
<a name="N102B6"><strong>telnet</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/telnet.jpg" alt="telnet" width="572" height="383" /></p>
<p><a name="N102C5">更多Screen功能</a></p>
<p>Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多，例如设定screen选项，定制绑定键，设定screen会话自启动窗口，启用多用户模式，定制用户访问权限控制等等。如果你愿意的话，也可以自己指定screen配置文件。</p>
<p>以多用户功能为例，screen默认是以单用户模式运行的，你需要在配置文件中指定multiuser on 来打开多用户模式，通过acl*（acladd,acldel,aclchg...）命令，你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。</p>
<p>来源: http://www.ibm.com/developerworks/cn/linux/l-cn-screen/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/19/linux-%e6%8a%80%e5%b7%a7%ef%bc%9a%e4%bd%bf%e7%94%a8-screen-%e7%ae%a1%e7%90%86%e4%bd%a0%e7%9a%84%e8%bf%9c%e7%a8%8b%e4%bc%9a%e8%af%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>突然间发现一个数据库挂了，错误提示某表被marked crashed</title>
		<link>http://www.panwenbin.com/2010/07/08/%e7%aa%81%e7%84%b6%e9%97%b4%e5%8f%91%e7%8e%b0%e4%b8%80%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8c%82%e4%ba%86%ef%bc%8c%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba%e6%9f%90%e8%a1%a8%e8%a2%abmarked-crashed/</link>
		<comments>http://www.panwenbin.com/2010/07/08/%e7%aa%81%e7%84%b6%e9%97%b4%e5%8f%91%e7%8e%b0%e4%b8%80%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8c%82%e4%ba%86%ef%bc%8c%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba%e6%9f%90%e8%a1%a8%e8%a2%abmarked-crashed/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 14:03:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1166</guid>
		<description><![CDATA[突然间发现一个数据库挂了，错误提示某表被marked crashed 搜了一下怎么修复mysql 参考了下面文章 http://database.e800.com.cn/articles/2008/821/1219302249705_1.html]]></description>
			<content:encoded><![CDATA[<p>突然间发现一个数据库挂了，错误提示某表被marked crashed<br />
搜了一下怎么修复mysql</p>
<p>参考了下面文章 http://database.e800.com.cn/articles/2008/821/1219302249705_1.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/08/%e7%aa%81%e7%84%b6%e9%97%b4%e5%8f%91%e7%8e%b0%e4%b8%80%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8c%82%e4%ba%86%ef%bc%8c%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba%e6%9f%90%e8%a1%a8%e8%a2%abmarked-crashed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>凌霄电话论坛</title>
		<link>http://www.panwenbin.com/2010/07/07/%e5%87%8c%e9%9c%84%e7%94%b5%e8%af%9d%e8%ae%ba%e5%9d%9b/</link>
		<comments>http://www.panwenbin.com/2010/07/07/%e5%87%8c%e9%9c%84%e7%94%b5%e8%af%9d%e8%ae%ba%e5%9d%9b/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 12:30:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1164</guid>
		<description><![CDATA[http://www.lxvoip.com]]></description>
			<content:encoded><![CDATA[<p>http://www.lxvoip.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/07/%e5%87%8c%e9%9c%84%e7%94%b5%e8%af%9d%e8%ae%ba%e5%9d%9b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>搜 做什么事情最赚钱</title>
		<link>http://www.panwenbin.com/2010/07/07/%e6%90%9c-%e5%81%9a%e4%bb%80%e4%b9%88%e4%ba%8b%e6%83%85%e6%9c%80%e8%b5%9a%e9%92%b1/</link>
		<comments>http://www.panwenbin.com/2010/07/07/%e6%90%9c-%e5%81%9a%e4%bb%80%e4%b9%88%e4%ba%8b%e6%83%85%e6%9c%80%e8%b5%9a%e9%92%b1/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:00:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1161</guid>
		<description><![CDATA[大市场，前景行业，无非是能源、通信、金融行业。 小市场，比较有前景的，是大众所需，消费忠识度比较高的行业，比如饮食，零售、生产 无论是工作，还是创业！你需要选择自己兴趣,找准自己的优势，发现你的特长. 1：考虑你的兴趣，做你最喜欢做的，只有让工作成为乐趣。你才能更好的在这个行业发展。 2：分析你拥有经验，做你最擅长的。内行的身份，会让你在很多事情上得心应手 3：这里强调一下关系渠道，这个靠社会生活中的积累。多一个渠道等于多一个机会。往往发财靠关系。这话也不是没有道理的 我的看法和我的做法是： 1、复利挣钱。也就是本生利，利滚利。相当于把钱放高利，拿到了利就去当本。 2、复式挣钱。一个人有三头六臂，也挣不多，要做到许多人为你工作，许多条路为你挣钱，许多地方为你生钱。 3、利用别人为你挣钱，解放自己，自己人才有时间去学习如何快速挣钱。 4、会运用资本的力量。 5、会运用人脉的力量 6、会运用杆杠的力量：比如借用他人的力量，借用资本的力量……合作伙伴，共同创业…… 7、开源节流！ 8、寄生法，也就是借用大企业，也可以是合股！ 9、付出比别人更多的努力!]]></description>
			<content:encoded><![CDATA[<p>大市场，前景行业，无非是能源、通信、金融行业。<br />
小市场，比较有前景的，是大众所需，消费忠识度比较高的行业，比如饮食，零售、生产<br />
无论是工作，还是创业！你需要选择自己兴趣,找准自己的优势，发现你的特长.<br />
1：考虑你的兴趣，做你最喜欢做的，只有让工作成为乐趣。你才能更好的在这个行业发展。<br />
2：分析你拥有经验，做你最擅长的。内行的身份，会让你在很多事情上得心应手<br />
3：这里强调一下关系渠道，这个靠社会生活中的积累。多一个渠道等于多一个机会。往往发财靠关系。这话也不是没有道理的<br />
我的看法和我的做法是：<br />
1、复利挣钱。也就是本生利，利滚利。相当于把钱放高利，拿到了利就去当本。<br />
2、复式挣钱。一个人有三头六臂，也挣不多，要做到许多人为你工作，许多条路为你挣钱，许多地方为你生钱。<br />
3、利用别人为你挣钱，解放自己，自己人才有时间去学习如何快速挣钱。<br />
4、会运用资本的力量。<br />
5、会运用人脉的力量<br />
6、会运用杆杠的力量：比如借用他人的力量，借用资本的力量……合作伙伴，共同创业……<br />
7、开源节流！<br />
8、寄生法，也就是借用大企业，也可以是合股！<br />
9、付出比别人更多的努力!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/07/%e6%90%9c-%e5%81%9a%e4%bb%80%e4%b9%88%e4%ba%8b%e6%83%85%e6%9c%80%e8%b5%9a%e9%92%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用linux下的TC进行服务器流量控制</title>
		<link>http://www.panwenbin.com/2010/07/07/%e4%bd%bf%e7%94%a8linux%e4%b8%8b%e7%9a%84tc%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%b5%81%e9%87%8f%e6%8e%a7%e5%88%b6/</link>
		<comments>http://www.panwenbin.com/2010/07/07/%e4%bd%bf%e7%94%a8linux%e4%b8%8b%e7%9a%84tc%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%b5%81%e9%87%8f%e6%8e%a7%e5%88%b6/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 03:10:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1159</guid>
		<description><![CDATA[公司一台服务器，网络环境太高，那台服务器和源服务器连接下载，就跑到400M-500M，为了控制一下，所以研究了一下TC。来做流量控制.给他控制到小点，不要让这一台占了所有的网络。TC很是强大啊,很多所谓的硬件路由器，都是基于这个做的。 TC介绍 在linux中，TC有二种控制方法CBQ和HTB.HTB是设计用来替换CBQ的。它是一个层次式的过滤框架. TC包括三个基本的构成块： 队列规定qdisc（queueing discipline ）、类（class）和分类器（Classifiers） 队列(queueing discipline):用来实现控制网络的收发速度.通过队列,linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如 TCP)的前提下来平滑网络流量.需要注意的是，linux对接收队列的控制不够好，所以我们一般只用发送队列，即“控发不控收”.它封装了其他两个主要 TC组件（类和分类器）。内核如果需要通过某个网络接口发送数据包，它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后，内核会尽可能多地从qdisc里面取出数据包，把它们交给网络适配器驱动模块。 最简单的QDisc是pfifo它不对进入的数据包做任何的处理，数据包采用先入先出的方式通过队列。不过，它会保存网络接口一时无法处理的数据包。 队列规则包括FIFO（先进先出），RED（随机早期探测），SFQ（随机公平队列）和令牌桶（Token Bucket），类基队列（CBQ），CBQ 是一种超级队列，即它能够包含其它队列（甚至其它CBQ）。 class用来表示控制策略.很显然,很多时候,我们很可能要对不同的IP实行不同的流量控制策略,这时候我们就得用不同的class来表示不同的控制策略了. filter用来将用户划入到具体的控制策略中(即不同的class中).比如,现在，我们想对xxa,xxb两个IP实行不同的控制策略(A,B),这时,我们可用filter将xxa划入到控制策略A，将xxb划入到控制策略B，filter划分的标志位可用u32打标功能或IPtables的 set-mark(大多使用iptables来做标记)功能来实现。 目前，TC可以使用的过滤器有：fwmark分类器，u32分类器，基于路由的分类器和RSVP分类器（分别用于IPV6、IPV4）等；其中，fwmark分类器允许我们使用 Linux netfilter 代码选择流量，而u32分类器允许我们选择基于 ANY 头的流量 .需要注意的是，filter(过滤器)是在QDisc内部，它们不能作为主体。 数据包->iptables(在通过iptables时，iptables根据不同的ip来设置不同的mark)->TC(class)->TC(queue) 应用 假设eth0位是服务器的外网网络接口。 1)首先在eth0的qdiscA，qdiscA控制通过本机到外网的速度，因此是用来控制服务器流出速度的 #tc qdisc add dev eth1 root handle 1:htb default 1 添加 设置接口 最上层 句柄(做标记用) 标记 默认使用1的class 解释如下：无论是队列，还是class和filter都有ID之类的标志符，一般都有parent(父,上层的),注意ID具有接口本地性,不同的网络接口可以有相同的ID。对于这里因为qdisc在顶部，所以parent无，用’root’字样来标识,ID用1:来标志 ‘default 91′表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 1中.更详细的指令规则说明请参考手册. 2)然后在qdisc下建立两个class,来指定eth0控制通过本机到外网的速度 #tc class add dev eth0]]></description>
			<content:encoded><![CDATA[<p>公司一台服务器，网络环境太高，那台服务器和源服务器连接下载，就跑到400M-500M，为了控制一下，所以研究了一下TC。来做流量控制.给他控制到小点，不要让这一台占了所有的网络。TC很是强大啊,很多所谓的硬件路由器，都是基于这个做的。</p>
<p>TC介绍</p>
<p>在linux中，TC有二种控制方法CBQ和HTB.HTB是设计用来替换CBQ的。它是一个层次式的过滤框架.</p>
<p>TC包括三个基本的构成块： 队列规定qdisc（queueing discipline ）、类（class）和分类器（Classifiers）</p>
<p>队列(queueing discipline):用来实现控制网络的收发速度.通过队列,linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如 TCP)的前提下来平滑网络流量.需要注意的是，linux对接收队列的控制不够好，所以我们一般只用发送队列，即“控发不控收”.它封装了其他两个主要 TC组件（类和分类器）。内核如果需要通过某个网络接口发送数据包，它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后，内核会尽可能多地从qdisc里面取出数据包，把它们交给网络适配器驱动模块。</p>
<p>最简单的QDisc是pfifo它不对进入的数据包做任何的处理，数据包采用先入先出的方式通过队列。不过，它会保存网络接口一时无法处理的数据包。<br />
队列规则包括FIFO（先进先出），RED（随机早期探测），SFQ（随机公平队列）和令牌桶（Token Bucket），类基队列（CBQ），CBQ 是一种超级队列，即它能够包含其它队列（甚至其它CBQ）。</p>
<p>class用来表示控制策略.很显然,很多时候,我们很可能要对不同的IP实行不同的流量控制策略,这时候我们就得用不同的class来表示不同的控制策略了.</p>
<p>filter用来将用户划入到具体的控制策略中(即不同的class中).比如,现在，我们想对xxa,xxb两个IP实行不同的控制策略(A,B),这时,我们可用filter将xxa划入到控制策略A，将xxb划入到控制策略B，filter划分的标志位可用u32打标功能或IPtables的 set-mark(大多使用iptables来做标记)功能来实现。<br />
目前，TC可以使用的过滤器有：fwmark分类器，u32分类器，基于路由的分类器和RSVP分类器（分别用于IPV6、IPV4）等；其中，fwmark分类器允许我们使用 Linux netfilter 代码选择流量，而u32分类器允许我们选择基于 ANY 头的流量 .需要注意的是，filter(过滤器)是在QDisc内部，它们不能作为主体。</p>
<p>数据包->iptables(在通过iptables时，iptables根据不同的ip来设置不同的mark)->TC(class)->TC(queue)</p>
<p>应用<br />
假设eth0位是服务器的外网网络接口。<br />
1)首先在eth0的qdiscA，qdiscA控制通过本机到外网的速度，因此是用来控制服务器流出速度的<br />
#tc qdisc add       dev eth1     root      handle               1:htb   default 1<br />
         添加      设置接口     最上层     句柄(做标记用)     标记    默认使用1的class<br />
解释如下：无论是队列，还是class和filter都有ID之类的标志符，一般都有parent(父,上层的),注意ID具有接口本地性,不同的网络接口可以有相同的ID。对于这里因为qdisc在顶部，所以parent无，用’root’字样来标识,ID用1:来标志<br />
‘default 91′表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 1中.更详细的指令规则说明请参考手册.</p>
<p>2)然后在qdisc下建立两个class,来指定eth0控制通过本机到外网的速度<br />
 #tc class add dev eth0 parent 1:0 classid1:30 htb rate 2mbit ceil 4mbit prio 2<br />
注:以上就是我们控制输出服务器的速度，为2M，最大可以到4M<br />
rate: 是一个类保证得到的带宽值.如果有不只一个类,请保证所有子类总和是小于或等于父类.</p>
<p>prio:用来指示借用带宽时的竞争力,prio越小,优先级越高,竞争力越强.<br />
ceil: ceil是一个类最大能得到的带宽值.</p>
<p>3)接着针对不同的应用在各root class下设置不同的类,.示例如下.(如果只有一个类，这个就没有必要了)<br />
#tc class add dev eth0 parent 1:30 classid 1:31 htbrate 0.5mbit ceil 2mbit prio 3</p>
<p>同时为了不使一个会话永占带宽,在节点(即本文的各应用结点)添加随即公平队列sfq.(多IP)<br />
#tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb   10</p>
<p>4)接着添加过滤器.<br />
#tc filter add dev eth0 parent 1: protocol ipprio 31 handle 31 fw flowid 1:31</p>
<p>4)用iptable打标,也可以使用u32之类<br />
#iptables -t mangle -I FORWARD -i !eth1 -p tcp –sport 80 -s xxx.xxx.xxx.xxx  –j MARK –set-mark 31</p>
<p>TC对最对高速度的控制<br />
Rate ceiling 速率限度<br />
参数ceil指定了一个类可以用的最大带宽, 用来限制类可以借用多少带宽.缺省的ceil是和速率一样<br />
这个特性对于ISP是很有用的, 因为他们一般限制被服务的用户的总量即使其他用户没有请求服务.(ISPS 很想用户付更多的钱得到更好的服务) ,注根类是不允许被借用的, 所以没有指定ceil<br />
注: ceil的数值应该至少和它所在的类的速率一样高, 也就是说ceil应该至少和它的任何一个子类一样高</p>
<p>Burst 突发<br />
网络硬件只能在一个时间发送一个包这仅仅取决于一个硬件的速率. 链路共享软件可以利用这个能力动态产生多个连接运行在不同的速度. 所以速率和ceil不是一个即时度量只是一个在一个时间里发送包的平均值. 实际的情况是怎样使一个流量很小的类在某个时间类以最大的速率提供给其他类. burst 和cburst 参数控制多少数据可以以硬件最大的速度不费力的发送给需要的其他类.<br />
如果cburst 小于一个理论上的数据包他形成的突发不会超过ceil 速率, 同样的方法TBF的最高速率也是这样.<br />
你可能会问, 为什么需要bursts . 因为它可以很容易的提高向应速度在一个很拥挤的链路上. 比如WWW 流量是突发的. 你访问主页. 突发的获得并阅读. 在空闲的时间burst将再&#8221;charge&#8221;一次.<br />
注: burst 和cburst至少要和其子类的值一样大.</p>
<p>TC命令格式：<br />
加入<br />
tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]<br />
tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]<br />
tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id</p>
<p>显示<br />
tc [-s | -d ] qdisc show [ dev DEV ]<br />
tc [-s | -d ] class show dev DEV tc filter show dev DEV</p>
<p>查看TC的状态<br />
tc -s -d qdisc show dev eth0<br />
tc -s -d class show dev eth0</p>
<p>删除tc规则</p>
<p> tc qdisc del dev eth0 root</p>
<p>实例<br />
一、下载<br />
下载限制单个IP</p>
<p>tc qdisc add dev eth0 root handle 1: htb r2q 1<br />
tc class add dev eth0 parent 1: classid 1:1 htb rate 30mbit ceil 60mbit<br />
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.1.2  flowid 1:1<br />
就可以限制192.168.1.2的下载速度为30Mbit最高可以60Mbit</p>
<p>r2q,是指没有default的root，使整个网络的带宽没有限制</p>
<p>下载整段IP<br />
tc qdisc add dev eth0 root handle 1: htb r2q 1<br />
tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit ceil 1000mbit<br />
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.0/24 flowid 1:1</p>
<p>就可以限制192.168.111.0 到255 的带宽为3000k了，实际下载速度为200k左右。<br />
这种情况下，这个网段所有机器共享这200k的带宽。</p>
<p>还可以加入一个sfq（随机公平队列）</p>
<p>tc qdisc add dev eth0 root handle 1: htb r2q 1<br />
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k<br />
tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10<br />
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1</p>
<p>sfq，他可以防止一个段内的一个ip占用整个带宽。</p>
<p>转自: http://www.php-oa.com/2009/06/23/linux_tc.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/07/%e4%bd%bf%e7%94%a8linux%e4%b8%8b%e7%9a%84tc%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%b5%81%e9%87%8f%e6%8e%a7%e5%88%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win7重建图标缓存</title>
		<link>http://www.panwenbin.com/2010/07/05/win7%e9%87%8d%e5%bb%ba%e5%9b%be%e6%a0%87%e7%bc%93%e5%ad%98/</link>
		<comments>http://www.panwenbin.com/2010/07/05/win7%e9%87%8d%e5%bb%ba%e5%9b%be%e6%a0%87%e7%bc%93%e5%ad%98/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 15:53:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1154</guid>
		<description><![CDATA[tskill explorer cd /d %userprofile%\AppData\Local attrib -h IconCache.db del IconCache.db start explorer 保存为 rebuildIconCache.bat 参考 : http://www.filediag.com/blog/archives/255.html]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">tskill explorer
cd /d %userprofile%\AppData\Local
attrib -h IconCache.db
del IconCache.db
start explorer</pre></div></div>

<p>保存为 rebuildIconCache.bat</p>
<p>参考 : http://www.filediag.com/blog/archives/255.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/05/win7%e9%87%8d%e5%bb%ba%e5%9b%be%e6%a0%87%e7%bc%93%e5%ad%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSIS210 使用手冊繁簡版</title>
		<link>http://www.panwenbin.com/2010/07/05/nsis210-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8a%e7%b9%81%e7%b0%a1%e7%89%88/</link>
		<comments>http://www.panwenbin.com/2010/07/05/nsis210-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8a%e7%b9%81%e7%b0%a1%e7%89%88/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 13:37:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[收集]]></category>

		<guid isPermaLink="false">http://www.panwenbin.com/?p=1152</guid>
		<description><![CDATA[下载地址 http://omega.idv.tw/download/show.php?id=73 在线版地址 http://omega.idv.tw/kdb120/viewthread.php?threadid=2817 在墙外 转自: http://forum.cpatch.org/viewthread.php?tid=8256&#038;extra=page%3D1&#038;sid=gc64Kv]]></description>
			<content:encoded><![CDATA[<p>下载地址 http://omega.idv.tw/download/show.php?id=73<br />
在线版地址 http://omega.idv.tw/kdb120/viewthread.php?threadid=2817<br />
在墙外</p>
<p>转自: http://forum.cpatch.org/viewthread.php?tid=8256&#038;extra=page%3D1&#038;sid=gc64Kv</p>
]]></content:encoded>
			<wfw:commentRss>http://www.panwenbin.com/2010/07/05/nsis210-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8a%e7%b9%81%e7%b0%a1%e7%89%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
