<?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; linux</title>
	<atom:link href="http://www.tisswb.com/archives/tag/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tisswb.com</link>
	<description>结婚开始倒计时了，高兴~</description>
	<lastBuildDate>Tue, 19 Jul 2011 09:30:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>linux 死机的应对方法</title>
		<link>http://www.tisswb.com/archives/562.html</link>
		<comments>http://www.tisswb.com/archives/562.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 03:33:21 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=562</guid>
		<description><![CDATA[最近这两天，CentOS的web服务器连续死掉了2次，远程直接没有反应，在机房里能输入用户名，输入完了就没有下文了。最头疼的是没有找到原因何在，也没有任何办法能够进系统重启或者查看内容，每次都是很心疼的摁住电源重启。于是就来找如何应对Linux这种键盘不响应的死机情况，还真找到了一篇：
Linux 会死机么？我可以很肯定地说，会！要让 Linux 死机很容易，但难的是在死机以后如何安全的让他摆脱死机状态，本文讲述如何从 linux 的死机状态中挣脱出来。

Linux 死机有很多种情况，最常见的是系统负载过高导致的。如上次介绍的 fork 炸弹就是这个原理，此外还可以运行内存耗用极大的程序（如虚拟机），也会迅速提升系统负载。由于系统负载过高导致的卡死，一定是解决的越快越好！此时必须记住的是，不能再试图依赖任何图形界面的东西，如 Gnome 的系统监视器（这是我从 Windows 遗留下来的愚昧习惯……），这只会继续加重这种卡死的局面。那怎么办？
<span class="readmore"><a href="http://www.tisswb.com/archives/562.html" title="linux 死机的应对方法" target="_blank">阅读全文——共1415字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近这两天，CentOS的web服务器连续死掉了2次，远程直接没有反应，在机房里能输入用户名，输入完了就没有下文了。最头疼的是没有找到原因何在，也没有任何办法能够进系统重启或者查看内容，每次都是很心疼的摁住电源重启。于是就来找如何应对Linux这种键盘不响应的死机情况，还真找到了一篇：</p>
<p>Linux 会死机么？我可以很肯定地说，会！要让 Linux 死机很容易，但难的是在死机以后如何安全的让他摆脱死机状态，本文讲述如何从 linux 的死机状态中挣脱出来。</p>
<p><a id="more"></a></p>
<p>Linux 死机有很多种情况，最常见的是系统负载过高导致的。如上次介绍的 fork 炸弹就是这个原理，此外还可以运行内存耗用极大的程序（如虚拟机），也会迅速提升系统负载。由于系统负载过高导致的卡死，一定是解决的越快越好！此时必须记住的是，<strong>不能再试图依赖任何图形界面的东西</strong>，如 Gnome 的系统监视器（这是我从 Windows 遗留下来的愚昧习惯……），这只会继续加重这种卡死的局面。那怎么办？</p>
<p>不要怕，Linux 最初就是不需要图形界面的，因为有一个很强大的文字界面。按 Ctrl-Alt-F1（F1-F6 一般来说都可以），然后等一会儿，就会切换到 tty，也就是所谓的文字界面。这个时候需要用用户名密码登入。注意，可能键盘输入的速度比较慢，不过应该还是可以忍受的。下面在提示符后面输入 top 回车，这时会看到一张动态的表，上面列出了耗用资源最多的进程。观察它刷新一两次，按q退出，然后输入 kill ，其中的 PID 你可以在 top 里面看到。这个时候应该会快了不少，如果你发现没有成功结束掉，就再输入 kill -KILL ，这次基本上就没问题了。</p>
<p>除了上面这种情况外，一些底层软件的 bug 也可能导致一些奇怪的死机问题。我某位同学近日就因为莫名其妙的死机强制重启把 ext4 的分区给伤了。（最后是 sysreccd 修复了，貌似是分区表部分损坏）据其说，死机是键鼠均无反应。一般来说，系统负载高导致的死机，在可怕键盘也会有反应，有人说如果死机到键盘无响应“负载 都无限大了”，亦有人说这可能是 X Server 与驱动配合有问题导致的。不过我们考虑一下遇到这种情况怎么办？</p>
<p>OK，这是今天才学到的方法，叫做 reisub，这个方法可以在各种情况下安全地重启计算机。大家在键盘上找，可以找到一个叫做“Sys Rq”的键，在台机的键盘上通常与 Prt Sc 共键，在笔记本可能在其他位置，如 Delete。以台机为例，要使用这种方法需要<em>按住</em> Alt-Print(Sys Rq)，然后依次按下 reisub 这几个键，按完 b 系统就会重启。</p>
<p>下面解释一下这个方法：其实 Sys Rq 是一种叫做系统请求的东西，按住 Alt-Print 的时候就相当于按住了 Sys Rq 键，这个时候输入的一切都会直接由 Linux 内核来处理，它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作，他们分别表示：</p>
<pre>un<strong>R</strong>aw      将键盘控制从 X Server 那里抢回来
t<strong>E</strong>rminate 给所有进程发送 SIGTERM 信号，让他们自己解决善后
<strong>KI</strong>ll      给所有进程发送 SIGKILL 信号，强制他们马上关闭
<strong>S</strong>ync     将所有数据同步至磁盘
<strong>U</strong>nmount  将所有分区挂载为只读模式
re<strong>B</strong>oot     重启</pre>
<pre>这6个字母的顺序是不可以记错的。那怎么记呢？这里提供一个个人认为比较好的方法：单词 busier（busy 的比较级，更忙）倒过来就是了。</pre>
<p>基本上就这样了，Linux 的死机本来就不多见，现在见了也可以安全解决，多好~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/562.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS中yum的详细使用方法</title>
		<link>http://www.tisswb.com/archives/558.html</link>
		<comments>http://www.tisswb.com/archives/558.html#comments</comments>
		<pubDate>Thu, 27 May 2010 07:36:36 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=558</guid>
		<description><![CDATA[一直以来，使用Centos经常使用到yum这个命令，最近刚装了个centos5.4的系统，想yum安装一些基本的软件，由于操作不当，把yum搞了个乱起八糟，老是想安装的提示找不到什么的。于是好好学了一下yum的详细使用方法：
yum是什么
yum = Yellow dog Updater, Modified
主要功能是更方便的添加/删除/更新RPM包.
它能自动解决包的倚赖性问题.
它能便于管理大量系统的更新问题
yum特点
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf
自动解决增加或删除rpm包时遇到的倚赖性问题
<span class="readmore"><a href="http://www.tisswb.com/archives/558.html" title="CentOS中yum的详细使用方法" target="_blank">阅读全文——共2597字</a></span>]]></description>
			<content:encoded><![CDATA[<p>一直以来，使用Centos经常使用到yum这个命令，最近刚装了个centos5.4的系统，想yum安装一些基本的软件，由于操作不当，把yum搞了个乱起八糟，老是想安装的提示找不到什么的。于是好好学了一下yum的详细使用方法：</p>
<p>yum是什么</p>
<p>yum = Yellow dog Updater, Modified</p>
<p>主要功能是更方便的添加/删除/更新RPM包.</p>
<p>它能自动解决包的倚赖性问题.</p>
<p>它能便于管理大量系统的更新问题</p>
<p>yum特点</p>
<p>可以同时配置多个资源库(Repository)</p>
<p>简洁的配置文件(/etc/yum.conf</p>
<p>自动解决增加或删除rpm包时遇到的倚赖性问题</p>
<p>使用方便</p>
<p>保持与RPM数据库的一致性</p>
<p>yum安装</p>
<p>CentOS自带(yum-*.noarch.rpm)</p>
<p>#rpm -ivh yum-*.noarch.rpm</p>
<p>在第一次启用yum之前首先需要导入系统的RPM-GPG-KEY：</p>
<p>#rpm &#8211;import /usr/share/doc/centos-release-3(4)/RPM-GPG-KEY-CentOS-3(4)</p>
<p>yum指令</p>
<p>注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.</p>
<p>rpm包的更新</p>
<p>检查可更新的rpm包</p>
<p>#yum check-update</p>
<p>更新所有的rpm包</p>
<p>#yum update</p>
<p>更新指定的rpm包,如更新kernel和kernel source</p>
<p>#yum update kernel kernel-source</p>
<p>大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级</p>
<p>#yum upgrade</p>
<p>rpm包的安装和删除</p>
<p>安装rpm包,如xmms-mp3</p>
<p>#yum install xmms-mp3</p>
<p>删除rpm包,包括与该包有倚赖性的包</p>
<p>#yum remove licq</p>
<p>注:同时会提示删除licq-gnome,licq-qt,licq-text</p>
<p>yum暂存(/var/cache/yum/)的相关参数</p>
<p>清除暂存中rpm包文件</p>
<p>#yum clean packages</p>
<p>清除暂存中rpm头文件</p>
<p>#yum clearn headers</p>
<p>清除暂存中旧的rpm头文件</p>
<p>#yum clean oldheaders</p>
<p>清除暂存中旧的rpm头文件和包文件</p>
<p>#yum clearn 或#yum clearn all</p>
<p>注:相当于yum clean packages + yum clean oldheaders</p>
<p>包列表</p>
<p>列出资源库中所有可以安装或更新的rpm包</p>
<p>#yum list</p>
<p>列出资源库中特定的可以安装或更新以及已经安装的rpm包</p>
<p>#yum list mozilla#yum list mozilla*</p>
<p>注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包</p>
<p>列出资源库中所有可以更新的rpm包</p>
<p>#yum list updates</p>
<p>列出已经安装的所有的rpm包</p>
<p>#yum list installed</p>
<p>列出已经安装的但是不包含在资源库中的rpm包</p>
<p>#yum list extras</p>
<p>注:通过其它网站下载安装的rpm包</p>
<p>rpm包信息显示(info参数同list)</p>
<p>列出资源库中所有可以安装或更新的rpm包的信息</p>
<p>#yum info</p>
<p>列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息</p>
<p>#yum info mozilla#yum info mozilla*</p>
<p>注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息</p>
<p>列出资源库中所有可以更新的rpm包的信息</p>
<p>#yum info updates</p>
<p>列出已经安装的所有的rpm包的信息</p>
<p>#yum info installed</p>
<p>列出已经安装的但是不包含在资源库中的rpm包的信息</p>
<p>#yum info extras</p>
<p>注:通过其它网站下载安装的rpm包的信息</p>
<p>搜索rpm包</p>
<p>搜索匹配特定字符的rpm包</p>
<p>#yum search mozilla</p>
<p>注:在rpm包名,包描述等中搜索</p>
<p>搜索有包含特定文件名的rpm包</p>
<p>#yum provides realplay</p>
<p>增加资源库</p>
<p>例如:增加rpm.livna.org作为资源库</p>
<p>安装Livna.org rpms GPG key</p>
<p>#rpm &#8211;import http://rpm.livna.org/RPM-LIVNA-GPG-KEY</p>
<p>检查GPG Key</p>
<p># rpm -qa gpg-pubkey*</p>
<p>显示Key信息</p>
<p>#rpm -qi gpg-pubkey-a109b1ec-3f6e28d5</p>
<p>(注:如果要删除Key,使用#rpm -e gpg-pubkey-a109b1ec-3f6e28d5)</p>
<p>yum常用的命令</p>
<p># yum install xxx 安装xxx软件</p>
<p># yum info xxx 查看xxx软件的信息</p>
<p># yum remove xxx 删除软件包</p>
<p># yum list 列出软件包</p>
<p># yum clean 清除缓冲和就的包</p>
<p># yum provides xxx 以xxx为关键字搜索包（提供的信息为关键字）</p>
<p># yum search xxx 搜索软件包（以名字为关键字）</p>
<p># yum groupupdate xxx</p>
<p># yum grouplist xxx</p>
<p># yum groupremove xxx</p>
<p>这三个都是一组为单位进行升级 列表和删除的操作。。比如 &#8220;Mysql Database&#8221;就是一个组会同时操作相关的所有软件包；</p>
<p># yum update 系统升级</p>
<p># yum list available 列出所有升级源上的包；</p>
<p># yum list updates 列出所有升级源上的可以更新包；</p>
<p># yum list installed 列出已经安装的包；</p>
<p># yun update kernel 升级内核；</p>
<p>yum常用的源</p>
<p>1) 自动选择最快的源</p>
<p>由于yum中有的mirror速度是非常慢的，如果yum选择了这个mirror，这个时候yum就会非常慢，对此，可以下载fastestmirror插件，它会自动选择最快的mirror：</p>
<p>#yum install yum-fastestmirror</p>
<p>配置文件：（一般不用动）/etc/yum/pluginconf.d/fastestmirror.conf</p>
<p>你的yum镜像的速度测试记录文件：/var/cache/yum/timedhosts.txt</p>
<p>(2)使用图形界面的yum</p>
<p>如果觉得命令行的yum不方便，那么可以使用图形化的yumex，这个看起来更方便，因为可以自由地选择软件仓库：</p>
<p>#yum install yumex</p>
<p>然后在系统工具中就可以看到yum extender了。实际上系统自带的“添加/删除程序“也可以实现图形化的软件安装，但有些yumex的功能它没有。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/558.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux自动备份数据脚本</title>
		<link>http://www.tisswb.com/archives/515.html</link>
		<comments>http://www.tisswb.com/archives/515.html#comments</comments>
		<pubDate>Wed, 29 Jul 2009 07:09:20 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=515</guid>
		<description><![CDATA[Linux如果天天手工备份真是太麻烦了，今天抽空写了一份自动备份脚本具体步骤如下：
1.脚本文件
位置：/usr/systembak/backup.sh
内容：
#!/bin/sh
# File: /usr/systembak/backup.sh
# Database info
DB_USER=&#8221;dumpuser&#8221;
DB_PASS=&#8221;dumpuser&#8221;
# Others vars
<span class="readmore"><a href="http://www.tisswb.com/archives/515.html" title="Linux自动备份数据脚本" target="_blank">阅读全文——共1184字</a></span>]]></description>
			<content:encoded><![CDATA[<p>Linux如果天天手工备份真是太麻烦了，今天抽空写了一份自动备份脚本具体步骤如下：</p>
<p>1.脚本文件</p>
<p>位置：/usr/systembak/backup.sh</p>
<p>内容：</p>
<p>#!/bin/sh<br />
# File: /usr/systembak/backup.sh</p>
<p># Database info<br />
DB_USER=&#8221;dumpuser&#8221;<br />
DB_PASS=&#8221;dumpuser&#8221;</p>
<p># Others vars<br />
BIN_DIR=&#8221;/usr/bin&#8221;<br />
BCK_DIR=&#8221;/usr/systembak&#8221;<br />
WEB_DIR=&#8221;/var/www/html&#8221;<br />
DATA_DIR=&#8221;/var/lib/mysql&#8221;<br />
DATE=`date +%F`<br />
#FTP_SERV=&#8221;211.144.155.111&#8243;<br />
#FTP_USER=&#8221;username&#8221;<br />
#FTP_PASS=&#8221;12345678&#8243;<br />
#FTP_DIR=&#8221;"</p>
<p>#ZIP<br />
$BIN_DIR/mysqldump &#8211;opt -u$DB_USER -p$DB_PASS e23user | gzip &gt; $BCK_DIR/e23user_dump_$DATE.gz<br />
$BIN_DIR/mysqldump &#8211;opt -u$DB_USER -p$DB_PASS sdbbs | gzip &gt; $BCK_DIR/sdbbs_dump_$DATE.gz<br />
tar -czf $BCK_DIR/web_$DATE.tar.gz  $WEB_DIR<br />
tar -czf $BCK_DIR/e23user_$DATE.tar.gz  $DATA_DIR/e23user<br />
tar -czf $BCK_DIR/sdbbs_$DATE.tar.gz  $WEB_DIR/sdbbs</p>
<p>#UPLOAD<br />
#ftp -i -n $FTP_SERV &lt;&lt;FTP_END<br />
#user $FTP_USER $FTP_PASS<br />
#passive<br />
#binary<br />
#put $BCK_DIR/e23user_dump_$DATE.gz $FTP_DIR/e23user_dump_$DATE.gz<br />
#put $BCK_DIR/sdbbs_dump_$DATE.gz $FTP_DIR/sdbbs_dump_$DATE.gz<br />
#put $BCK_DIR/web_$DATE.tar.gz $FTP_DIR/web_$DATE.tar.gz<br />
#put $BCK_DIR/e23user_$DATE.tar.gz $FTP_DIR/e23user_$DATE.tar.gz<br />
#put $BCK_DIR/sdbbs_$DATE.tar.gz $FTP_DIR/sdbbs_$DATE.tar.gz<br />
#FTP_END</p>
<p>说明：由于没有远程备份服务器，所以UPLOAD部分暂时注释掉了，有了备份服务器只有即可去掉注释。</p>
<p>2.设置定时执行</p>
<p>修改文件：/etc/crontab</p>
<p>在最后添加：05 5 * * 0 root /usr/systembak/backup.sh</p>
<p>意义是在每周日的凌晨5点5分执行备份脚本</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/515.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>linux服务器优化的一点点心得</title>
		<link>http://www.tisswb.com/archives/223.html</link>
		<comments>http://www.tisswb.com/archives/223.html#comments</comments>
		<pubDate>Sun, 21 Dec 2008 14:54:43 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=223</guid>
		<description><![CDATA[最近终于给自己弄了一台服务器，操作系统是linux的，把自己的博客，还有一个linux论坛赶紧迁移了上去，一开始感觉相当爽，毕竟一个服务器就自己一个人用，那感觉相当的爽哈。可是没几天，麻烦事情就来了：服务器越来越慢，打开我的博客和论坛，速度都是出奇的慢，一开始我以为是机器的问题，毕竟是个奔三的服务器，有6年的历史了。
今天问了一个服务器方面的专家朋友，他看了看我的设置，给了我一个建议，打开像Gzip一类的服务器压缩模块和增加服务器缓存试一试。
于是我就到网上查找相关资料，我的服务器操作系统是ubuntu8.04。
然后我打开了apapche的mem_cache和deflate模块，命令分别是：
sudo a2enmod mem_cache
sudo a2enmod deflate
然后重启apache
这两个模块的设置我没有修改，先测试再说。
然后我又到网上找到了开启wordpress2.7和discuz7的Gzip的方法，照着做了一遍。
<span class="readmore"><a href="http://www.tisswb.com/archives/223.html" title="linux服务器优化的一点点心得" target="_blank">阅读全文——共441字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近终于给自己弄了一台服务器，操作系统是linux的，把自己的<a href="http://www.tisswb.cn">博客</a>，还有一个<a href="http://www.nowlinux.cn" target="_blank">linux论坛</a>赶紧迁移了上去，一开始感觉相当爽，毕竟一个服务器就自己一个人用，那感觉相当的爽哈。可是没几天，麻烦事情就来了：服务器越来越慢，打开我的<a href="http://www.tisswb.cn" target="_self">博客</a>和<a href="http://www.nowlinux.cn">论坛</a>，速度都是出奇的慢，一开始我以为是机器的问题，毕竟是个奔三的服务器，有6年的历史了。</p>
<p>今天问了一个服务器方面的专家朋友，他看了看我的设置，给了我一个建议，打开像Gzip一类的服务器压缩模块和增加服务器缓存试一试。</p>
<p>于是我就到网上查找相关资料，我的服务器操作系统是ubuntu8.04。</p>
<p>然后我打开了apapche的mem_cache和deflate模块，命令分别是：</p>
<p>sudo a2enmod mem_cache<br />
sudo a2enmod deflate</p>
<p>然后重启apache</p>
<p>这两个模块的设置我没有修改，先测试再说。</p>
<p>然后我又到网上找到了开启wordpress2.7和discuz7的Gzip的方法，照着做了一遍。</p>
<p>在来访问我的网站，hoho速度果然快了，快了好多～～～～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/223.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apt和dpkg快速参考</title>
		<link>http://www.tisswb.com/archives/184.html</link>
		<comments>http://www.tisswb.com/archives/184.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 08:02:46 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=184</guid>
		<description><![CDATA[apt-cache search # &#8212;&#8212;(package 搜索包)
apt-cache show #&#8212;&#8212;(package 获取包的相关信息，如说明、大小、版本等)
sudo apt-get install # &#8212;&#8212;(package 安装包)
sudo apt-get install # &#8212;&#8211;(package &#8211; - reinstall 重新安装包)
sudo apt-get -f install # &#8212;&#8211;(强制安装?#&#8221;-f = &#8211;fix-missing&#8221;当是修复安装吧&#8230;)
sudo apt-get remove #&#8212;&#8211;(package 删除包)
sudo apt-get remove &#8211; - purge # &#8212;&#8212;(package 删除包，包括删除配置文件等)
<span class="readmore"><a href="http://www.tisswb.com/archives/184.html" title="Apt和dpkg快速参考" target="_blank">阅读全文——共3453字</a></span>]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">apt-cache search # &#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">搜索包</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
apt-cache show #&#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">获取包的相关信息，如说明、大小、版本等</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get install # &#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">安装包</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get install # &#8212;&#8211;(package &#8211; - reinstall </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">重新安装包</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get -f install # &#8212;&#8211;(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">强制安装</span><span lang="EN-US"><span style="font-family: Calibri;">?#&#8221;-f = &#8211;fix-missing&#8221;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">当是修复安装吧</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">&#8230;)<br />
sudo apt-get remove #&#8212;&#8211;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">删除包</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get remove &#8211; - purge # &#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">删除包，包括删除配置文件等</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get autoremove &#8211;purge # &#8212;-(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">删除包及其依赖的软件包</span><span lang="EN-US"><span style="font-family: Calibri;">+</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">配置文件等（只对</span><span lang="EN-US"><span style="font-family: Calibri;">6.10</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">有效，强烈推荐）</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get update #&#8212;&#8212;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">更新源</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">sudo apt-get upgrade #&#8212;&#8212;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">更新已安装的包</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">sudo apt-get dist-upgrade # &#8212;&#8212;&#8212;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">升级系统</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">sudo apt-get dselect-upgrade #&#8212;&#8212;</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">使用</span><span lang="EN-US"><span style="font-family: Calibri;"> dselect </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">升级</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">apt-cache depends #&#8212;&#8212;-(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">了解使用依赖</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
apt-cache rdepends # &#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">了解某个具体的依赖</span><span lang="EN-US"><span style="font-family: Calibri;">?#</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">当是查看该包被哪些包依赖吧</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">&#8230;)<br />
sudo apt-get build-dep # &#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">安装相关的编译环境</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
apt-get source #&#8212;&#8212;(package </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">下载该包的源代码</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)<br />
sudo apt-get clean &amp;&amp; sudo apt-get autoclean # &#8212;&#8212;&#8211;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">清理下载文件的存盘</span><span lang="EN-US"><span style="font-family: Calibri;"> &amp;&amp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">只清理过时的包</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">sudo apt-get check #&#8212;&#8212;-</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">检查是否有损坏的依赖</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-get install<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">下载</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">以及所有倚赖的包裹，同时进行包裹的安装或升级。如果某个包裹被设置了</span><span lang="EN-US"><span style="font-family: Calibri;"> hold (</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">停止标志，就会被搁在一边</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">即不会被升级</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。更多</span><span lang="EN-US"><span style="font-family: Calibri;"> hold </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">细节请看下面。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-get remove [--purge]<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">移除</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">以及任何倚赖这个包裹的其它包裹。</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">&#8211;purge </span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">指明这个包裹应该被完全清除</span><span lang="EN-US"><span style="font-family: Calibri;"> (purged) </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，更多信息请看</span><span lang="EN-US"><span style="font-family: Calibri;"> dpkg -P</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-get update<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">升级来自</span><span lang="EN-US"><span style="font-family: Calibri;"> Debian </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">镜像的包裹列表，如果你想安装当天的任何软件，至少每天运行一次，而且每次修改了</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">/etc/apt/sources.list </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">后，必须执行。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-get upgrade [-u]<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">升级所以已经安装的包裹为最新可用版本。不会安装新的或移除老的包裹。如果一个包改变了倚赖关系而需要安装一个新的包裹，那么它将不会被升级，而是标志为</span><span lang="EN-US"><span style="font-family: Calibri;"> hold</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span><span lang="EN-US"><span style="font-family: Calibri;">apt-get update </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">不会升级被标志为</span><span lang="EN-US"><span style="font-family: Calibri;"> hold </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的包裹</span><span lang="EN-US"><span style="font-family: Calibri;"> (</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">这个也就是</span><span lang="EN-US"><span style="font-family: Calibri;"> hold </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的意思</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。请看下文如何手动设置包裹为</span><span lang="EN-US"><span style="font-family: Calibri;"> hold</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。我建议同时使用</span><span lang="EN-US"><span style="font-family: Calibri;"> &#8216;-u&#8217; </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">选项，因为这样你就能看到哪些包裹将会被升级。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-get dist-upgrade [-u]<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">和</span><span lang="EN-US"><span style="font-family: Calibri;"> apt-get upgrade </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">类似，除了</span><span lang="EN-US"><span style="font-family: Calibri;"> dist-upgrade </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">会安装和移除包裹来满足倚赖关系。因此具有一定的危险性。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-cache search<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">搜索满足</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的包裹和描述。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-cache show<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">显示</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的完整的描述。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">apt-cache showpkg<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">显示</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">许多细节，以及和其它包裹的关系。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dselect<br />
console-apt<br />
aptitude<br />
gnome-apt<br />
APT </span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的几个图形前端</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">其中一些在使用前得先安装</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。这里</span><span lang="EN-US"><span style="font-family: Calibri;"> dselect </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">无疑是最强大的，也是最古老，最难驾驭。</span></span><span lang="EN-US"></p>
<p></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">普通</span><span lang="EN-US"><span style="font-family: Calibri;"> Dpkg </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">用法</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">dpkg -i<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">安装一个</span><span lang="EN-US"><span style="font-family: Calibri;"> Debian </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">包裹文件，如你手动下载的文件。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -c<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">列出</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的内容。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -I<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">从</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">中提取包裹信息。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -r<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">移除一个已安装的包裹。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -P<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">完全清除一个已安装的包裹。和</span><span lang="EN-US"><span style="font-family: Calibri;"> remove </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">不同的是，</span><span lang="EN-US"><span style="font-family: Calibri;">remove </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">只是删掉数据和可执行文件，</span><span lang="EN-US"><span style="font-family: Calibri;">purge </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">另外还删除所有的配制文件。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -L<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">列出</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">安装的所有文件清单。同时请看</span><span lang="EN-US"><span style="font-family: Calibri;"> dpkg -c </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">来检查一个</span><span lang="EN-US"><span style="font-family: Calibri;"> .deb </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">文件的内容。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -s<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">显示已安装包裹的信息。同时请看</span><span lang="EN-US"><span style="font-family: Calibri;"> apt-cache </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">显示</span><span lang="EN-US"><span style="font-family: Calibri;"> Debian </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">存盘中的包裹信息，以及</span><span lang="EN-US"><span style="font-family: Calibri;"> dpkg -I </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">来显示从一个</span><span lang="EN-US"><span style="font-family: Calibri;"> .deb </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">文件中提取的包裹信息。</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg-reconfigure<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">重新配制一个已经安装的包裹，如果它使用的是</span><span lang="EN-US"><span style="font-family: Calibri;"> debconf (debconf </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">为包裹安装提供了一个统一的配制界面</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。你能够重新配制</span><span lang="EN-US"><span style="font-family: Calibri;"> debconf </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">它本身，如你想改变它的前端或提问的优先权。例如，重新配制</span><span lang="EN-US"><span style="font-family: Calibri;"> debconf</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，使用一个</span><span lang="EN-US"><span style="font-family: Calibri;"> dialog </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">前端，简单运行：</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg-reconfigure &#8211;frontend=dialog debconf (</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">如果你安装时选错了，这里可以改回来哟：</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)</p>
<p>echo &#8221; hold&#8221; | dpkg &#8211;set-selections<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">设置</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的状态为</span><span lang="EN-US"><span style="font-family: Calibri;"> hlod (</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">命令行方式</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)</p>
<p>dpkg &#8211;get-selections &#8220;&#8221;<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">取的</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的当前状态</span><span lang="EN-US"><span style="font-family: Calibri;"> (</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">命令行方式</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">)</p>
<p></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">支持通配符，如：</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">Debian:~# dpkg &#8211;get-selections *wine*<br />
libwine                                         hold<br />
libwine-alsa                                    hold<br />
libwine-arts                                    hold<br />
libwine-dev                                     hold<br />
libwine-nas                                     hold<br />
libwine-print                                   hold<br />
libwine-twain                                   hold<br />
wine                                            hold<br />
wine+                                           hold<br />
wine-doc                                        hold<br />
wine-utils                                      hold</p>
<p></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">例如：</span></span><span lang="EN-US"><br />
</span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">大家现在用的都是</span><span lang="EN-US"><span style="font-family: Calibri;"> gaim-0.58 + QQ-plugin</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，为了防止</span><span lang="EN-US"><span style="font-family: Calibri;"> gaim </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">被升级，我们可以采用如下方法：</span></span><span lang="EN-US"></p>
<p></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">方法一：</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">Debian:~# echo &#8220;gaim hold&#8221; | dpkg &#8211;set-selections<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">然后用下面命令检查一下：</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">Debian:~# dpkg &#8211;get-selections &#8220;gaim&#8221;<br />
gaim                                            hold<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">现在的状态标志是</span><span lang="EN-US"><span style="font-family: Calibri;"> hold</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，就不能被升级了。</span></span><span lang="EN-US"></p>
<p></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">如果想恢复怎么办呢</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">?<br />
Debian:~# echo &#8220;gaim install&#8221; | dpkg &#8211;set-selections<br />
Debian:~# dpkg &#8211;get-selections &#8220;gaim&#8221;<br />
gaim                                            install<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">这时状态标志又被重置为</span><span lang="EN-US"><span style="font-family: Calibri;"> install</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，可以继续升级了。</span></span><span lang="EN-US"></p>
<p></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">同志们会问，哪个这些状态标志都写在哪个文件中呢</span></span><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">?<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">在</span><span lang="EN-US"><span style="font-family: Calibri;"> /var/lib/dpkg/status </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里，你也可以通过修改这个文件实现</span><span lang="EN-US"><span style="font-family: Calibri;"> hold</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span></span><span lang="EN-US"></p>
<p></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">有时你会发现有的软件状态标志是</span><span lang="EN-US"><span style="font-family: Calibri;"> purge</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，不要奇怪。</span></span><span lang="EN-US"><br />
</span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">如：事先已经安装了</span><span lang="EN-US"><span style="font-family: Calibri;"> amsn</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，然后把它卸了。</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">apt-get remove &#8211;purge amsn<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">那么状态标志就从</span><span lang="EN-US"><span style="font-family: Calibri;"> install </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">变成</span><span lang="EN-US"><span style="font-family: Calibri;"> purge</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span></span><span lang="EN-US"></p>
<p></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">方法二：</span></span><span lang="EN-US"><br />
</span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">在</span><span lang="EN-US"><span style="font-family: Calibri;">/etc/apt </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">下手动建一个</span><span lang="EN-US"><span style="font-family: Calibri;"> preferences </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">文件</span></span><span lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">内容：</span></span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri;">Package: gaim<br />
Pin: version 0.58*<br />
</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">保存</span></span><span lang="EN-US"></p>
<p><span style="font-size: small; font-family: Calibri;">dpkg -S<br />
</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">在包裹数据库中查找</span><span style="font-family: Calibri;"> </span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，并告诉你哪个包裹包含了这个文件。</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">注：查找的是事先已经安装的包裹</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span></span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="display: none; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-hide: all;">取自</span><span style="display: none; mso-hide: all;" lang="EN-US"><span style="font-family: Calibri;">&#8220;</span><a href="http://wiki.ubuntu.org.cn/index.php?title=Apt%E5%92%8Cdpkg%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83&amp;variant=zh-hant"><span style="color: #800080; font-family: Calibri;">http://wiki.ubuntu.org.cn/index.php?title=Apt%E5%92%8Cdpkg%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83&amp;variant=zh-hant</span></a><span style="font-family: Calibri;">&#8220;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;"> </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/184.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vi编辑器命令大全(Unix/Linux)</title>
		<link>http://www.tisswb.com/archives/73.html</link>
		<comments>http://www.tisswb.com/archives/73.html#comments</comments>
		<pubDate>Tue, 24 Jun 2008 15:10:57 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=73</guid>
		<description><![CDATA[　　文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！
进入vi的命令
vi filename :打开或新建文件，并将光标置于第一行首
vi +n filename ：打开文件，并将光标置于第n行首
vi + filename ：打开文件，并将光标置于最后一行首
vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处
vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename
vi filename&#8230;.filename ：打开多个文件，依次进行编辑
移动光标类命令
h ：光标左移一个字符
<span class="readmore"><a href="http://www.tisswb.com/archives/73.html" title="vi编辑器命令大全(Unix/Linux)" target="_blank">阅读全文——共5948字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！</p>
<p>进入vi的命令<br />
vi filename :打开或新建文件，并将光标置于第一行首<br />
vi +n filename ：打开文件，并将光标置于第n行首<br />
vi + filename ：打开文件，并将光标置于最后一行首<br />
vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处<br />
vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename<br />
vi filename&#8230;.filename ：打开多个文件，依次进行编辑</p>
<p>移动光标类命令<br />
h ：光标左移一个字符<br />
l ：光标右移一个字符<br />
space：光标右移一个字符<br />
Backspace：光标左移一个字符<br />
k或Ctrl+p：光标上移一行<br />
j或Ctrl+n ：光标下移一行<br />
Enter ：光标下移一行<br />
w或W ：光标右移一个字至字首<br />
b或B ：光标左移一个字至字首<br />
e或E ：光标右移一个字至字尾<br />
) ：光标移至句尾<br />
( ：光标移至句首<br />
}：光标移至段落开头<br />
{：光标移至段落结尾<br />
nG：光标移至第n行首<br />
n+：光标下移n行<br />
n-：光标上移n行<br />
n$：光标移至第n行尾<br />
H ：光标移至屏幕顶行<br />
M ：光标移至屏幕中间行<br />
L ：光标移至屏幕最后行<br />
0：（注意是数字零）光标移至当前行首<br />
$：光标移至当前行尾</p>
<p>屏幕翻滚类命令<br />
Ctrl+u：向文件首翻半屏<br />
Ctrl+d：向文件尾翻半屏<br />
Ctrl+f：向文件尾翻一屏<br />
Ctrl＋b；向文件首翻一屏<br />
nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。</p>
<p>插入文本类命令<br />
i ：在光标前<br />
I ：在当前行首<br />
a：光标后<br />
A：在当前行尾<br />
o：在当前行之下新开一行<br />
O：在当前行之上新开一行<br />
r：替换当前字符<br />
R：替换当前字符及其后的字符，直至按ESC键<br />
s：从当前光标位置处开始，以输入的文本替代指定数目的字符<br />
S：删除指定数目的行，并以所输入文本代替之<br />
ncw或nCW：修改指定数目的字<br />
nCC：修改指定数目的行</p>
<p>删除命令<br />
ndw或ndW：删除光标处开始及其后的n-1个字<br />
do：删至行首<br />
d$：删至行尾<br />
ndd：删除当前行及其后n-1行<br />
x或X：删除一个字符，x删除光标后的，而X删除光标前的<br />
Ctrl+u：删除输入方式下所输入的文本</p>
<p>搜索及替换命令<br />
/pattern：从光标开始处向文件尾搜索pattern<br />
?pattern：从光标开始处向文件首搜索pattern<br />
n：在同一方向重复上一次搜索命令<br />
N：在反方向上重复上一次搜索命令<br />
：s/p1/p2/g：将当前行中所有p1均用p2替代<br />
：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代<br />
：g/p1/s//p2/g：将文件中所有p1均用p2替换</p>
<p>选项设置<br />
all：列出所有选项设置情况<br />
term：设置终端类型<br />
ignorance：在搜索中忽略大小写<br />
list：显示制表位(Ctrl+I)和行尾标志（$)<br />
number：显示行号<br />
report：显示由面向行的命令修改过的数目<br />
terse：显示简短的警告信息<br />
warn：在转到别的文件时若没保存当前文件则显示NO write信息<br />
nomagic：允许在搜索模式中，使用前面不带“”的特殊字符<br />
nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始<br />
mesg：允许vi显示其他用户用write写到自己终端上的信息</p>
<p>最后行方式命令<br />
：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下<br />
：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下<br />
：n1,n2 d ：将n1行到n2行之间的内容删除<br />
：w ：保存当前文件<br />
：e filename：打开文件filename进行编辑<br />
：x：保存当前文件并退出<br />
：q：退出vi<br />
：q!：不保存文件并退出vi<br />
：!command：执行shell命令command<br />
：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入<br />
：r!command：将命令command的输出结果放到当前行</p>
<p>寄存器操作<br />
&#8220;?nyy：将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?nyw：将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?nyl：将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?p：取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字<br />
ndd：将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中。</p>
<p>VI的使用<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>一、插入文本<br />
┌──┬────────────┐<br />
│命令│描述　　　　　　　　　　│<br />
├──┼────────────┤<br />
│i 　│在当前字符前插入文本　　│<br />
├──┼────────────┤<br />
│I 　│在行首插入文本 　　　 　│<br />
├──┼────────────┤<br />
│a 　│在当前字符后添加文本　　│<br />
├──┼────────────┤<br />
│A 　│在行末添加文本　　　　　│<br />
├──┼────────────┤<br />
│o 　│在当前行后面插入一空行　│<br />
├──┼────────────┤<br />
│O 　│在当前行前面插入一空行　│<br />
├──┼────────────┤<br />
│R 　│以改写方式输入文本　　　│<br />
└──┴────────────┘<br />
二、移动光标<br />
┌─────┬───────────┐<br />
│命令　　　│描述　　　　　　　　　│<br />
├─────┼───────────┤<br />
│j或下箭头 │向下移动一行　　　　　│<br />
├─────┼───────────┤<br />
│k或上箭头 │向上移动一行　　　　　│<br />
├─────┼───────────┤<br />
│h或左箭头 │左移一个字符　　　　　│<br />
├─────┼───────────┤<br />
│l或右箭头 │右移一个字符　　　　　│<br />
├─────┼───────────┤<br />
│w 　　　　│右移一个词　　　　　　│<br />
├─────┼───────────┤<br />
│W 　　　　│右移一个以空格分隔的词│<br />
├─────┼───────────┤<br />
│b 　　　　│左移一个词　　　　　　│<br />
├─────┼───────────┤<br />
│B 　　　　│左移一个以空格分隔的词│<br />
├─────┼───────────┤<br />
│0 　　　　│移到行首　　　　　　　│<br />
│Ctrl-F　　│向前翻页　　　　　　　│<br />
├─────┼───────────┤<br />
│Ctrl-B　　│向后翻页　　　　　　　│<br />
├─────┼───────────┤<br />
│nG　　　　│到第n行 　　　　　　　│<br />
├─────┼───────────┤<br />
│G 　　　　│到最后一行　　　　　　│<br />
└─────┴───────────┘<br />
三、替换文本<br />
┌─────┬──────┐<br />
│命令　　　│描述　　　　│<br />
├─────┼──────┤<br />
│$ 　　　　│到行尾　　　│<br />
├─────┼──────┤<br />
│( 　　　　│到句子的开头│<br />
├─────┼──────┤<br />
│) 　　　　│到句子的末尾│<br />
├─────┼──────┤<br />
│{　 　　　│到段落的开头│<br />
├─────┼──────┤<br />
│}　　 　　│到段落的末尾│<br />
└─────┴──────┘</p>
<p>四、删除文本<br />
┌───┬───────────┐<br />
│命令　│描述 　　　　　　 　　│<br />
├───┼───────────┤<br />
│r 　　│替换一个字符 　　　　 │<br />
├───┼───────────┤<br />
│c 　　│修改文本直到按下Esc健 │<br />
├───┼───────────┤<br />
│cw　　│修改下一个词 　　　 　│<br />
├───┼───────────┤<br />
│cnw　 │修改接下来的n个词 　　│<br />
└───┴───────────┘<br />
五、文本编辑<br />
┌──┬──────────────────────┐<br />
│命寺│描述　　　　　　　　　　　　　　　　　　　　│<br />
├──┼──────────────────────┤<br />
│yy　│将一行文本移到缺省缓冲区中 　　　　 　　　　│<br />
├──┼──────────────────────┤<br />
│yn　│将下一个词移到缺省缓冲区中 　　 　　　　　　│<br />
├──┼──────────────────────┤<br />
│ynw │将后面的n个词移到缺省缓冲区中　　　　 　　　│<br />
├──┼──────────────────────┤<br />
│p 　│如果缺省缓冲区中包含一行文本，则在当前　　　│<br />
│　　│行后面插入一个空行井将缺省缓冲区中的声　　　│<br />
│　　│容粘贴到这一行中；如果缺省缓冲区中包含　　　│<br />
│　　│多个词，把这些词粘贴到光标的右边．　　　　　│<br />
├──┼──────────────────────┤<br />
│P 　│如果缺省缓冲区中包含一行文本，则正当前 　 　│<br />
│ 　 │行前面插入一个空行井将缺省缓冲区中的内 　 　│<br />
│　　│容粘贴到这一行中；如果缺省缓冲区中包含 　　 │<br />
│ 　 │多个词，把这些词粘贴到光标的左边 　 　</p>
<p> </p>
<p> </p>
<p>　　│<br />
└──┴──────────────────────┘<br />
六、保存退出<br />
┌───────────┬───────────────┐<br />
│命令　　　　　　　　　│描述　　　　　　　　　　　　　│<br />
├───────────┼───────────────┤<br />
│zz　　　　　　　　　　│保存并退出　　　　　　　　　　│<br />
├───────────┼───────────────┤<br />
│:w filename　　　　 　│写入文件　　　　　　　　　 　 │<br />
├───────────┼───────────────┤<br />
│:W　　　　　　　　　　│写入文件　　　　　　　　　　　│<br />
├───────────┼───────────────┤<br />
│:x　　　　　　　　　　│保存(如果当前文件修改过)并退出│<br />
├───────────┼───────────────┤<br />
│:q!　　　　　　　　　 │不保存文件，直接退出　　 　　 │<br />
├───────────┼───────────────┤<br />
│:q　　　　　　　　　　│退出vi　　　　　　　　　　　　│<br />
└───────────┴───────────────┘</p>
<p>VI常用技巧</p>
<p>VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，但是因为它的命令集众多，很多人都不习惯使用它，其实您只需要掌握基本命令，然后加以灵活运用，就会发现它的优势，并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。</p>
<p>一、基本命令介绍</p>
<p>&#8212;- 1．光标命令</p>
<p>k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键，但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。<br />
nG——跳转命令。n为行数，该命令立即使光标跳到指定行。<br />
Ctrl+G——光标所在位置的行数和列数报告。<br />
w、b——使光标向前或向后跳过一个单词。<br />
&#8212;- 2．编辑命令<br />
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。<br />
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。<br />
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。<br />
&#8212;- 3．查找命令<br />
&#8212;- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。<br />
&#8212;- 4．拷贝复制命令<br />
&#8212;- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。</p>
<p>二、常见问题及应用技巧</p>
<p>&#8212;- 1．在一个新文件中读/etc/passwd中的内容，取出用户名部分。<br />
&#8212;- vi file<br />
&#8212;- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd<br />
&#8212;- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。<br />
&#8212;- 您也可以在指定的行号后读入文件内容，例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。<br />
&#8212;- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。<br />
&#8212;- #cat squid.conf.default | grep -v ^$ | grep -v ^#</p>
<p>&#8212;- 2．在打开一个文件编辑后才知道登录的用户对该文件没有写的权限，不能存盘，需要将所做修改存入临时文件。<br />
&#8212;- vi file<br />
&#8212;- :w /tmp/1 保存所做的所有修改，也可以将其中的某一部分修改保存到临时文件，例如仅仅把第20～59行之间的内容存盘成文件/tmp/1，我们可以键入如下命令。<br />
&#8212;- vi file<br />
&#8212;- :20,59w /tmp/1</p>
<p>&#8212;- 3．用VI编辑一个文件，但需要删除大段的内容。<br />
&#8212;- 首先利用编辑命令“vi file”打开文件，然后将光标移到需要删除的行处按Ctrl+G显示行号，再到结尾处再按Ctrl+G，显示文件结尾的行号。<br />
&#8212;- :23,1045d 假定2次得到的行号为23和1045，则把这期间的内容全删除，也可以在要删除的开始行和结束行中用ma、mb命令标记，然后利用“:a,bd”命令删除。</p>
<p>&#8212;- 4．在整个文件的各行或某几行的行首或行尾加一些字符串。<br />
&#8212;- vi file<br />
&#8212;- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。<br />
&#8212;- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。<br />
&#8212;- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。<br />
&#8212;- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。<br />
&#8212;- 注意: 其中s为substitute，%表示所有行，g表示global。</p>
<p>&#8212;- 5．同时编辑2个文件，拷贝一个文件中的文本并粘贴到另一个文件中。<br />
&#8212;- vi file1 file2<br />
&#8212;- yy 在文件1的光标处拷贝所在行<br />
&#8212;- :n 切换到文件2 (n=next)<br />
&#8212;- p 在文件2的光标所在处粘贴所拷贝的行<br />
&#8212;- :n 切换回文件1</p>
<p>&#8212;- 6．替换文件中的路径。<br />
&#8212;- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现，其中“”是转义字符，表明其后的“/”字符是具有实际意义的字符，不是分隔符。</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/73.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux内核的主要配置文件的详细说明</title>
		<link>http://www.tisswb.com/archives/70.html</link>
		<comments>http://www.tisswb.com/archives/70.html#comments</comments>
		<pubDate>Sat, 21 Jun 2008 16:54:08 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[内核编译]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=70</guid>
		<description><![CDATA[1.Code maturity level options：代码成熟等级。
1.1.prompt for development and/or incomplete code/drivers.
在Linux的世界里，每天都有许多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其他人去测试这些driver并提出一些bugs。很多参考书上说这是那些开发人员认为还不是很稳定的功能。但是我个人认为，这个是应该选的一个选项，系统默认是N，我建议还是选择Y，因为会使性能有所提高。
2.Loadable module support：对模块的支持。
2.1.Enable loadable module support.
启动动态载入额外模块的功能，系统默认为Y，建议选择该功能。
2.2.Set version information on all module symbols.
<span class="readmore"><a href="http://www.tisswb.com/archives/70.html" title="Linux内核的主要配置文件的详细说明" target="_blank">阅读全文——共8133字</a></span>]]></description>
			<content:encoded><![CDATA[<p><strong>1.Code maturity level options：代码成熟等级。</strong></p>
<p>1.1.prompt for development and/or incomplete code/drivers.<br />
在Linux的世界里，每天都有许多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其他人去测试这些driver并提出一些bugs。很多参考书上说这是那些开发人员认为还不是很稳定的功能。但是我个人认为，这个是应该选的一个选项，系统默认是N，我建议还是选择Y，因为会使性能有所提高。</p>
<p><strong>2.Loadable module support：对模块的支持。</strong></p>
<p>2.1.Enable loadable module support.<br />
启动动态载入额外模块的功能，系统默认为Y，建议选择该功能。<br />
2.2.Set version information on all module symbols.<br />
通常，我们更新核心版本之后，模块要重新的编译。这个选项可以为某个版本的内核编译的模块在另一个内核下使用，但通常用不到，可以不选，系统默认为Y。<br />
2.3.Kernel module loader.<br />
让内核在启动时有自己装入必需模块的能力，建议选上。注意：在开机就会 mount 上来的partition 的 FS 、device driver 记得要 compiler 进 kernel，不能把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。通常的建议是如果可能，将内核代码编译成可加载模块，因为这样可以使内核更小，而且更稳定。警告！千万不要将文件系统（File System）部分的代码编译为可加载模块，如果你犯了这个错误，将文件系统（File System）部分的代码编译为可加载模块，结果将是内核无法读取它自己的文件系统。 然后内核无法加载它自己的配置文件——一些很明显是在正常启动Linux时所必需的东西。我很少使用可加载模块：虽然会使内核文件变大，但我喜欢我的内核能够直接和硬件对话，这只是我自己的偏好。</p>
<p><strong>3.Processor type and features：处理器类型和特色</strong></p>
<p>3.1.Processor family.<br />
它会对每种CPU做最佳化，所以要选择正确的CPU否则会对该机的性能有一定的影响。不过，如果您的gCC编译器是2.7.0版以前的。那么只能选择386或是486。通常“/dev/cpu”选项更高级，多数用户并不需要选择它。需要注意的是不能选择比你的CPU类型还高级的CPU，否则可能不能正常工作。<br />
3.2.High Memory Support.<br />
只有当你的计算机有超过1GB内存时才是必须的。因此“High Memory Support”通常并不使用。<br />
3.3.Math emulation.<br />
这项询问是否需L1nux核心模拟数学浮点运算器。如果有486Dx、AMD以及Pentium机器的话，这个选项就不必选了，因为它们都有内建的浮点运算器。系统默认为N。<br />
3.4.MTTR （memory type range register）support.<br />
这项允许在PCI或者AGP总线众进行更快速的通讯。 由于现在所有系统都将它们的显卡接在PCI或AGP总线上，你通常需要选择“MTRR”：无论如何，打开这个选项通常都是安全的——即使你的机器没有使用PCI或AGP总线的显卡<br />
3.5.Symmetric multi-processing support.<br />
同步处理器支持该选项保证内核能够以最佳方式加载多处理器。假如被编译的计算机上有多个CPU。一般用户选择N。<br />
3.6.Mutiquad NUMA system.<br />
通常也需要多处理器，但它通常是关闭的。</p>
<p><strong>4.General setup：常规内核选项。</strong></p>
<p>4.1. Networking support.<br />
Linux网络支持，建议选上，否则可能导致内核无法编译。<br />
4.2. PCI support.<br />
现在的所有系统都使用PCI总线，系统默认为Y。<br />
4.3. PCI access mode.<br />
PCI存取模式。可供选择的有BIOS、Direct和Any，选Any吧。<br />
4.4. Support for hot-pluggabel devices.<br />
热插拔设备支持。支持的不是太好，可不选。<br />
4.5. PCMCIA/CardBus support&#8212;&#8212;&gt;PCMCIA/CardBus support.<br />
有PCMCIA就必选了。n4.6. System V IPC.<br />
如果将来想编译dosemu（DOS模拟器），它是一个让各个程序（process）同步且能彼此交换数据的函数库和一些系统的调用，建议选择Y。<br />
4.7. BSD Process Accounting.<br />
4.8. Sysctl support.<br />
除非你的内存少的可怜，否则你应该启动这个功能，启用该选项后内核会大8K，但能让你直接改变内核的参数而不必重新开机。以上三项是有关进程处理/IPC调用的，主要就是System V和BSD两种风格。如果你不是使用BSD，就按照缺省吧。<br />
4.9. Kernel core (/proc/kcore/) format.<br />
现在的Linux发行版以ELF格式作为它们的“内核核心格式”。<br />
4.10. Kernel support for A.OUT binaries.<br />
a．out的执行文件是比较古老的可执行码，用在比较早期的UNIX系统上。Linux最初也是使用这种码来执行程序，一直到ELF格式的可执行码出来后，有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代a．out格式的可执行码。但目前由于沿有许多的程序还没有取代过来，所以只好选择Y，等将来有一天，全部的程序都变成了ELF的天下时，那时再disable掉。<br />
4.11. Power Management support.<br />
电源管理支持。<br />
4.12. Advanced Power Management BIOS support.<br />
高级电源管理BIOS支持。这通常是用在笔记本电脑上的东西，如果您有APM的BIOS，支持省电的设备的（有电池的那种），那么您可以选上这项，一般人这一项是选n，以避免一些可能会发生的问题。后有8个选项。ATX主板需要这两个选项来自动关闭计算机（turn off the computer，包括关闭电源）。</p>
<p><strong>5.Memory Technology Devices (MTD)：配置存储设备。</strong></p>
<p>5.1. Memory Technology Devices (MTD) support.<br />
你需要这个选项来使Linux可以读取闪存卡（Flash Card）之类的存储器。 闪存卡通常用于数码相机。 通过这个选项，Linux可以读取闪存卡（从特殊的设备中，比如读卡机），并且将图片保存为.jpg格式。除非你确定你需要它，否则不必打开它：如果你发现自己需要，你可以在以后加上。</p>
<p><strong>6.Parallel port support：配置并口。</strong></p>
<p>6.1. Parallel port support.<br />
如果不打算使用，就别选了。</p>
<p><strong>7.Plug and Play configuration：即插即用支持。</strong></p>
<p>7.1. Plug and Playsupport.<br />
几乎所有人都有即插即用设备，因此需要这个选项的支持。 打开这个选项使内核能够自动配置即插即用设备并且使它们在系统中能够使用。 有时需要在BIOS中打开“Plug &amp; PlayOS”，否则Linux（当然Windows也一样）无法配置即插即用设备。<br />
7.2. ISA Plug &amp; Play support.<br />
选项需要以即插即用模式运行的ISA卡（ISA Card）。 例如AWE64声卡。假如有这个设备的话可以选择Y。</p>
<p><strong>8.Block devices：块设备支持。</strong></p>
<p>8.1. Normal PC floppy disk support.<br />
普通PC软盘支持。大部分人都要使用软盘（floppy），所以这个选项要选择Y<br />
8.2. XT hard disk support.<br />
支持XT的古董硬盘，这是IBM电脑时代的东西，如果您还有这种很旧很旧的硬盘。那么，您可以把它编进核心或是编成一个模块。大部分的人这个选项都是选择N的。<br />
8.3. Loopback device support.<br />
这个选项的意思是说，可以将一个文件挂成一个文件系统。如果要烧光盘片的，那么您很有可能在把一个文件烧进去之前，看看这个文件是否符合IS09660的文件系统的内容，是否符合您的需求。而且，可以对这个文件系统加以保护。不过，如果您想做到这点的话，您必须有最新的mount程序，版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护，则您必须有des.1.tar.gz这个程序。</p>
<p><strong>9.Multiple devices driver support：多设备驱动支持。</strong></p>
<p>9.1. Multiple devices driver support.<br />
普通Linux用户通常不需要RAID（廉价冗余磁盘阵列）或者LVM支持。 普通用户选择Y。<br />
<strong>10.Networking options：网络选项。</strong></p>
<p>10.1. Packet Socket.<br />
选择“Y”，你需要这个选项来与网卡进行通信而不需要在内核中实现网络协议。 在这里我可以简捷一些：一般情况下，打开这个选项。 大多数选项是关闭的，除非你需要特殊的支持。<br />
10.2. TCP/IP networking.<br />
选择“Y”，内核将支持TCP/IP协议。建议用户选择Y。<br />
10.3. IP：multicasting.<br />
所谓的multicasting是群组广播，它是用在视频会议上的协议，如果想送一个网络封包（网络的数据），同样的一份数据将送往十部机器上。您可以连续送十次给十台机器（点对点的传送），也可以同时送一次，然后让十台机器同时接收到。当然后者比前者好，由于视频会议要求是最好每个人都能同时收到同一份信息，所以如果您有类似的需要，这个选项就要打开。同时您还必须去找相关的软件。</p>
<p><strong>11.Telephony Support：电话支持。</strong></p>
<p>11.1.Linux Telephony Support.<br />
这个选项只有当你在计算机中使用电话卡的时候才有用，比如在Internet上打电话。 大多数普通用户没有电话卡，因此不需要这个选项。</p>
<p><strong>12.ATA/IDE/MFM/RLL support：配置对ATA，IDE，MFM和RLL的支持。</strong></p>
<p>12.1. ATA/IDE/MFM/RLL support.<br />
几乎每个人都需要这些协议，除非你的机器只有SCSI硬盘而没有其他任何类型的硬盘。 因此，大多数用户都应该把它打开。 点击它下面的那一栏将会出现一个有更详细配置选项的菜单。仔细填写它们：它们极为重要！<br />
12.2.Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support.<br />
选项是每个使用IDE/ATAPI界面的人都需要的。 包括硬盘，磁带机，ZIP盘，光驱（CDROM）和刻录机（CD-R（W））。 基本上现在的所有计算机（译者注：这里指的是PC）都使用IDE/ATAPI界面，因此这个选项必须打开。<br />
12.3. Include IDE/ATA-2 DISK support.<br />
选项在支持硬盘的时候需要。 因此这个选项也必须打开，除非你的机器是一个纯粹的SCSI系统。<br />
其它的就使用缺省的选项吧，如果你使用了比较特殊的设备，比如PCMCIA等，就到里面找相应的选项吧。</p>
<p><strong>13.SCSI support：SCSI设备的支持。</strong></p>
<p>13.1. SCSI support.<br />
如果你有一块SCSI卡，你当然需要打开相关选项。这张截图只显示了当你为你的CD-R（W）选择“SCSI emulation support”<br />
13.2. SCSI disk support.<br />
指硬盘而言，如果有SCSI硬盘，那么就要选这个选项。<br />
13.3. SCSI tape support.<br />
指磁带机而言，如果您有SCSI的磁带机，那么就要选这个选项。<br />
13.4. SCSI CDROM support.<br />
指CDROM，如果您有SCSI光驱，这一项一定要选。<br />
13.5. SCSI generic support.<br />
指其他有关SCSI的东西，也许您有一台SCSI的扫描器或是烧录机，或是其他有关SCSI的配备，您就要选这一项。而且，除此之外，您还必须准备关于这些配备的软件。<br />
13.6. Probe a11 LUNs on each SCSI device.<br />
通常这个选项大部分的人都不会选。我们举个例子来说，如果您的SCSI光驱是那种多片装的，就是一台光驱，但可以一次放好几片光盘片的那种。这种我们叫做Lun。I2O Device Support：配置I2O设备支持。<br />
13.7. Verbose SCSI error reporting（kernel size+=12K）.<br />
如果认为您的SCSI硬件配备有些问题，想了解一下它出现的错误信息。那么您可以把这个选项选y，Linux核心会告诉您有关于您的SCSI配备的问题（如果有的话）。不过，它会增加核心约 12KB左右。<br />
13.8. SCSI low—level drivers.<br />
下面总共有接近30张的SCSI卡，您可以依需求做选择SCSI卡牌子。</p>
<p><strong>14.I2O Device Support：I20设备支持。</strong></p>
<p>14.1. I2O Device Support.<br />
如果你有I2O界面，你必须选择这个选项。大多数人没有，如果你也没有的话，可以直接将它关闭。</p>
<p><strong>15.Network Device Support：网络设备支持。</strong></p>
<p>15.1. Network Device Support.网络设备支持。<br />
上面选好协议了，现在该选设备了，可想而知，内容肯定多得很。还好还好，里面大概分类了，有ARCnet设备、Ethernet（10 or 100 Mbit）、Ethernet（1000Mbit）、Wireless LAN（non-hamradio）、Token Ring device、Wan interfaces、PCMCIA network device support几大类。我用的是10/100M的以太网，看来只需要选则这个了。还是10/100M的以太网设备熟悉，内容虽然多，一眼就可以看到我所用的RealTeck RTL-8139PCI Fast Ethernet Adapter support，为了免得麻烦，编译到内核里面好了，不选M了，选Y。耐心点，一般说来你都能找到自己用的网卡。如果没有，你只好自己到厂商那里去要驱动了。<br />
15.2. Dummy net driver support.<br />
如果有SLIP或PPP的传输协议，那么要把这一项打开。<br />
15.3. PPP（point－to－point）support.<br />
点对点协议。<br />
15.4. SLIP（serial line） support.<br />
这是MODEM族常用的一种通讯协议，必须通过一台Server（叫ISP）获取一个IP地址，然后利用这个IP地址，可以模拟以太网络，使用有关TCP／IP的程序。<br />
15.5.1. Ethernet（10 or 100Mbit）.<br />
如果您使用网络卡，那么这个选项一定要选y，否则以下对网络卡的选择将不会出现。或是您有网络卡，这时您同样的也要选y。像我们平常用的都是NE2000相容卡。<br />
15.5.2. EISA， VLB， PCI and on board controllers.<br />
选择网络卡，包括直接附在主机板上的那种。如果选择y，则底下会列出其他的网络卡让您做选择，这些卡对于一般人来说很少会去用到。所以大部分的人这项是选N的。<br />
15.5.3.Pocket and portable adaptors.<br />
通常用在可携式的电脑上，这类型的网络卡（口袋型的），由于体积很小在安装和取下方面很方便，因此笔记本相关电脑上便常常采用这种网络卡。<br />
15.5.4. Token Ring driver support.<br />
Token Ring是 IBM电脑上的网络。它叫令牌环网络，和以太网络是很类似的东西。如果您希望使用的Token Ring网络卡以便连接到这种网络，那么选Y，一般人都选N。<br />
15.5.5. ARCnet support.<br />
这也是一种网络卡，通常一般人用不到，所以选n。</p>
<p><strong>16.Amateur Radio support：配置业余广播支持。</strong></p>
<p>16.1. Amateur Radio support.<br />
如果你希望使用业余广播支持，应该打开这个选项，并且打开相应的驱动。 多数人不需要这个选项。</p>
<p><strong>17.IrDA（infrared）support：配置红外线（无线）通讯支持。</strong></p>
<p>17.1. IrDA（infrared）support.<br />
如果你有无线设备，比如无线鼠标或无线键盘，你应该打开这个选项。 多数桌面机器不需要这个选项。</p>
<p><strong>18.ISDN subsystem：配置ISDN。</strong></p>
<p>18.1. ISDN support.<br />
如果使用ISDN上网，这个就必不可少了。</p>
<p><strong>19.Old CD-ROM drivers（not SCSI、not IDE）：配置老CDROM。</strong></p>
<p>在486和386机器中，CDROM并不是通过硬盘IDE（ATAPI）控制器连接的，而是通过声卡或一块特殊的板卡。 使用这些老CDROM需要选择对应的驱动。这个选项在现在的系统中显得多余。</p>
<p><strong>20.Input Core Support：</strong></p>
<p>这个选项提供了2.4.x内核中最重要的特性之一的USB支持。 Input core support是处于内核与一些USB设备之间的层（Layer）。如果你拥有其中一种USB设备，你必须打开“inputcore support”选项。 现在所有的主板都有USB接口，所以，原则上你应该打开它。</p>
<p><strong>21.Character devices：字符设备。</strong></p>
<p>21.1. Virtual terminal.<br />
选择“y”，内核将支持虚拟终端。<br />
21.2. Support for console on virtual terminal.<br />
选择“y”，内核可将一个虚拟终端用作系统控制台。<br />
21.3. Standard/generic (dumb) serial support.<br />
选择“y”，内核将支持串行口。标准序列接口的选定。如果您是用serial的鼠标（大部分的人都是用这个），或是MODEM的话，则这一项一定要选。大部分的人这一项都选y。<br />
21.4. Support for console on serial port.<br />
选择“y”，内核可将一个串行口用作系统控制台。<br />
21.5. I2C support.<br />
I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux，该项必选。<br />
21.6. Mice.<br />
鼠标。现在可以支持总线、串口、PS/2、C&amp;T 82C710 mouse port、PC110 digitizer pad&#8212;&#8212;根据需要选择。<br />
21.6.1. PS/2 mouse (aka &#8220;auxiliary device&#8221;) support.<br />
如果用户使用的是PS/2鼠标，则该选项应该选择“y”。<br />
21.7. Joysticks.<br />
手柄。即使在Linux下把手柄驱动起来意义也不是太大，游戏太少了。<br />
21.8. Watchdog Cards.<br />
虽然称为Cards，这个可以用纯软件来实现，当然也有硬件的。如果你把这个选中，那么就会在你的/dev下创建一个名为watchdog的文件，它可以记录你的系统的运行情况，一直到系统重新启动的1分钟左右。有了这个文件，你就可以恢复系统到重启前的状态了。</p>
<p><strong>24.Console drivers：配置控制台驱动。</strong></p>
<p>24.1. VGA text console.<br />
选项在VGA模式下启动字符模式。 多数人都需要它，因此这个玄学爱你跟通常是开着的。只有一些386计算机没有VGA兼容显卡，选择这个选项对于现在的多数计算机来说都没有问题。<br />
24.2. video mode selection support.<br />
使启动的时候能够使用字符模式的分辨率。 如果你希望一行能够有更多的字的话，这通常会给你提供方便，不过通常你不必打开它们。 下面两个选项是试验性质的，我建议你关闭它们。</p>
<p><strong>25.Sound sound：声卡驱动。<br />
</strong>在这部分，你可以配置声卡。如果你的发行版使用的是内核的标准声卡驱动，你必须正确选择你使用的声卡。</p>
<p><strong>26.USB support：配置USB支持。</strong></p>
<p><strong>27.kernel hacking：配置“kernel hacking”选项.这很简单：不要打开！</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/70.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux与windows的最大差异：Linux内核编译及详解</title>
		<link>http://www.tisswb.com/archives/69.html</link>
		<comments>http://www.tisswb.com/archives/69.html#comments</comments>
		<pubDate>Sat, 21 Jun 2008 16:38:42 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[windows相关]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[内核编译]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=69</guid>
		<description><![CDATA[windows系统优化有一个地方从来没有动过，那就是内核的优化，没有这个功能也就没有了很多的个性定制，这也许就是开源与不开源的巨大差异。下面说正题吧，
 一、内核简介
　　内核，是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统，决定着系统的性能和稳定性。
　　linux的一个重要的特点就是其源代码的公开性，所有的内核源程序都可以在 /usr/src/linux下找到，大部分应用软件也都是遵循GPL而设计的，你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中，由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。
　　想象一下，拥有了内核的源程序对你来说意味着什么？首先，我们可以了解系统是如何工作的。通过通读源代码，我们就可以了解系统的工作原理，这在Windows下简直是天方夜谭。其次，我们可以针对自己的情况，量体裁衣，定制适合自己的系统，这样就需要重新编译内核。在Windows下是什么情况呢？相信很多人都被越来越庞大的Windows整得莫名其妙过。再次，我们可以对内核进行修改，以符合自己的需要。这意味着什么？没错，相当于自己开发了一个操作系统，但是大部分的工作已经做好了，你所要做的就是要增加并实现自己需要的功能。在Windows下，除非你是微软的核心技术人员，否则就不用痴心妄想了。
<span class="readmore"><a href="http://www.tisswb.com/archives/69.html" title="Linux与windows的最大差异：Linux内核编译及详解" target="_blank">阅读全文——共9116字</a></span>]]></description>
			<content:encoded><![CDATA[<p>windows系统优化有一个地方从来没有动过，那就是内核的优化，没有这个功能也就没有了很多的个性定制，这也许就是开源与不开源的巨大差异。下面说正题吧，</p>
<p> 一、内核简介<br />
　　内核，是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统，决定着系统的性能和稳定性。<br />
　　linux的一个重要的特点就是其源代码的公开性，所有的内核源程序都可以在 /usr/src/linux下找到，大部分应用软件也都是遵循GPL而设计的，你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中，由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。<br />
　　想象一下，拥有了内核的源程序对你来说意味着什么？首先，我们可以了解系统是如何工作的。通过通读源代码，我们就可以了解系统的工作原理，这在Windows下简直是天方夜谭。其次，我们可以针对自己的情况，量体裁衣，定制适合自己的系统，这样就需要重新编译内核。在Windows下是什么情况呢？相信很多人都被越来越庞大的Windows整得莫名其妙过。再次，我们可以对内核进行修改，以符合自己的需要。这意味着什么？没错，相当于自己开发了一个操作系统，但是大部分的工作已经做好了，你所要做的就是要增加并实现自己需要的功能。在Windows下，除非你是微软的核心技术人员，否则就不用痴心妄想了。</p>
<p>二、内核版本号<br />
　　由于linux的源程序是完全公开的，任何人只要遵循GPL，就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型（bazaar，与cathedral&#8211;教堂模型&#8211;对应），为了确保这些无序的开发过程能够有序地进行，Linux采用了双树系统。一个树是稳定树（stable tree），另一个树是非稳定树（unstable tree）或者开发树（development tree）。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树，那么在开发树中经过测试以后，在稳定树中将进行相同的改进。一旦开发树经过了足够的发展，开发树就会成为新的稳定树。开发数就体现在源程序的版本号中；源程序版本号的形式为x.y.z：对于稳定树来说，y是偶数；对于开发树来说，y比相应的稳定树大一（因此，是奇数）。到目前为止，稳定树的最高版本是2.4.18；开发树的最新版本是2.5.10。下载内核版本请访问http://www.kernel.org。</p>
<p>三、为什么重新编译内核<br />
　　linux作为一个自由软件，在广大爱好者的支持下，内核版本不断更新。新的内核修订了旧内核的bug，并增加了许多新的特性。如果用户想要使用这些新特性，或想根据自己的系统度身定制一个更高效，更稳定的内核，就需要重新编译内核。<br />
　　通常，更新的内核会支持更多的硬件，具备更好的进程管理能力，运行速度更快、 更稳定，并且一般会修复老版本中发现的许多漏洞等，经常性地选择升级更新的系统内核是 linux使用者的必要操作内容。<br />
　　为了正确的合理地设置内核编译配置选项，从而只编译系统需要的功能的代码，一般主要有下面四个考虑：<br />
　　自己定制编译的内核运行更快（具有更少的代码）<br />
　　系统将拥有更多的内存（内核部分将不会被交换到虚拟内存中）<br />
　　不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞<br />
　　将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些</p>
<p>四、内核编译模式<br />
　　要增加对某部分功能的支持，比如网络之类，可以把相应部分编译到内核中（build-in），也可以把该部分编译成模块（module），动态调用。如果编译到内核中，在内核启动时就可以自动支持相应部分的功能，这样的优点是方便、速度快，机器一启动，你就可以使用这部分功能了；缺点是会使内核变得庞大起来，不管你是否需要这部分功能，它都会存在，这就是Windows惯用的招数，建议经常使用的部分直接编译到内核中，比如网卡。如果编译成模块，就会生成对应的.o文件，在使用的时候可以动态加载，优点是不会使内核过分庞大，缺点是你得自己来调用这些模块。</p>
<p>五、新版本内核的获取和更新<br />
　　linux内核版本发布的官方网站是http://www.kernel.org。新版本的内核分两种，一种是full Source版本，另外一种是patch文件，即补丁。完整的内核版本比较大，一般是 tar.gz或者是.bz2文件，二者分别是使用g***或者b***2进行压缩的文件，使用时需要解压缩。patch文件则比较小，一般只有几十K到几百K,但是patch文件是针对于特定的版本的，你需要找到自己对应的版本才能使用。<br />
　　编译内核需要root权限，以下操作都假定你是root用户。请把你需要升级的内核拷贝到/usr/src/下（下文中以2.4.18的内核的linux-2.4.18.tar.gz为例），命令为</p>
<p>#cp linux-2.4.18.tar.gz /usr/src</p>
<p>　　让我们先来查看一下当前/usr/src的内容，注意到有一个linux-2.4的符号链接，指向一个linux-2.4.7-10（以REDHAT7.2为例）的目录。这就是你所装linux的kernel源代码，删除这个链接。</p>
<p>　　现在解压我们下载的源程序文件。如果所下载的是.tar.gz（.tgz）文件，请使用下面的命令：</p>
<p>#tar -zxvf linux-2.4.18.tar.gz.tar.gz</p>
<p>　　如果你所下载的是.bz2文件，例如linux-2.4.0test8.tar.bz2，请使用下面的命令</p>
<p>#b***2 -d linux-2.4.18.tar.bz2<br />
#tar -xvf linux-2.4.18.tar</p>
<p>　　文件将解压到/usr/src/linux目录中,我们把它稍作修改：</p>
<p>#mv linux linux-2.4.18<br />
#ln -s linux-2.4.18 linux</p>
<p>　　如果下载的是patch文件，就可以进行patch操作（下面假设patch-2.4.18已经位于 /usr/src目录下了，否则你需要先把该文件拷贝到/usr/src下）：</p>
<p>#patch -p0 &lt; patch-2.4.18</p>
<p>　　<br />
六、内核编译<br />
　　通常要运行的第一个命令是：</p>
<p>＃cd /usr/src/linux<br />
＃make mrproper</p>
<p>　　该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译，所以本步可以省略。而如果你多次使用了这些源程序编译内核，那么最好要先运行一下这个命令。<br />
　　确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构（对于PC机来说，使用的体系结构是i386）所需要的真正的include子目录。如：asm指向/usr/src/linux/include/asm-i386 等。若没有这些链接，就需要手工创建，按照下面的步骤进行：</p>
<p># cd /usr/include/<br />
# rm -r asm linux scsi<br />
# ln -s /usr/src/linux/include/asm-i386 asm<br />
# ln -s /usr/src/linux/include/linux linux<br />
# ln -s /usr/src/linux/include/scsi scsi</p>
<p>　　这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后，再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们上面又在/usr/src下 &#8220;多余&#8221;地创建了个名为linux的链接了吧？</p>
<p>　　接下来的内核配置过程比较烦琐，但是配置的适当与否与日后linux的运行直接相关，有必要了解一下一些主要的且经常用到的选项的设置。<br />
　　<br />
配置内核可以根据需要与爱好使用下面命令中的一个：</p>
<p>#make config（基于文本的最为传统的配置界面，不推荐使用）<br />
#make menuconfig（基于文本选单的配置界面，字符终端下推荐使用）<br />
#make xconfig（基于图形窗口模式的配置界面，Xwindow下推荐使用）<br />
#make oldconfig（如果只想在原来内核配置的基础上修改一些小地方，会省去不少麻烦）</p>
<p>　　这三个命令中，make xconfig的界面最为友好，如果你可以使用Xwindow，那么就推荐你使用这个命令，界面如下：</p>
<p>　　如果你不能使用Xwindow，那么就使用make menuconfig好了。界面虽然比上面一个差点，总比make config的要好多了，下图为make menuconfig的界面：<br />
　　选择相应的配置时，有三种选择，它们分别代表的含义如下：<br />
　　Y－-将该功能编译进内核<br />
　　N－-不将该功能编译进内核<br />
　　M－-将该功能编译成可以在需要时动态插入到内核中的模块<br />
　　如果使用的是make xconfig，使用鼠标就可以选择对应的选项。如果使用的是 make menuconfig，则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号，还有一种圆括号。用空格键选择时可以发现，中括号里要么是空，要么是&#8221;*&#8221;，而尖括号里可以是空，&#8221;*&#8221;和&#8221;M&#8221;。这表示前者对应的项要么不要，要么编译到内核里；后者则多一样选择，可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。<br />
　　在编译内核的过程中，最烦杂的事情就是这步配置工作了，很多新手都不清楚到底该如何选取这些选项。实际上在配置时，大部分选项可以使用其缺省值，只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块，有利于减小内核的长度，减小内核消耗的内存，简化该功能相应的环境改变时对内核的影响；不需要的功能就不要选；与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。</p>
<p>至于选项，因为比较复杂，只是简单做一介绍，编译时应视具体情况，参考帮助的内容再加以选择。</p>
<p>1. Code maturity level options<br />
　　代码成熟等级。此处只有一项：prompt for development and/or incomplete code/drivers，如果你要试验现在仍处于实验阶段的功能，比如khttpd、IPv6等，就必须把该项选择为Y了；否则可以把它选择为N。</p>
<p>2. Loadable module support<br />
　　对模块的支持。这里面有三项：</p>
<p>　　Enable loadable module support：除非你准备把所有需要的内容都编译到内核里面，否则该项应该是必选的。<br />
　　Set version inFORMation on all module symbols：可以不选它。<br />
　　Kernel module loader：让内核在启动时有自己装入必需模块的能力，建议选上。</p>
<p>3. Processor type and features<br />
　　CPU类型。内容蛮多的，不一一介绍了，有关的几个如下：</p>
<p>　　Processor family：根据你自己的情况选择CPU类型。<br />
　　High Memory Support：大容量内存的支持。可以支持到4G、64G，一般可以不选。<br />
　　Math emulation：协处理器仿真。协处理器是在386时代的宠儿，现在早已不用了。<br />
　　MTTR support：MTTR支持。可不选。<br />
　　Symmetric multi-processing support：对称多处理支持。除非你富到有多个CPU，否则就不用选了。</p>
<p>4. General setup<br />
　　这里是对最普通的一些属性进行设置。这部分内容非常多，一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项：</p>
<p>　　Networking support：网络支持。必须，没有网卡也建议你选上。<br />
　　PCI support：PCI支持。如果使用了PCI的卡，当然必选。<br />
　　PCI access mode：PCI存取模式。可供选择的有BIOS、Direct和Any，选Any吧。<br />
　　Support for hot-pluggabel devices：热插拔设备支持。支持的不是太好，可不选。<br />
　　PCMCIA/CardBus support：PCMCIA/CardBus支持。有PCMCIA就必选了。<br />
　　System V IPC<br />
　　BSD Process Accounting<br />
　　Sysctl support：以上三项是有关进程处理/IPC调用的，主要就是System V和BSD两种风格。如果你不是使用BSD，就按照缺省吧。<br />
　　Power Management support：电源管理支持。<br />
　　Advanced Power Management BIOS support：高级电源管理BIOS支持。</p>
<p>5. Memory Technology Device（MTD）<br />
　　MTD设备支持。可不选。</p>
<p>6. Parallel port support<br />
　　并口支持。如果不打算使用串口，就别选了。</p>
<p>7. Plug and Play configuration<br />
　　即插即用支持。虽然linux对即插即用目前支持的不如Windows好，但是还是选上吧，这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。</p>
<p>8. Block devices<br />
　　块设备支持。这个就得针对自己的情况来选了，简单说明一下吧：</p>
<p>　　Normal PC floppy disk support：普通PC软盘支持。这个应该必选。<br />
　　XT hard disk support：<br />
　　Compaq ***ART2 support：<br />
　　Mulex DAC960/DAC1100 PCI RAID Controller support：RAID镜像用的。<br />
　　Loopback device support：<br />
　　Network block device support：网络块设备支持。如果想访问网上邻居的东西，就选上。<br />
　　Logical volume manager（LVM）support：逻辑卷管理支持。<br />
　　Multiple devices driver support：多设备驱动支持。<br />
　　RAM disk support：RAM盘支持。</p>
<p>9. Networking options<br />
　　网络选项。这里配置的是网络协议。内容太多了，不一一介绍了，自己看吧，如果你对网络协议有所了解的话，应该可以看懂的。如果懒得看，使用缺省选项（肯定要选中TCP/IP networking哦）就可以了。让我们看看，TCP/IP、ATM、IPX、DECnet、Appletalk&#8230;&#8230;支持的协议好多哦，IPv6也支持了，Qos and/or fair queueing（服务质量公平调度）也支持了，还有kHTTPd，不过这些都还在实验阶段。</p>
<p>10. Telephony Support<br />
　　电话支持。linux下可以支持电话卡，这样你就可以在IP上使用普通的电话提供语音服务了。记住，电话卡可和modem没有任何关系哦。</p>
<p>11. ATA/IDE/MFM/RLL support<br />
　　这个是有关各种接口的硬盘/光驱/磁带/软盘支持的，内容太多了，使用缺省的选项吧，如果你使用了比较特殊的设备，比如PCMCIA等，就到里面自己找相应的选项吧。</p>
<p>12. SCSI support<br />
　　SCSI设备的支持。我没有SCSI的设备，所以根本就不用选，如果你用了SCSI的硬盘/光驱/磁带等设备，自己找好了。</p>
<p>13. Fusion MPT device support<br />
　　需要Fusion MPT兼容PCI适配器，不用选。</p>
<p>14. I2O device support<br />
　　需要I2O接口适配器支持，在智能Input/Output（I2O）体系接口中使用。</p>
<p>15. Network device support<br />
　　网络设备支持。上面选好协议了，现在该选设备了，可想而知，内容肯定多得很。还好还好，里面大概分类了，有ARCnet设备、Ethernet（10 or 100 Mbit）、Ethernet（1000Mbit）、Wireless LAN（non-hamradio）、Token Ring device、Wan interfaces、PCMCIA network device support几大类。我用的是10/100M的以太网，看来只需要选则这个了。还是10/100M的以太网设备熟悉，内容虽然多，一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support，为了免得麻烦，编译到内核里面好了，不选M了，选Y。耐心点，一般说来你都能找到自己用的网卡。如果没有，你只好自己到厂商那里去要驱动了。</p>
<p>16. Amateur Radio support<br />
　　配置业余无线广播。</p>
<p>17. IrDA（inf***ed）support<br />
　　红外线支持。</p>
<p>18. ISDN subsystem<br />
　　如果你使用ISDN上网，这个就必不可少了。</p>
<p>19. Old CD-ROM drivers（not SCSI、not IDE）<br />
　　做的可真周到，原来那些非SCSI/IDE口的光驱谁还在用啊，自己选吧，用IDE的CD-ROM不用选。</p>
<p>20. Character devices<br />
　　字符设备。这个内容又太多了，先使用缺省设置，需要的话自己就修改。把大类介绍一下吧：</p>
<p>　　I2C support：I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For linux，该项必选。<br />
　　Mice：鼠标。现在可以支持总线、串口、PS/2、C&amp;T 82C710 mouse port、PC110 digitizer pad，自己根据需要选择。<br />
　　Joysticks：手柄。即使在linux下把手柄驱动起来意义也不是太大，游戏太少了。<br />
　　Watchdog Cards：虽然称为Cards，这个可以用纯软件来实现，当然也有硬件的。如果你把这个选中，那么就会在你的/dev下创建一个名为watchdog的文件，它可以记录你的系统的运行情况，一直到系统重新启动的1分钟左右。有了这个文件，你就可以恢复系统到重启前的状态了。<br />
　　Video For linux：支持有关的音频/视频卡。<br />
　　Ftape, the floppy tape device driver：<br />
　　PCMCIA character device support：</p>
<p>21. File systems<br />
　　文件系统。内容又太多了，老法子，在缺省选项的基础上进行修改。介绍以下几项：</p>
<p>　　Quota support：Quota可以限制每个用户可以使用的硬盘空间的上限，在多用户共同使用一台主机的情况中十分有效。<br />
　　DOS FAT fs support：DOS FAT文件格式的支持，可以支持FAT16、FAT32。<br />
　　ISO 9660 CD-ROM file system support：光盘使用的就是ISO 9660的文件格式。<br />
　　NTFS file system support：ntfs是NT使用的文件格式。<br />
　　/proc file system support：/proc文件系统是linux提供给用户和系统进行交互的通道，建议选上，否则有些功能没法正确执行。</p>
<p>　　还有另外三个大类都归到这儿了：Network File Systems（网络文件系统）、Partition Types（分区类型）、Native Language Support（本地语言支持）。值得一提的是Network File Systems里面的两种：NFS和***B分别是linux和Windows相互以网络邻居的形式访问对方所使用的文件系统，根据需要加以选择。</p>
<p>22. Console drivers<br />
　　控制台驱动。一般使用VGA text console就可以了，标准的80*25的文本控制台。</p>
<p>23. Sound<br />
　　声卡驱动。如果你能在列表中找到声卡驱动那自然最好，否则就试试OSS了。</p>
<p>24. USB supprot<br />
　　USB支持。很多USB设备，比如鼠标、调制解调器、打印机、扫描仪等，在linux都可以得到支持，根据需要自行选择。</p>
<p>25. Kernel hacking<br />
　　配置了这个，即使在系统崩溃时，你也可以进行一定的工作了。普通用户是用不着这个功能的。</p>
<p>　　配置完后，存盘退出，当然你也可以把现在的配置文件保存起来，这样下次再配置的时候就省力气了。</p>
<p>接下来是编译，输入以下命令。</p>
<p>#make dep<br />
#make clean<br />
#make bzImage或make zImage<br />
#make modules<br />
#make modules_install<br />
#depmod -a</p>
<p>　　第一个命令make dep实际上读取配置过程生成的配置文件，来创建对应于配置的依赖关系树，从而决定哪些需要编译而那些不需要；第二命令make clean完成删除前面步骤留下的文件，以避免出现一些错误；make zImage和make bzImage则实现完全编译内核，二者生成的内核都是使用g***压缩的，只要使用一个就够了，它们的区别在于使用make bzImage可以生成大一点的内核。建议大家使用make bzImage命令。<br />
　　后面三个命令只有在你进行配置的过程中，在回答Enable loadable module support (CONFIG_MODULES)时选了&#8221;Yes&#8221;才是必要的，make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。<br />
　　严格说来，depmod -a命令和编译过程并没有关系，它是生成模块间的依赖关系，这样你启动新内核之后，使用modprobe命令加载模块时就能正确地定位模块。</p>
<p>更新</p>
<p>　　经过以上的步骤，我们终于得到了新版本的内核。为了能够使用新版本的内核，我们还需要做一些改动：</p>
<p>#cp /usr/src/linux/System.map /boot/System.map-2.4.18<br />
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18</p>
<p>　　以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz，使其指向新内核的文件：</p>
<p>#cd /boot;rm -f System.map vmlinuz<br />
#ln -s vmlinuz-2.4.18 vmlinuz<br />
#ln -s System.map-2.4.18 System.map</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/69.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINUX用户和用户组配置文件详解</title>
		<link>http://www.tisswb.com/archives/50.html</link>
		<comments>http://www.tisswb.com/archives/50.html#comments</comments>
		<pubDate>Thu, 15 May 2008 15:46:26 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=50</guid>
		<description><![CDATA[用户（User）和用户组（Group）的配置文件，是系统管理员最应该了解和掌握的系统基础文件之一，从另一方面来说，了解这些文件也是系统安全管理的重要组成部份；做为一个合格的系统管理员应该对用户和用户组配置文件透彻了解才行；
一、用户（User）相关；
谈到用户，就不得不谈用户管理，用户配置文件，以及用户查询和管理的控制工具；用户管理主要通过修改用户配置文件完成；用户管理控制工具最终目的也是为了修改用户配置文件。
什么是用户查询和管理控制工具呢？用户查询和控制工具是查询、添加、修改和删除用户等系统管理工具，比如查询用户的id和finger命令，添加用户的useradd 或adduser 、userdel 用户的删除 、设置密码的passwd命令 、修改用户usermod 等等；我们需要知道的是通过用户查询和控制工具所进行的动作的最终目的也是修改用户配置文件；所以我们进行用户管理的时候，直接修改用户配置文件一样可以达到用户管理的目的；
<span class="readmore"><a href="http://www.tisswb.com/archives/50.html" title="LINUX用户和用户组配置文件详解" target="_blank">阅读全文——共16904字</a></span>]]></description>
			<content:encoded><![CDATA[<p>用户（User）和用户组（Group）的配置文件，是系统管理员最应该了解和掌握的系统基础文件之一，从另一方面来说，了解这些文件也是系统安全管理的重要组成部份；做为一个合格的系统管理员应该对用户和用户组配置文件透彻了解才行；</p>
<p>一、用户（User）相关；</p>
<p>谈到用户，就不得不谈用户管理，用户配置文件，以及用户查询和管理的控制工具；用户管理主要通过修改用户配置文件完成；用户管理控制工具最终目的也是为了修改用户配置文件。</p>
<p>什么是用户查询和管理控制工具呢？用户查询和控制工具是查询、添加、修改和删除用户等系统管理工具，比如查询用户的id和finger命令，添加用户的useradd 或adduser 、userdel 用户的删除 、设置密码的passwd命令 、修改用户usermod 等等；我们需要知道的是通过用户查询和控制工具所进行的动作的最终目的也是修改用户配置文件；所以我们进行用户管理的时候，直接修改用户配置文件一样可以达到用户管理的目的；</p>
<p>通过上面的解说，我们能实实在在的感觉到用户（User）配置文件的重要性；其实用户和用户组在系统管理中是不可分割的，但为了说明问题，我们还是得把用户（User）的配置文件单列出来解说，其中包括/etc/passwd 和/etc/shadow 文件；在这之中，你还能了解UID的重要性；</p>
<p>通过本标题，您可以了解或掌握的内容有：了解/etc/passwd和/etc/shadow；什么UID ；</p>
<p>与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow，其中/etc/shadow是用户资讯的加密文件，比如用户的密码口令的加密保存等；/etc/passwd 和/etc/shadow 文件是互补的；我们可以通过对比两个文件来差看他们的区别；</p>
<p>1、关于/etc/passwd 和 UID；</p>
<p>/etc/passwd 是系统识别用户的一个文件，做个不恰当的比喻，/etc/passwd 是一个花名册，系统所有的用户都在这里有登录记载；当我们以beinan 这个账号登录时，系统首先会查阅 /etc/passwd 文件，看是否有beinan 这个账号，然后确定beinan的UID，通过UID 来确认用户和身份，如果存在则读取/etc/shadow 影子文件中所对应的beinan的密码；如果密码核实无误则登录系统，读取用户的配置文件；</p>
<p>1）/etc/passwd 的内容理解：</p>
<p>在/etc/passwd 中，每一行都表示的是一个用户的信息；一行有7个段位；每个段位用:号分割，比如下面是我的系统中的/etc/passwd 的两行；</p>
<p>beinan:x:500:500:beinan sun:/home/beinan:/bin/bash<br />
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash<br />
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash<br />
linuxsir:x:501:502::/home/linuxsir:/bin/bash</p>
<p>第一字段：用户名（也被称为登录名）；在上面的例子中，我们看到这两个用户的用户名分别是 beinan 和linuxsir；</p>
<p>第二字段：口令；在例子中我们看到的是一个x，其实密码已被映射到/etc/shadow 文件中；</p>
<p>第三字段：UID ；请参看本文的UID的解说；</p>
<p>第四字段：GID；请参看本文的GID的解说；</p>
<p>第五字段：用户名全称，这是可选的，可以不设置，在beinan这个用户中，用户的全称是beinan sun ；而linuxsir 这个用户是没有设置全称；</p>
<p>第六字段：用户的家目录所在位置；beinan 这个用户是/home/beinan ，而linuxsir 这个用户是/home/linuxsir ；</p>
<p>第七字段：用户所用SHELL 的类型，beinan和linuxsir 都用的是 bash ；所以设置为/bin/bash ；</p>
<p>2）关于UID 的理解：</p>
<p>UID 是用户的ID 值，在系统中每个用户的UID的值是唯一的，更确切的说每个用户都要对应一个唯一的UID ，系统管理员应该确保这一规则。系统用户的UID的值从0开始，是一个正整数，至于最大值可以在/etc/login.defs 可以查到，一般Linux发行版约定为60000； 在Linux 中，root的UID是0，拥有系统最高权限；</p>
<p>UID 在系统唯一特性，做为系统管理员应该确保这一标准，UID 的唯一性关系到系统的安全，应该值得我们关注！比如我在/etc/passwd 中把beinan的UID 改为0后，你设想会发生什么呢？beinan这个用户会被确认为root用户。beinan这个<span style="color: #0810b7;">帐号</span>可以进行所有root的操作；</p>
<p>UID 是确认用户权限的标识，用户登录系统所处的角色是通过UID 来实现的，而非用户名，切记；把几个用户共用一个UID 是危险的，比如我们上面所谈到的，把普通用户的UID 改为0，和root共用一个UID ，这事实上就造成了系统管理权限的混乱。如果我们想用root权限，可以通过su或sudo来实现；切不可随意让一个用户和root分享同一个UID ；</p>
<p>UID是唯一性，只是要求管理员所做的，其实我们修改/etc/passwd 文件，可以修改任何用户的UID的值为0，</p>
<p>一般情况下，每个Linux的发行版都会预留一定的UID和GID给系统虚拟用户占用，虚拟用户一般是系统安装时就有的，是为了完成系统任务所必须的用户，但虚拟用户是不能登录系统的，比如ftp、nobody、adm、rpm、bin、shutdown等；</p>
<p>在Fedora 系统会把前499 个UID和GID 预留出来，我们添加新用户时的UID 从500开始的，GID也是从500开始，至于其它系统，有的系统可能会把前999UID和GID预留出来；以各个系统中/etc/login.defs中的 UID_MIN 的最小值为准； Fedora 系统 login.defs的UID_MIN是500，而UID_MAX 值为60000，也就是说我们通过adduser默认添加的用户的UID的值是500到60000之间；而Slackware 通过adduser不指定UID来添加用户，默认UID 是从1000开始；</p>
<p>2、关于/etc/shadow ；</p>
<p>1）/etc/shadow 概说；</p>
<p>/etc/shadow文件是/etc/passwd 的影子文件，这个文件并不由/etc/passwd 而产生的，这两个文件是应该是对应互补的；shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息，比如用户的有效期限等；这个文件只有root权限可以读取和操作，权限如下：</p>
<p>-r&#8212;&#8212;&#8211; 1 root root 1.5K 10月 16 09:49 /etc/shadow</p>
<p>/etc/shadow 的权限不能随便改为其它用户可读，这样做是危险的。如果您发现这个文件的权限变成了其它用户组或用户可读了，要进行检查，以防系统安全问题的发生；</p>
<p>如果我们以普通用户查看这个文件时，应该什么也查看不到，提示是权限不够：</p>
<p>[beinan@localhost ~]$ more /etc/shadow<br />
/etc/shadow: 权限不够</p>
<p>2）/etc/shadow 的内容分析；</p>
<p>/etc/shadow 文件的内容包括9个段位，每个段位之间用:号分割；我们以如下的例子说明；</p>
<p>beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::<br />
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:</p>
<p>第一字段：用户名（也被称为登录名），在/etc/shadow中，用户名和/etc/passwd 是相同的，这样就把passwd 和shadow中用的用户记录联系在一起；这个字段是非空的；</p>
<p>第二字段：密码（已被加密），如果是有些用户在这段是x，表示这个用户不能登录到系统；这个字段是非空的；</p>
<p>第三字段：上次修改口令的时间；这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔（天数），您可以通过passwd 来修改用户的密码，然后查看/etc/shadow中此字段的变化；</p>
<p>第四字段：两次修改口令间隔最少的天数；如果设置为0,则禁用此功能；也就是说用户必须经过多少天才能修改其口令；此项功能用处不是太大；默认值是通过/etc/login.defs文件定义中获取，PASS_MIN_DAYS 中有定义；</p>
<p>第五字段：两次修改口令间隔最多的天数；这个能增强管理员管理用户口令的时效性，应该说在增强了系统的安全性；如果是系统默认值，是在添加用户时由/etc/login.defs文件定义中获取，在PASS_MAX_DAYS 中定义；</p>
<p>第六字段：提前多少天警告用户口令将过期；当用户登录系统后，系统登录程序提醒用户口令将要作废；如果是系统默认值，是在添加用户时由/etc/login.defs文件定义中获取，在PASS_WARN_AGE 中定义；</p>
<p>第七字段：在口令过期之后多少天禁用此用户；此字段表示用户口令作废多少天后，系统会禁用此用户，也就是说系统会不能再让此用户登录，也不会提示用户过期，是完全禁用；</p>
<p>第八字段：用户过期日期；此字段指定了用户作废的天数（从1970年的1月1日开始的天数），如果这个字段的值为空，<span style="color: #0810b7;">帐号</span>永久可用；</p>
<p>第九字段：保留字段，目前为空，以备将来Linux发展之用；</p>
<p>如果更为详细的，请用 man shadow来查看帮助，您会得到更为详尽的资料；</p>
<p>我们再根据实例分析：</p>
<p>beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::<br />
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:</p>
<p>第一字段：用户名（也被称之为登录名），在例子中有峡谷两条记录，也表示有两个用户beinan和linuxsir</p>
<p>第二字段：被加密的密码，如果有的用户在此字段中是x，表示这个用户不能登录系统，也可以看作是虚拟用户，不过虚拟用户和真实用户都是相对的，系统管理员随时可以对任何用户操作；</p>
<p>第三字段：表示上次更改口令的天数（距1970年01月01日），上面的例子能说明beinan和linuxsir这两个用户，是在同一天更改了用户密码，当然是通过passwd 命令来更改的，更改密码的时间距1970年01月01日的天数为13072；</p>
<p>第四字段：禁用两次口令修改之间最小天数的功能，设置为0</p>
<p>第五字段：两次修改口令间隔最多的天数，在例子中都是99999天；这个值如果在添加用户时没有指定的话，是通过/etc/login.defs来获取默认值，PASS_MAX_DAYS 99999；您可以查看/etc/login.defs来查看，具体的值；</p>
<p>第六字段：提前多少天警告用户口令将过期；当用户登录系统后，系统登录程序提醒用户口令将要作废；如果是系统默认值，是在添加用户时由/etc/login.defs文件定义中获取，在PASS_WARN_AGE 中定义；在例子中的值是7 ，表示在用户口令将过期的前7天警告用户更改期口令；</p>
<p>第七字段：在口令过期之后多少天禁用此用户；此字段表示用户口令作废多少天后，系统会禁用此用户，也就是说系统会不能再让此用户登录，也不会提示用户过期，是完全禁用；在例子中，此字段两个用户的都是空的，表示禁用这个功能；</p>
<p>第八字段：用户过期日期；此字段指定了用户作废的天数（从1970年的1月1日开始的天数），如果这个字段的值为空，<span style="color: #0810b7;">帐号</span>永久可用；在例子中，我们看到beinan这个用户在此字段是空的，表示此用户永久可用；而linuxsir这个用户表示在距1970年01月01日后13108天后过期，算起来也就是2005年11月21号过期；哈哈，如果有兴趣的的弟兄，自己来算算，大体还是差不多的;)；</p>
<p>第九字段：保留字段，目前为空，以备将来Linux发展之用；</p>
<p>二、关于用户组；</p>
<p>具有某种共同特征的用户集合起来就是用户组（Group）。用户组（Group）配置文件主要有 /etc/group和/etc/gshadow，其中/etc/gshadow是/etc/group的加密信息文件；在本标题下，您还能了解到什么是GID ；</p>
<p>1、/etc/group 解说；</p>
<p>/etc/group 文件是用户组的配置文件，内容包括用户和用户组，并且能显示出用户是归属哪个用户组或哪几个用户组，因为一个用户可以归属一个或多个不同的用户组；同一用户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组，那么这个用户就可以浏览root用户家目录的文件，如果root用户把某个文件的读写执行权限开放，root用户组的所有用户都可以修改此文件，如果是可执行的文件（比如脚本），root用户组的用户也是可以执行的；</p>
<p>用户组的特性在系统管理中为系统管理员提供了极大的方便，但安全性也是值得关注的，如某个用户下有对系统管理有最重要的内容，最好让用户拥有独立的用户组，或者是把用户下的文件的权限设置为完全私有；另外root用户组一般不要轻易把普通用户加入进去，</p>
<p>2、/etc/group 内容具体分析</p>
<p>/etc/group 的内容包括用户组（Group）、用户组口令、GID及该用户组所包含的用户（User），每个用户组一条记录；格式如下：</p>
<p>group_name:passwd:GID:user_list</p>
<p>在/etc/group 中的每条记录分四个字段：</p>
<p>第一字段：用户组名称；</p>
<p>第二字段：用户组密码；</p>
<p>第三字段：GID</p>
<p>第四字段：用户列表，每个用户之间用,号分割；本字段可以为空；如果字段为空表示用户组为GID的用户名；</p>
<p>我们举个例子：</p>
<p>root:x:0:root,linuxsir 注：用户组root，x是密码段，表示没有设置密码，GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户（可以通过/etc/passwd查看）；；<br />
beinan:x:500:linuxsir 注：用户组beinan，x是密码段，表示没有设置密码，GID是500,beinan用户组下包括linuxsir用户及GID为500的用户（可以通过/etc/passwd查看）；<br />
linuxsir:x:502:linuxsir 注：用户组linuxsir，x是密码段，表示没有设置密码，GID是502,linuxsir用户组下包用户linuxsir及GID为502的用户（可以通过/etc/passwd查看）；<br />
helloer:x:503: 注：用户组helloer，x是密码段，表示没有设置密码，GID是503,helloer用户组下包括GID为503的用户，可以通过/etc/passwd查看；</p>
<p>而/etc/passwd 对应的相关的记录为：</p>
<p>root:x:0:0:root:/root:/bin/bash<br />
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash<br />
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash<br />
helloer:x:502:503::/home/helloer:/bin/bash</p>
<p>由此可以看出helloer用户组包括 helloer用户；所以我们查看一个用户组所拥有的用户，可以通过对比/etc/passwd和/etc/group来得到；</p>
<p>2、关于GID ；</p>
<p>GID和UID类似，是一个正整数或0，GID从0开始，GID为0的组让系统付予给root用户组；系统会预留一些较靠前的GID给系统虚拟用户（也被称为伪装用户）之用；每个系统预留的GID都有所不同，比如Fedora 预留了500个，我们添加新用户组时，用户组是从500开始的；而Slackware 是把前100个GID预留，新添加的用户组是从100开始；查看系统添加用户组默认的GID范围应该查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值；</p>
<p>我们可以对照/etc/passwd和/etc/group 两个文件；我们会发现有默认用户组之说；我们在 /etc/passwd 中的每条用户记录会发现用户默认的GID ；在/etc/group中，我们也会发现每个用户组下有多少个用户；在创建目录和文件时，会使用默认的用户组；我们还是举个例子；</p>
<p>比如我把linuxsir 加为root用户组，在/etc/passwd 和/etc/group 中的记录相关记录为：</p>
<p>linuxsir用户在 /etc/passwd 中的记录；我们在这条记录中看到，linuxsir用户默认的GID为502；而502的GID 在/etc/group中查到是linuxsir用户组；</p>
<p>linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash</p>
<p>linuxsir 用户在 /etc/group 中的相关记录；在这里，我们看到linuxsir用户组的GID 为502，而linuxsir 用户归属为root、beinan用户组；</p>
<p>root:x:0:root,linuxsir<br />
beinan:x:500:linuxsir<br />
linuxsir:x:502:linuxsir</p>
<p>我们用linuxsir 来创建一个目录，以观察linuxsir用户创建目录的权限归属；</p>
<p>[linuxsir@localhost ~]$ mkdir testdir<br />
[linuxsir@localhost ~]$ ls -lh<br />
总用量 4.0K<br />
drwxrwxr-x 2 linuxsir linuxsir 4.0K 10月 17 11:42 testdir</p>
<p>通过我们用linuxsir 来创建目录时发现，testdir的权限归属仍然是linuxsir用户和linuxsir用户组的；而没有归属root和beinan用户组，明白了吧；</p>
<p>但值得注意的是，判断用户的访问权限时，默认的GID 并不是最重要的，只要一个目录让同组用户可以访问的权限，那么同组用户就可以拥有该目录的访问权，在这时用户的默认GID 并不是最重要的；</p>
<p>3、/etc/gshadow 解说；</p>
<p>/etc/gshadow是/etc/group的加密资讯文件，比如用户组（Group）管理密码就是存放在这个文件。/etc/gshadow和/etc/group是互补的两个文件；对于大型<span style="color: #0810b7;">服务</span>器，针对很多用户和组，定制一些关系结构比较复杂的权限模型，设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性，这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性，这时就要用到用户组密码；</p>
<p>/etc/gshadow 格式如下，每个用户组独占一行；</p>
<p>groupname:password:admin,admin,&#8230;:member,member,&#8230;</p>
<p>第一字段：用户组</p>
<p>第二字段：用户组密码，这个段可以是空的或!，如果是空的或有!，表示没有密码；</p>
<p>第三字段：用户组管理者，这个字段也可为空，如果有多个用户组管理者，用,号分割；</p>
<p>第四字段：组成员，如果有多个成员，用,号分割；</p>
<p>举例：</p>
<p>beinan:!::linuxsir<br />
linuxsir:oUS/q7NH75RhQ::linuxsir</p>
<p>第一字段：这个例子中，有两个用户组beinan用linuxsir</p>
<p>第二字段：用户组的密码，beinan用户组无密码；linuxsir用户组有已经，已经加密；</p>
<p>第三字段：用户组管理者，两者都为空；</p>
<p>第四字段：beinan用户组所拥有的成员是linuxsir ，然后还要对照一下/etc/group和/etc/passwd 查看是否还有其它用户，一般默认添加的用户，有时同时也会创建用户组和用户名同名称； linuxsir 用户组有成员linuxisir ；</p>
<p>如何设置用户组的密码？ 我们可以通过 gpasswd 来实现；不过一般的情况下，没有必要设置用户组的密码；不过自己实践一下也有必要；下面是一个为linuxsir用户组设置密码的例子；</p>
<p>gpasswd 的用法： gpasswd 用户组</p>
<p>root@localhost ~]# gpasswd linuxsir<br />
正在修改 linuxsir 组的密码<br />
新密码：<br />
请重新输入新密码：</p>
<p>用户组之间的切换，应该用 newgrp ，这个有点象用户之间切换的su ；我先举个例子：</p>
<p>[beinan@localhost ~]$ newgrp linuxsir<br />
密码：<br />
[beinan@localhost ~]$ mkdir lingroup<br />
[beinan@localhost ~]$ ls -ld lingroup/<br />
drwxr-xr-x 2 beinan linuxsir 4096 10月 18 15:56 lingroup/<br />
[beinan@localhost ~]$ newgrp beinan<br />
[beinan@localhost ~]$ mkdir beinangrouptest<br />
[beinan@localhost ~]$ ls -ld beinangrouptest<br />
drwxrwxr-x 2 beinan beinan 4096 10月 18 15:56 beinangrouptest</p>
<p>说明：我是以beinan用户组切换到linuxsir用户组，并且建了一个目录，然后再切换回beinan用户组，又建了一个目录，请观察两个目录属用户组的不同；还是自己体会吧；</p>
<p>三、通过用户和用户组配置文件来查询或管理用户；</p>
<p>1、用户和用户组查询的方法；</p>
<p>1）通过查看用户（User）和用户组的配置文件的办法来查看用户信息</p>
<p>我们已经用户（User）和用户组（Group）的配置文件已经有个基本的了解，通过查看用户（User）和用户组的配置文件，我们就能做到对系统用户的了解，当然您也可以通过id 或finger 等工具来进行用户的查询等任务。</p>
<p>对于文件的查看，我们可以通过 more 或cat 来查看，比如 more /etc/passwd 或cat /etc/passwd ；其它工具也一样，能对文本查看就行，比如less 也好</p>
<p>比如我们可以通过more 、cat 、less命令对/etc/passwd 的查看，虽然命令不同，但达到的目的是一样的， 都是得到/etc/passwd 的内容；</p>
<p>[root@localhost ~]# more /etc/passwd<br />
[root@localhost ~]# cat /etc/passwd<br />
[root@localhost ~]# less /etc/passwd</p>
<p>2）通过id和finger 工具来获取用户信息；</p>
<p>除了直接查看用户（User）和用户组（Group）配置文件的办法除外，我们还有id和finger工具可用，我们一样通过命令行的操作，来完成对用户的查询；id和finger，是两个各有测重的工具，id工具更测重用户、用户所归属的用户组、UID 和GID 的查看；而finger 测重用户资讯的查询，比如用户名（登录名）、电话、家目录、登录SHELL类型、真实姓名、空闲时间等等；</p>
<p>id 命令用法；</p>
<p>id 选项 用户名</p>
<p>比如：我想查询beinan和linuxsir 用户的UID、GID 以及归属用户组的情况：</p>
<p>[root@localhost ~]# id beinan<br />
uid=500(beinan) gid=500(beinan) groups=500(beinan)<br />
注：beinan的UID 是 500，默认用户组是beinan，默认用户组的GID 是500,归属于beinan用户组；<br />
[root@localhost ~]# id linuxsir<br />
uid=505(linuxsir) gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)<br />
注：linuxsir的UID 是505,默认用户组是linuxsir ，默认用户组的GID 是502，归属于linuxsir（GID为502）、root（GID为0），beinan（GID为500）；</p>
<p>关于id的详细用法，我会在专门用户查询的文章来介绍；您可以通过man id 来查看用法，用起来还是比较简单的；</p>
<p>finger 的用法</p>
<p>finger 选项 用户名1 用户名2 &#8230;</p>
<p>详细用法请参看man finger ；关于更为详细用法，我会在专门用户查询的文章来介绍；</p>
<p>如果finger 不加任何参数和用户，会显示出当前在线用户，和w命令类似；对比一下；不过各有测重；</p>
<p>[root@localhost ~]# w<br />
 14:02:42 up 1:03, 3 users, load average: 0.04, 0.15, 0.18<br />
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT<br />
linuxsir tty1 &#8211; 13:39 22:51 0.01s 0.01s -bash<br />
beinan tty2 &#8211; 13:53 8:48 11.62s 0.00s /bin/sh /usr/X1<br />
beinan pts/0 :0.0 13:57 0.00s 0.14s 1.08s gnome-terminal<br />
[root@localhost ~]# finger<br />
Login Name Tty Idle Login Time Office Office Phone<br />
beinan beinan sun tty2 8 Oct 18 13:53<br />
beinan beinan sun pts/0 Oct 18 13:57 (:0.0)<br />
linuxsir linuxsir open tty1 22 Oct 18 13:39 linuxsir o +1-389-866-771</p>
<p>如果我们在finger 后面加上用户名，就可以看到用户更为详细的信息，可以一次查看多个用户，用空格分开，比如下面的例子中，我们一次查询两个用户beinan和linuxsir的信息；</p>
<p>[root@localhost ~]# finger beinan linuxsir<br />
Login: beinan 注：用户名（也是登录名） Name: beinan sun （用户名全称）<br />
Directory: /home/beinan 注：家目录 Shell: /bin/bash 注：所用SHELL类型<br />
On since Tue Oct 18 13:53 (CST) on tty2 10 minutes 55 seconds idle 注：空闲时间；<br />
On since Tue Oct 18 13:57 (CST) on pts/0 from :0.0<br />
No mail.<br />
No Plan.<br />
Login: linuxsir Name: linuxsir open<br />
Directory: /home/linuxsir Shell: /bin/bash<br />
Office: linuxsir office, +1-389-866-7715<br />
On since Tue Oct 18 13:39 (CST) on tty1 24 minutes 58 seconds idle<br />
No mail.<br />
No Plan.</p>
<p>3）用户组查询的办法；</p>
<p>我们可以通过用户来查询所归属的组，用groups 来查询；比如我查询beinan和linuxsir 所归属的组，我们可以用groups 来查询；</p>
<p>[root@localhost ~]# groups beinan linuxsir<br />
beinan : beinan<br />
linuxsir : linuxsir root beinan<br />
注：这是通过groups 同时查看了用户beinan和linuxsir所归属的组；</p>
<p>2、通过修改用户（User）和用户组（Group）配置文件的办法来添加；</p>
<p>由于我们已经在前面说过，可以通过修改配置文件的办法来管理用户，所以此主题应该包括此内容；当然通过用户及用户组管理工具（比如 adduser、userdel、usermod 、userinfo、groupadd 、groupdel 、groupmod等）也是可以的，通过管理工具对用户的管理我们将要在专门一篇文章中介绍；</p>
<p>通过修改用户（User）和用户组（Group）配置文件的方法管理用户之用户的添加流程；</p>
<p>我们先以添加用户为例，对用户的删除和修改都比较简单；</p>
<p>1）修改 /etc/passwd ，添加用户记录；</p>
<p>我们按/etc/passwd的格式的约定来添加新的用户记录；当然您要让一个用户失效，可以删除您想要删除的用户记录；值得注意的是，不能让UID 重复；</p>
<p>比如我想添加lanhaitun 这个用户，我发现UID 508没有用户用，并且我想把其用户组也设置为lanhaitun ，用户组的GID 也设置为508,如果GID 没有占用的话；</p>
<p>我们要打开 /etc/passwd ，在最下面加一行；</p>
<p>lanhaitun:x:508:508::/home/lanhaitun:/bin/bash</p>
<p>然后执行pwconv ，让/etc/passwd 和/etc/shadow同步，您可以查看 /etc/shadow的内容是否同步；</p>
<p>[root@localhost beinan]# pwconv</p>
<p>2）修改/etc/group</p>
<p>首先，我们得查看是否有lanhaitun用户组，以及GID 508 是否被其它用户组占用；</p>
<p>[root@localhost ~]# more /etc/group |grep lanhaitun<br />
[root@localhost ~]# more /etc/group |grep 508</p>
<p>通过查看，我们发现没有被占用；所以我们要添加lanhaitun 的记录到 /etc/group</p>
<p>lanhaitun:x:508:</p>
<p>其次，是运行 grpconv 来同步/etc/group 和/etc/gshadow内容，您可以通过查看/etc/gshadow的内容变化确认是不是添加组成功了；</p>
<p>[root@localhost beinan]# grpconv</p>
<p>3）创建用户的家目录，并把用户启动文件也复制过去；</p>
<p>创建用户的家目录，我们要以/etc/passwd 中添加的新用户的记录为准，我们在/etc/passwd 中添加新用户lanhaitun ，她的家目录是处于/home/lanhaitun ；另外我们还需要把/etc/skel 目录下的.*隐藏文件复制过去；</p>
<p>[root@localhost ~]# cp -R /etc/skel/ /home/lanhaitun<br />
[root@localhost ~]# ls -la /home/lanhaitun/<br />
总用量 48<br />
drwxr-xr-x 3 root root 4096 10月 18 14:53 .<br />
drwxr-xr-x 10 root root 4096 10月 18 14:53 ..<br />
-rw-r&#8211;r&#8211; 1 root root 24 10月 18 14:53 .bash_logout<br />
-rw-r&#8211;r&#8211; 1 root root 191 10月 18 14:53 .bash_profile<br />
-rw-r&#8211;r&#8211; 1 root root 124 10月 18 14:53 .bashrc<br />
-rw-r&#8211;r&#8211; 1 root root 5619 10月 18 14:53 .canna<br />
-rw-r&#8211;r&#8211; 1 root root 438 10月 18 14:53 .emacs<br />
-rw-r&#8211;r&#8211; 1 root root 120 10月 18 14:53 .gtkrc<br />
drwxr-xr-x 3 root root 4096 10月 18 14:53 .kde<br />
-rw-r&#8211;r&#8211; 1 root root 658 10月 18 14:53 .zshrc</p>
<p>4）改变新增用户家目录的属主和权限；</p>
<p>我们发现新增用户的家目录的属主目前是root ，并且家目录下的隐藏文件也是root权限；</p>
<p>[root@localhost ~]# ls -ld /home/lanhaitun/<br />
drwxr-xr-x 3 root root 4096 10月 18 14:53 /home/lanhaitun/</p>
<p>所以我们要通过chown 命令来改变/home/lanhaitun目录归属为lanhaitun用户；</p>
<p>[root@localhost ~]# chown -R lanhaitun:lanhaitun /home/lanhaitun</p>
<p>查看是否已经更换了属主为lanhaitun用户所有；</p>
<p>[root@localhost ~]# ls -ld /home/lanhaitun/<br />
drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/<br />
[root@localhost ~]# ls -la /home/lanhaitun/<br />
总用量 48<br />
drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .<br />
drwxr-xr-x 10 root root 4096 10月 18 14:53 ..<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 24 10月 18 14:53 .bash_logout<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 191 10月 18 14:53 .bash_profile<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 124 10月 18 14:53 .bashrc<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 5619 10月 18 14:53 .canna<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 438 10月 18 14:53 .emacs<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 120 10月 18 14:53 .gtkrc<br />
drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .kde<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 658 10月 18 14:53 .zshrc</p>
<p>看来已经实现了；</p>
<p>但这样还是不够的，因为/home/lanhaitun/的目录权限可能会过于公开；</p>
<p>drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/</p>
<p>我们看到 /home/lanhaitun/ 目录的权限为 drwxr-xr-x ，也就是同组用户和其它用户组所能查看，为了保密，我们有理由把新增用户家目录的权限设置为只有其自己可读可写可执行；于是&#8230; &#8230;</p>
<p>[root@localhost ~]# chmod 700 /home/lanhaitun/<br />
[root@localhost ~]# ls -ld /home/lanhaitun/<br />
drwx&#8212;&#8212; 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/</p>
<p>我们用其它用户，当然得把具有超级权限的root用户除外；比如我以beinan用户来查看lanhaitun的家目录会得到如下信息；</p>
<p>[beinan@localhost ~]$ ls -la /home/lanhaitun/<br />
ls: /home/lanhaitun/: 权限不够</p>
<p>如此看来，lanhaitun用户的家目录是安全的 <img src='http://www.tisswb.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>5）设置新增用户的密码；</p>
<p>以上各步骤都就序了，我们得为新增用户设置密码了；要通过passwd 命令来生成；这个没有办法通过修改文件解决；</p>
<p>passwd 的用法：</p>
<p>passwd 用户<br />
[root@localhost ~]# passwd lanhaitun<br />
Changing password for user lanhaitun.<br />
New UNIX password: 注：输入您的密码<br />
Retype new UNIX password: 再输入一次<br />
passwd: all authentication tokens updated successfully. 注：设置密码成功</p>
<p>6）测试添增用户是否成功；</p>
<p>您可以用新增用户登录测试，也可以通过su 来切换用户测试；</p>
<p>[beinan@localhost ~]$ su lanhaitun<br />
Password:<br />
[lanhaitun@localhost beinan]$ cd ~<br />
[lanhaitun@localhost ~]$ pwd<br />
/home/lanhaitun<br />
[lanhaitun@localhost ~]$ ls -la<br />
总用量 52<br />
drwx&#8212;&#8212; 3 lanhaitun lanhaitun 4096 10月 18 15:15 .<br />
drwxr-xr-x 10 root root 4096 10月 18 14:53 ..<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 24 10月 18 14:53 .bash_logout<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 191 10月 18 14:53 .bash_profile<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 124 10月 18 14:53 .bashrc<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 5619 10月 18 14:53 .canna<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 438 10月 18 14:53 .emacs<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 120 10月 18 14:53 .gtkrc<br />
drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .kde<br />
-rw&#8212;&#8212;- 1 lanhaitun lanhaitun 66 10月 18 15:15 .xauthOhEoTk<br />
-rw-r&#8211;r&#8211; 1 lanhaitun lanhaitun 658 10月 18 14:53 .zshrc<br />
[lanhaitun@localhost ~]$ mkdir testdir<br />
[lanhaitun@localhost ~]$ ls -lh<br />
总用量 4.0K<br />
drwxrwxr-x 2 lanhaitun lanhaitun 4.0K 10月 18 15:16 testdir</p>
<p>通过上面一系列动作，我们会发现所创建的lanhaitun用户已经成功；</p>
<p>2、通过修改用户（User）和用户组（Group）配置文件的办法来修改用户或用户组；</p>
<p>我们可以修改/etc/passwd 和/etc/group 来达到修改用户和用户所归属的组，这个过程和添加新用户时差不多；比如我想修改lanhaitun的用户名全称、公司以及电话等信息；我们可以修改/etc/passwd 实现；</p>
<p>1）修改用户信息；</p>
<p>lanhaitun:x:508:508::/home/lanhaitun:/bin/bash 注：这是初始记录；</p>
<p>我们可以修改为</p>
<p>lanhaitun:x:508:508:lanhaitun wu,Office Dalian,13000000000:/home/lanhaitun:/bin/bash</p>
<p>当然我们还可以修改用户的bash 类型，家目录等，当然如果修改家目录，还得进行建家目录、属主和权限的操作，这和前面添加用户的办法在程序上有些是相同的；</p>
<p>修改完成后，我们要进行pwconv 同步，通过finger 来查看用户的信息等；</p>
<p>[root@localhost lanhaitun]# pwconv<br />
[root@localhost lanhaitun]# finger lanhaitun<br />
Login: lanhaitun Name: lanhaitun wu<br />
Directory: /home/lanhaitun Shell: /bin/bash<br />
Office: Office Dalian, +1-300-000-0000<br />
Never logged in.<br />
No mail.<br />
No Plan.</p>
<p>2）修改用户所归属的组，可以通过/etc/group 修改实现；</p>
<p>当然修改用户和用户组，不仅能通过修改配置文件来实现，还能过过 usermod 及chfn来实现；我将在以后的文档中写一写，也比较简单；您可以通过man来查看用法；在这里我们先讲一讲如何通过修改配置文件来达到目的；</p>
<p>如果我们想把lanhaitun 这个用户归属到root用户组，所以我们还能修改/etc/group 的办法来达到目的；找到/etc/group 中的root开头的一行，按其规划加入lanhaitun；</p>
<p>root:x:0:root,lanhaitun</p>
<p>如果不明白，看前面/etc/group的解释，谢谢；</p>
<p>然后执行 grpconv 命令来同步/etc/group 和/etc/gshadow两个文件的内容；</p>
<p>[root@localhost ~]# grpconv</p>
<p>查看lanhaitun归属组的信息；</p>
<p>[root@localhost ~]# id lanhaitun<br />
uid=508(lanhaitun) gid=508(lanhaitun) groups=508(lanhaitun),0(root)</p>
<p>3）删除用户及用户组的办法；</p>
<p>这个比较简单，我们可以通过删除/etc/passwd 和/etc/group 相应的用户和用户组记录就能达到目的，也能过过userdel 和groupdel 来实现对用户及用户组的删除；</p>
<p>如果是通过修改用户和用户组配置文件的办法来删除用户，就是删除相应的记录就行了，如果不想保留其家目录，删除就是了。</p>
<p>[root@localhost ~]# userdel lanhaitun<br />
[root@localhost ~]# userdel -r lanhaitun</p>
<p>注：可以用userdel 来删除lanhaitun 用户，我们看到第二个例子中多了一个参数-r ，第一个例子是说只删除lanhaitun用户，其家目录和mail等仍会保存；加上-r 参数，是删除家目录及mail等；所以要小心操作；用userdel 删除用户的同时，也会把其用户组删除；我们可以通过/etc/passwd 和/etc/group 的内容变化来查看；</p>
<p>后记：</p>
<p>通过对用户和用户组相关文件的解说，能让我们明白在Linux操作系统中，系统配置文件的重要性，另外也从侧面说明了Linux系统的灵活性，解决问题办法有好多，条条大路通罗马；我希望通过本文给初学者一点提示是:Linux的使用并不难，难的是我们不去思考；</p>
<p>这是我完成的第二篇用户管理的文档，虽然写的可能没有条理，但我实在不知道如何安排文档让其更有条理性，我只是根据自己的学习经历在写，或许对您有所启发和帮助，请多多指正；</p>
<p>在以后关于用户管理的文档中，我会写通过用户管理工具来实现对用户的管理，最好是我有这个能力，但愿吧；</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/50.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LAMP系统性能调优(1): 理解 LAMP 架构</title>
		<link>http://www.tisswb.com/archives/23.html</link>
		<comments>http://www.tisswb.com/archives/23.html#comments</comments>
		<pubDate>Tue, 01 Apr 2008 15:56:01 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Web服务器]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=23</guid>
		<description><![CDATA[Linux、Apache、MySQL 和 PHP（或 Perl）是许多 Web 应用程序的基础 —— 从 to-do 列表到 blog，再到电子商务站点。WordPress 和 Pligg 是两个支持大容量 Web 站点的常用软件包。这种架构简称为 LAMP。几乎每个 Linux 发布版都包含 Apache、MySQL、PHP 和 Perl，所以安装 LAMP 软件是非常容易的。
安装的简便性使人误以为这些软件会自行顺利地运行，但是实际情况并非如此。最终，应用程序的负载会超出后端服务器自带设置的处理能力，应用程序的性能会降低。LAMP 安装需要不断监控、调优和评估。
系统调优对于不同的人有不同的含义。本系列主要关注 LAMP 组件（Linux、Apache、MySQL 和 PHP）的调优。对应用程序本身进行调优是另一个复杂的问题。应用程序和后端服务器之间存在一种共生关系：未能适当调优的服务器甚至会使最好的应用程序在负载之下崩溃，而借助充分的调优，完全可以避免编写得很糟糕的应用程序使服务器缓慢如牛。幸运的是，正确的系统调优和监视可以指出应用程序中的问题。
<span class="readmore"><a href="http://www.tisswb.com/archives/23.html" title="LAMP系统性能调优(1): 理解 LAMP 架构" target="_blank">阅读全文——共6380字</a></span>]]></description>
			<content:encoded><![CDATA[<p>Linux、Apache、MySQL 和 PHP（或 Perl）是许多 Web 应用程序的基础 —— 从 to-do 列表到 blog，再到电子商务站点。WordPress 和 Pligg 是两个支持大容量 Web 站点的常用软件包。这种架构简称为 LAMP。几乎每个 Linux 发布版都包含 Apache、MySQL、PHP 和 Perl，所以安装 LAMP 软件是非常容易的。</p>
<p>安装的简便性使人误以为这些软件会自行顺利地运行，但是实际情况并非如此。最终，应用程序的负载会超出后端服务器自带设置的处理能力，应用程序的性能会降低。LAMP 安装需要不断监控、调优和评估。</p>
<p>系统调优对于不同的人有不同的含义。本系列主要关注 LAMP 组件（Linux、Apache、MySQL 和 PHP）的调优。对应用程序本身进行调优是另一个复杂的问题。应用程序和后端服务器之间存在一种共生关系：未能适当调优的服务器甚至会使最好的应用程序在负载之下崩溃，而借助充分的调优，完全可以避免编写得很糟糕的应用程序使服务器缓慢如牛。幸运的是，正确的系统调优和监视可以指出应用程序中的问题。</p>
<p><a name="N10065"><span class="atitle">LAMP 架构</span></a></p>
<p>对任何系统进行调优的第一步都是了解它的工作原理。按照最简单的形式，基于 LAMP 的应用程序是用 PHP 这样的脚本语言编写的，它们作为 Linux 主机上运行的 Apache Web 服务器的一部分运行。</p>
<p>PHP 应用程序通过请求的 URL、所有表单数据和已捕获的任意会话信息从客户机获得信息，从而确定应该执行什么操作。如有必要，服务器会从 MySQL 数据库（也在 Linux 上运行）获得信息，将这些信息与一些 Hypertext Markup Language（HTML）模板组合在一起，并将结果返回给客户机。当用户在应用程序中导航时，这个过程重复进行；当多个用户访问系统时，这个过程会并发进行。但是，数据流不是单向的，因为可以用来自用户的信息更新数据库，包括会话数据、统计数据（包括投票）和用户提交的内容（比如评论或站点更新）。除了动态元素之外，还有静态元素，比如图像、JavaScript 代码和层叠样式表（CSS）。</p>
<p>在研究 LAMP 系统中的请求流之后，就来看看可能出现性能瓶颈的地方。数据库提供许多动态信息，所以数据库对查询的响应延迟都会反映在客户机中。Web 服务器必须能够快速地执行脚本，还要能够处理多个并发请求。最后，底层操作系统必须处于良好的状态才能支持应用程序。通过网络在不同服务器之间共享文件的其他设置也可能成为瓶颈。</p>
<p><a name="N1008C"><span class="atitle">度量性能</span></a></p>
<p>持续地对性能进行度量在两个方面有帮助。首先，度量可以帮助了解性能趋势，包括好坏两方面的趋势。作为一个简单的方法，查看一下 Web 服务器上的中央处理单元（CPU）使用率，就可以了解 CPU 是否负载过重。同样，查看过去使用的总带宽并推断未来的变化，可以帮助判断什么时候需要进行网络升级。这些度量最好与其他度量和观测结合考虑。例如，当用户抱怨应用程序太慢时，可以检查磁盘操作是否达到了最大容量。</p>
<p>性能度量的第二个用途是，判断调优是对系统性能有帮助，还是使它更糟糕了。方法是比较修改之前和之后的度量结果。但是，为了进行有效的比较，每次应该只修改一个设置，然后对适当的指标进行比较以判断修改的效果。每次只修改一个设置的原因应该是很明显的：同时做出的两个修改很可能会相互影响。选择用来进行比较的指标比较微妙。</p>
<p>选择的指标必须能够反映应用程序用户感觉到的响应。如果一项修改的目标是减少数据库的内存占用量，那么取消各种缓冲区肯定会有帮助，但是这会牺牲查询速度和应用程序性能。所以，应该选择应用程序响应时间这样的指标，这会使调优向着正确的方向发展，而不仅仅是针对数据库内存使用量。</p>
<p>可以以许多方式度量应用程序响应时间。最简单的方法可能是使用 <code>curl</code> 命令，见清单 1。<br />
<a name="list1"><strong>清单 1. 使用 cURL 度量 Web 站点的响应时间</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<td class="code-outline">$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.canada.com 0.081:0.272:0.779</td>
</tr>
</tbody>
</table>
<p> </p>
<p>清单 1 给出对一个流行的新闻站点执行 <code>curl</code> 命令的情况。输出通常是 HTML 代码，通过 <code>-o</code> 参数发送到 <code>/dev/null</code>。<code>-s</code> 参数去掉所有状态信息。<code>-w</code> 参数让 <code>curl</code> 写出表 1 列出的计时器的状态信息：<br />
<a name="table1"><strong>表 1. curl 使用的计时器</strong></a></p>
<table class="data-table-1" border="0" cellspacing="0" cellpadding="0" width="85%" summary="Timers">
<tbody>
<tr>
<th scope="col">计时器</th>
<th scope="col">描述</th>
</tr>
<tr>
<th class="tb-row" scope="row">time_connect</th>
<td>建立到服务器的 TCP 连接所用的时间</td>
</tr>
<tr>
<th class="tb-row" scope="row">time_starttransfer</th>
<td>在发出请求之后，Web 服务器返回数据的第一个字节所用的时间</td>
</tr>
<tr>
<th class="tb-row" scope="row">time_total</th>
<td>完成请求所用的时间</td>
</tr>
</tbody>
</table>
<p> </p>
<p>这些计时器都相对于事务的起始时间，甚至要先于 Domain Name Service（DNS）查询。因此，在发出请求之后，Web 服务器处理请求并开始发回数据所用的时间是 0.272 &#8211; 0.081 = 0.191 秒。客户机从服务器下载数据所用的时间是 0.779 &#8211; 0.272 = 0.507 秒。</p>
<p>通过观察 <code>curl</code> 数据及其随时间变化的趋势，可以很好地了解站点对用户的响应性。</p>
<p>当然，Web 站点不仅仅由页面组成。它还有图像、JavaScript 代码、CSS 和 cookie 要处理。<code>curl</code> 很适合了解单一元素的响应时间，但是有时候需要了解整个页面的装载速度。</p>
<p>用于 Firefox 浏览器的 Tamper Data 扩展（参见 <a href="http://www.tisswb.cn/wp-admin/#resources"><span style="color: #5c81a7;">参考资料</span></a> 一节中的链接）可以在日志中记录 Web 浏览器发出的每个请求，并显示每个请求所用的下载时间。使用这个扩展的方法是，选择 <strong>Tools &gt; Tamper Data</strong> 来打开 Ongoing requests 窗口。装载要考察的页面，然后就会看到浏览器发出的每个请求的状态和装载每个元素所用的时间。图 1 给出装载 developerWorks 主页的结果。<br />
<a name="fig1"><strong>图 1. 用于装载 developerWorks 主页的请求细目</strong></a><br />
 <img class="alignnone" src="http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-1/tamper1.jpg" alt="" /></p>
<p>每一行描述一个元素的装载情况。显示的数据包括发出请求的时间、装载所用的时间、大小和结果。Duration 栏列出装载元素本身所用的时间，Total Duration 栏列出所有子元素所用的时间。在图 1 中，装载主要页面所用的时间是 516 毫秒（ms），但是装载所有东西并显示整个页面所用的时间是 5101 ms。</p>
<p>Tamper Data 扩展有一种有用的模式，将页面装载数据的输出绘制成图形。右击 Ongoing requests 窗口上半部分的任何地方，并选择 <strong>Graph all</strong>。图 2 显示图 1 中数据的图形化视图。<br />
<a name="fig2"><strong>图 2. 用于装载 developerWorks 主页的请求的图形化视图</strong></a><br />
 <img src="http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-1/tamper2.jpg" alt="" width="569" height="389" /></p>
<p>在图 2 中，每个请求的持续时间显示为深蓝色，并相对于页面装载的启始时间显示。所以，可以看出哪些请求使整个页面的装载变慢了。</p>
<p>尽管关注的重点是页面装载时间和用户体验，但是也不要忽视核心系统指标，比如磁盘、内存和网络。有许多实用程序可以捕获这些信息；其中最有帮助的可能是 <code>sar</code>、<code>vmstat</code> 和 <code>iostat</code>。关于这些工具的更多信息，请参见 <a href="http://www.tisswb.cn/wp-admin/#resources"><span style="color: #5c81a7;">参考资料</span></a> 一节.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td> </td>
</tr>
</tbody>
</table>
<p><a name="N1015F"><span class="atitle">基本系统调节</span></a></p>
<p>在对系统的 Apache、PHP 和 MySQL 组件进行调优之前，应该花一些时间确保底层 Linux 组件的运行正常。还应该对正在运行的服务进行缩减，只运行需要的那些服务。这不但是一种良好的安全实践，而且可以节省内存和 CPU 时间。</p>
<p><a name="N10169"><span class="smalltitle"><strong><span style="font-size: small; font-family: Arial;">一些快速的内核调优措施</span></strong></span></a></p>
<p>大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol（TCP）参数。可以修改这些参数来分配更多的内存，从而改进网络性能。设置内核参数的方法是通过 <code>proc</code> 接口，也就是通过读写 <code>/proc</code> 中的值。幸运的是，<code>sysctl</code> 可以读取 <code>/etc/sysctl.conf</code> 中的值并根据需要填充 <code>/proc</code>，这样就能够更轻松地管理这些参数。清单 2 展示在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。<br />
<a name="list2"><strong>清单 2. 包含较为激进的网络设置的 /etc/sysctl.conf</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<td class="code-outline"># Use TCP syncookies when needed net.ipv4.tcp_syncookies = 1 # Enable TCP window scaling net.ipv4.tcp_window_scaling: = 1 # Increase TCP max buffer size net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Increase number of ports available net.ipv4.ip_local_port_range = 1024 65000</td>
</tr>
</tbody>
</table>
<p> </p>
<p>将这些设置添加到 <code>/etc/sysctl.conf</code> 的现有内容中。第一个设置启用 TCP SYN cookie。当从客户机发来新的 TCP 连接时，数据包设置了 SYN 位，服务器就为这个半开的连接创建一个条目，并用一个 SYN-ACK 数据包进行响应。在正常操作中，远程客户机用一个 ACK 数据包进行响应，这会使半开的连接转换为全开的。有一种称为 <em>SYN 泛滥（SYN flood）</em> 的网络攻击，它使 ACK 数据包无法返回，导致服务器用光内存空间，无法处理到来的连接。SYN cookie 特性可以识别出这种情况，并使用一种优雅的方法保留队列中的空间（细节参见 <a href="http://www.tisswb.cn/wp-admin/#resources"><span style="color: #5c81a7;">参考资料</span></a> 一节）。大多数系统都默认启用这个特性，但是确保配置这个特性更可靠。</p>
<p>启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包，默认设置是最多 64 KB，在与延迟比较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位，从而增加窗口大小。</p>
<p>后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据，从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发送数据的能力。</p>
<p>最后一个配置项增加可用的本地端口数量，这样就增加了可以同时服务的最大连接数量。</p>
<p>在下一次引导系统时，或者下一次运行 <code>sysctl -p /etc/sysctl.conf</code> 时，这些设置就会生效。</p>
<p><a name="N101AF"><span class="smalltitle"><strong><span style="font-size: small; font-family: Arial;">配置磁盘来提高性能</span></strong></span></a></p>
<p>磁盘在 LAMP 架构中扮演着重要的角色。静态文件、模板和代码都来自磁盘，组成数据库的数据表和索引也来自磁盘。对磁盘的许多调优（尤其是对于数据库）集中于避免磁盘访问，因为磁盘访问的延迟相当高。因此，花一些时间对磁盘硬件进行优化是有意义的。</p>
<p>首先要做的是，确保在文件系统上禁用 <code>atime</code> 日志记录特性。<code>atime</code> 是最近访问文件的时间，每当访问文件时，底层文件系统必须记录这个时间戳。因为系统管理员很少使用 <code>atime</code>，禁用它可以减少磁盘访问时间。禁用这个特性的方法是，在 <code>/etc/fstab</code> 的第四列中添加 <code>noatime</code> 选项。清单 3 给出了一个配置示例。<br />
<a name="list3"><strong>清单 3. 演示如何启用 noatime 的 fstab 示例</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<td class="code-outline">/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1 LABEL=/boot /boot ext3 defaults,noatime 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 LABEL=SWAP-hdb2 swap swap defaults 0 0 LABEL=SWAP-hda3 swap swap defaults 0 0</td>
</tr>
</tbody>
</table>
<p> </p>
<p>在清单 3 中只修改了 ext3 文件系统，因为 <code>noatime</code> 只对驻留在磁盘上的文件系统有帮助。为让这一修改生效，不需要重新引导；只需重新挂装每个文件系统。例如，为了重新挂装根文件系统，运行 <code>mount / -o remount</code>。</p>
<p>有多种磁盘硬件组合，而且 Linux 不一定能够探测出访问磁盘的最佳方式。可以使用 <code>hdparm</code> 命令查明和设置用来访问 IDE 磁盘的方法。<code>hdparm -t /path/to/device</code> 执行速度测试，可以将这个测试结果作为性能基准。为了使结果尽可能准确，在运行这个命令时系统应该是空闲的。清单 4 给出在 <code>hda</code> 上执行速度测试的结果。<br />
<a name="list4"><strong>清单 4. 在 /dev/hd 上执行的速度测试</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<td class="code-outline"># hdparm -t /dev/hda /dev/hda: Timing buffered disk reads: 182 MB in 3.02 seconds = 60.31 MB/sec</td>
</tr>
</tbody>
</table>
<p> </p>
<p>这一测试说明，在这个磁盘上读取数据的速度是大约每秒 60 MB。</p>
<p>在尝试一些磁盘调优选项之前，必须注意一个问题。错误的设置可能损害文件系统。有时候会出现一个警告，指出这个选项与硬件不兼容；但是，有时候没有警告消息。因此，在将系统投入生产之前，必须对设置进行彻底的测试。在所有服务器上都采用标准的硬件也会有所帮助。</p>
<p>表 2 列出比较常用的一些选项。<br />
<a name="table2"><strong>表 2. hdparm 的常用选项</strong></a></p>
<table class="data-table-1" border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<th scope="col">选项</th>
<th scope="col">描述</th>
</tr>
<tr>
<th class="tb-row" scope="row">-vi</th>
<td>向磁盘查询它支持的设置以及它正在使用的设置。</td>
</tr>
<tr>
<th class="tb-row" scope="row">-c</th>
<td>查询/启用 (E)IDE 32 位 I/O 支持。<code>hdparm -c 1 /dev/hda</code> 启用这个设置。</td>
</tr>
<tr>
<th class="tb-row" scope="row">-m</th>
<td>查询/设置每中断多扇区模式。如果设置大于零，设置值就是每个中断可以传输的最大扇区数量。</td>
</tr>
<tr>
<th class="tb-row" scope="row">-d 1 -X</th>
<td>启用直接内存访问（DMA）传输并设置 IDE 传输模式。<code>hdparm</code> 手册页详细说明了在 <code>-X</code> 后面可以设置的数字。只有在 <code>-vi</code> 说明目前并未使用最快速的模式的情况下，才需要进行这个设置。</td>
</tr>
</tbody>
</table>
<p> </p>
<p>不幸的是，对于 Fiber Channel and Small Computer Systems Interface（SCSI）系统，调优依赖于具体的驱动器。</p>
<p>必须将有帮助的设置添加到启动脚本中，比如 <code>rc.local</code>。</p>
<p><a name="N10274"><span class="smalltitle"><strong><span style="font-size: small; font-family: Arial;">网络文件系统调优</span></strong></span></a></p>
<p>网络文件系统（NFS）是一种通过网络共享磁盘的方法。NFS 可以帮助确保每个主机具有相同数据的拷贝，并确保修改反映在所有节点上。但是，在默认情况下，NFS 的配置不适合大容量磁盘。</p>
<p>每个客户机应该用 <code>rsize=32768,wsize=32768,intr,noatime</code> 挂装远程文件系统，从而确保：</p>
<ul>
<li>使用大的读/写块（数字指定最大块大小，在这个示例中是 32KB）。</li>
<li>在挂起时 NFS 操作可以被中断。</li>
<li>不持续更新 <code>atime</code>。</li>
</ul>
<p> </p>
<p>可以将这些设置放在 <code>/etc/fstab</code> 中，见 <a href="http://www.tisswb.cn/wp-admin/#list3"><span style="color: #5c81a7;">清单 3</span></a>。如果使用自动挂装器，那么应该将这些设置放在适当的 <code>/etc/auto.*</code> 文件中。</p>
<p>在服务器端，一定要确保有足够的 NFS 内核线程来处理所有客户机。在默认情况下，只启动一个线程，但是 Red Hat 和 Fedora 系统会启动 8 个线程。对于繁忙的 NFS 服务器，应该提高这个数字，比如 32 或 64。可以用 <code>nfsstat -rc</code> 命令评估客户机，了解是否有阻塞的现象，这个命令显示客户机远程过程调用（RPC）统计数据。清单 5 显示一个 Web 服务器的客户机统计数据。<br />
<a name="list5"><strong>清单 5. 显示 NFS 客户机的 RPC 统计数据</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="85%">
<tbody>
<tr>
<td class="code-outline"># nfsstat -rc Client rpc stats: calls retrans authrefrsh 1465903813 0 0</td>
</tr>
</tbody>
</table>
<p> </p>
<p>第二列 <code>retrans</code> 是零，这表示从上一次重新引导以来没有出现需要重新传输的情况。如果这个数字比较大，就应该考虑增加 NFS 内核线程。设置方法是将所需的线程数量传递给 <code>rpc.nfsd</code>，比如 <code>rpc.nfsd 128</code> 会启动 128 个线程。任何时候都可以进行这种设置。线程会根据需要启动或销毁。同样，这个设置应该放在启动脚本中，尤其是在系统上启用 NFS 的脚本。</p>
<p>关于 NFS，最后要注意一点：如果可能的话，应该避免使用 NFSv2，因为 NFSv2 的性能比 v3 和 v4 差得多。在现代的 Linux 发行版中这应该不是问题，但是可以在服务器上检查 <code>nfsstat</code> 的输出，了解是否有任何 NFSv2 调用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/23.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>设置Sysctl.conf用以提高Linux的性能</title>
		<link>http://www.tisswb.com/archives/22.html</link>
		<comments>http://www.tisswb.com/archives/22.html#comments</comments>
		<pubDate>Tue, 01 Apr 2008 15:46:31 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sysctl.conf优化]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=22</guid>
		<description><![CDATA[Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项， 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点，sysctl(8) 提供两个功能：读取和修改系统设置。
查看所有可读变量：
% sysctl -a
读一个指定的变量，例如 kern.maxproc：
% sysctl kern.maxproc kern.maxproc: 1044
要设置一个指定的变量，直接用 variable=value 这样的语法：
# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -&#62; 5000
您可以使用sysctl修改系统变量，也可以通过编辑sysctl.conf文件来修改系统变量。sysctl.conf 看起来很像 rc.conf。它用 variable=value 的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。
<span class="readmore"><a href="http://www.tisswb.com/archives/22.html" title="设置Sysctl.conf用以提高Linux的性能" target="_blank">阅读全文——共3637字</a></span>]]></description>
			<content:encoded><![CDATA[<p style="TEXT-INDENT: 2em">Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项， 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点，sysctl(8) 提供两个功能：读取和修改系统设置。</p>
<p style="TEXT-INDENT: 2em">查看所有可读变量：</p>
<p style="TEXT-INDENT: 2em">% sysctl -a</p>
<p style="TEXT-INDENT: 2em">读一个指定的变量，例如 kern.maxproc：</p>
<p style="TEXT-INDENT: 2em">% sysctl kern.maxproc kern.maxproc: 1044</p>
<p style="TEXT-INDENT: 2em">要设置一个指定的变量，直接用 variable=value 这样的语法：</p>
<p style="TEXT-INDENT: 2em"># sysctl kern.maxfiles=5000</p>
<p style="TEXT-INDENT: 2em">kern.maxfiles: 2088 -&gt; 5000</p>
<p style="TEXT-INDENT: 2em">您可以使用sysctl修改系统变量，也可以通过编辑sysctl.conf文件来修改系统变量。sysctl.conf 看起来很像 rc.conf。它用 variable=value 的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。</p>
<p style="TEXT-INDENT: 2em">sysctl 变量的设置通常是字符串、数字或者布尔型。 (布尔型用 1 来表示&#8217;yes&#8217;，用 0 来表示&#8217;no&#8217;)。</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">sysctl -w kernel.sysrq=0</p>
<p style="TEXT-INDENT: 2em">sysctl -w kernel.core_uses_pid=1</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.conf.default.accept_redirects=0</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.conf.default.accept_source_route=0</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.conf.default.rp_filter=1</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_syncookies=1</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_max_syn_backlog=2048</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_fin_timeout=30</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_synack_retries=2</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_keepalive_time=3600</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_window_scaling=1</p>
<p style="TEXT-INDENT: 2em">sysctl -w net.ipv4.tcp_sack=1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">配置sysctl</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">编辑此文件：</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">vi /etc/sysctl.conf</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">如果该文件为空，则输入以下内容，否则请根据情况自己做调整：</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Controls source route verification</p>
<p style="TEXT-INDENT: 2em"># Default should work for all interfaces</p>
<p style="TEXT-INDENT: 2em">net.ipv4.conf.default.rp_filter = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.all.rp_filter = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.lo.rp_filter = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.eth0.rp_filter = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Disables IP source routing</p>
<p style="TEXT-INDENT: 2em"># Default should work for all interfaces</p>
<p style="TEXT-INDENT: 2em">net.ipv4.conf.default.accept_source_route = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.all.accept_source_route = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.lo.accept_source_route = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.eth0.accept_source_route = 0</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Controls the System Request debugging functionality of the kernel</p>
<p style="TEXT-INDENT: 2em">kernel.sysrq = 0</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Controls whether core dumps will append the PID to the core filename.</p>
<p style="TEXT-INDENT: 2em"># Useful for debugging multi-threaded applications.</p>
<p style="TEXT-INDENT: 2em">kernel.core_uses_pid = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Increase maximum amount of memory allocated to shm</p>
<p style="TEXT-INDENT: 2em"># Only uncomment if needed!</p>
<p style="TEXT-INDENT: 2em"># kernel.shmmax = 67108864</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Disable ICMP Redirect Acceptance</p>
<p style="TEXT-INDENT: 2em"># Default should work for all interfaces</p>
<p style="TEXT-INDENT: 2em">net.ipv4.conf.default.accept_redirects = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.all.accept_redirects = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.lo.accept_redirects = 0</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.eth0.accept_redirects = 0</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets</p>
<p style="TEXT-INDENT: 2em"># Default should work for all interfaces</p>
<p style="TEXT-INDENT: 2em">net.ipv4.conf.default.log_martians = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.all.log_martians = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.lo.log_martians = 1</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.conf.eth0.log_martians = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Decrease the time default value for tcp_fin_timeout connection</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_fin_timeout = 25</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Decrease the time default value for tcp_keepalive_time connection</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_keepalive_time = 1200</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Turn on the tcp_window_scaling</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_window_scaling = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Turn on the tcp_sack</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_sack = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># tcp_fack should be on because of sack</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_fack = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Turn on the tcp_timestamps</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_timestamps = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Enable TCP SYN Cookie Protection</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_syncookies = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Enable ignoring broadcasts request</p>
<p style="TEXT-INDENT: 2em">net.ipv4.icmp_echo_ignore_broadcasts = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Enable bad error message Protection</p>
<p style="TEXT-INDENT: 2em">net.ipv4.icmp_ignore_bogus_error_responses = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Make more local ports available</p>
<p style="TEXT-INDENT: 2em"># net.ipv4.ip_local_port_range = 1024 65000</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Set TCP Re-Ordering value in kernel to ‘5′</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_reordering = 5</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Lower syn retry rates</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_synack_retries = 2</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_syn_retries = 3</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Set Max SYN Backlog to ‘2048′</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_max_syn_backlog = 2048</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Various Settings</p>
<p style="TEXT-INDENT: 2em">net.core.netdev_max_backlog = 1024</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Increase the maximum number of skb-heads to be cached</p>
<p style="TEXT-INDENT: 2em">net.core.hot_list_length = 256</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Increase the tcp-time-wait buckets pool size</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_max_tw_buckets = 360000</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># This will increase the amount of memory available for socket input/output queues</p>
<p style="TEXT-INDENT: 2em">net.core.rmem_default = 65535</p>
<p style="TEXT-INDENT: 2em">net.core.rmem_max = 8388608</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_rmem = 4096 87380 8388608</p>
<p style="TEXT-INDENT: 2em">net.core.wmem_default = 65535</p>
<p style="TEXT-INDENT: 2em">net.core.wmem_max = 8388608</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_wmem = 4096 65535 8388608</p>
<p style="TEXT-INDENT: 2em">net.ipv4.tcp_mem = 8388608 8388608 8388608</p>
<p style="TEXT-INDENT: 2em">net.core.optmem_max = 40960</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">如果希望屏蔽别人 ping 你的主机，则加入以下代码：</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"># Disable ping requests</p>
<p style="TEXT-INDENT: 2em">net.ipv4.icmp_echo_ignore_all = 1</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">编辑完成后，请执行以下命令使变动立即生效：</p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">/sbin/sysctl -p</p>
<p style="TEXT-INDENT: 2em">/sbin/sysctl -w net.ipv4.route.flush=1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/22.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux学习笔记——文件服务Vsftp</title>
		<link>http://www.tisswb.com/archives/12.html</link>
		<comments>http://www.tisswb.com/archives/12.html#comments</comments>
		<pubDate>Fri, 28 Mar 2008 08:17:10 +0000</pubDate>
		<dc:creator>笨二十一</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vsftp]]></category>

		<guid isPermaLink="false">http://www.tisswb.cn/?p=12</guid>
		<description><![CDATA[知识点：
1、FTP使用TCP连接和TCP端口
2、在进行通信时，FTP需要建立两个TCP连接：
一个用于控制信息，TCP端口号缺省为21
一个用于数据传输，TCP端口号缺省为20
3、Vsftp是一个基于GPL发布的类Unix系统上的FTP服务器
4、其名称中的VS即“Verysecure”的意思，可见安全性高。
配置：
1、查看是否安装了Vsftp
#rpm –qa vsftpd
<span class="readmore"><a href="http://www.tisswb.com/archives/12.html" title="Linux学习笔记——文件服务Vsftp" target="_blank">阅读全文——共5537字</a></span>]]></description>
			<content:encoded><![CDATA[<p>知识点：<br />
1、FTP使用TCP连接和TCP端口<br />
2、在进行通信时，FTP需要建立两个TCP连接：<br />
一个用于控制信息，TCP端口号缺省为21<br />
一个用于数据传输，TCP端口号缺省为20<br />
3、Vsftp是一个基于GPL发布的类Unix系统上的FTP服务器<br />
4、其名称中的VS即“Verysecure”的意思，可见安全性高。<br />
配置：<br />
1、查看是否安装了Vsftp<br />
#rpm –qa vsftpd<br />
2、安装<br />
放入第三张光盘<br />
#mount /mnt/cdrom<br />
#cd /mnt/cdrom/RedHat/RPMS<br />
#rpm –ivh vsftpd-1.1.3-8.i386.rpm<br />
#cd;eject<br />
3、Vsftp服务启动与停止<br />
#service vsftpd start 启动<br />
#service vsftpd stop 停止<br />
#service vsftpd restart 重启<br />
永久启动：＃setup<br />
#ps –ax | grep vsftpd 查看进程是否启动。<br />
#chkconfig –level 2345 vsftpd on 设置在系统启动时，自动启动进程。<br />
4、访问Vsftp<br />
进入 ftp 192.168.0.1<br />
输入密码进入后：ls 查看 put 上传 get下载<br />
离开bye<br />
5、配置文件<br />
主配置文件 /etc/vsftpd/vsftpd.conf<br />
用户控制文件 /etc/vsftpd.ftpusers 作用：指定哪些用户不能访问FTP，相当于一个黑名单<br />
主配置文件:<br />
option=value<br />
要注意的是，等号两边不能加空白，不然是不正确的设定。</p>
<p>＝＝＝ascii 设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
ascii_download_enable<br />
管控是否可用ASCII模式下载。默认值为NO。<br />
ascii_upload_enable<br />
管控是否可用ASCII模式上传。默认值为NO。</p>
<p>＝＝＝个别使用者设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
chroot_list_enable<br />
如果启动这项功能，则所有的本机使用者登入均可进到根目录之外的数据夹，除了列在/etc/vsftpd.chroot_list之中的使用者之外。默认值为NO。<br />
userlist_enable<br />
用法：YES/NO<br />
若是启动此功能，则会读取/etc/vsftpd.user_list 当中的使用者名称。此项功能可以在询问密码前就出现失败讯息，而不需要检验密码的程序。默认值为关闭。<br />
userlist_deny<br />
用法：YES/NO<br />
这个选项只有在userlist_enable启动时才会被检验。<br />
如果将这个选项设为YES，则在/etc/vsftpd.user_list 中的使用者将无法登入，<br />
若设为NO，则只有在/etc/vsftpd.user_list中的使用者才能登入。<br />
而且此项功能可以在询问密码前就出现错误讯息，而不需要检验密码的程序。<br />
user_config_dir<br />
定义个别使用者设定文件所在的目录，<br />
例如定义user_config_dir=/etc/vsftpd/userconf，且主机上有使用者test1,test2，那我们可以在user_config_dir 的目录新增文件名为test1以及test2。若是test1登入，则会读取user_config_dir下的test1 这个档案内的设定。<br />
默认值为无。</p>
<p>＝＝＝欢迎语设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
dirmessage_enable<br />
如果启动这个选项，使用者第一次进入一个目录时，会检查该目录下是否有.message这个档案，若是有，则会出现此档案的内容，通常这个档案会放置欢迎话语，或是对该目录的说明。默认值为开启。<br />
banner_file<br />
当使用者登入时，会显示此设定所在的档案内容，通常为欢迎话语或是说明。默认值为无。<br />
ftpd_banner<br />
这边可定义欢迎话语的字符串，相较于banner_file是档案的形式，而ftpd_banner是字串的格式。默认值为无。</p>
<p>＝＝＝特殊安全设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
chroot_local_user<br />
如果设定为YES，那么所有的本机的使用者都可以切换到根目录以外的数据夹。默认值值为NO。<br />
hide_ids<br />
如果启动这项功能，所有档案的拥有者与群组都为ftp，也就是使用者登入使用ls -al之类的指令，所看到的档案拥有者跟群组均为ftp。默认值为关闭。<br />
ls_recurse_enable<br />
若是启动此功能，则允许登入者使用ls -R 这个指令。默认值为NO。<br />
write_enable<br />
用法：YES/NO<br />
这个选项可以控制FTP的指令是否允许更改file system，譬如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE以及SITE。默认值为关闭。<br />
setproctitle_enable<br />
用法：YES/NO<br />
启动这项功能，vsftpd 会将所有联机的状况已不同的process 呈现出来，换句话说，使用ps -ef这类的指令就可以看到联机的状态。默认值为关闭。<br />
tcp_wrappers<br />
用法：YES/NO<br />
如果启动，则会将vsftpd与tcp_wrapper结合，也就是可以在/etc/hosts.allow与/etc/hosts.deny中定义允许或拒绝的来源地址。<br />
pam_service_name<br />
这边定义PAM所使用的名称，默认值为vsftpd。<br />
secure_chroot_dir<br />
这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限，当vsftpd不需要file system的权限时，就会将使用者限制在此数据夹中。默认值为/usr/share/empty。</p>
<p>＝＝＝纪录文件设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
xferlog_enable<br />
用法：YES/NO<br />
如果启动，上传与下载的信息将被完整纪录在底下xferlog_file 所定义的档案中。默认值为开启。<br />
xferlog_file<br />
这个选项可设定纪录文件所在的位置，默认值为/var/log/vsftpd.log。<br />
xferlog_std_format<br />
如果启动，则纪录文件将会写为xferlog 的标准格式，如同wu-ftpd一般。默认值为关闭。</p>
<p>＝＝＝逾时设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
accept_timeout<br />
接受建立联机的逾时设定，单位为秒。默认值为60。<br />
connect_timeout<br />
响应PORT 方式的数据联机的逾时设定，单位为秒。默认值为60。<br />
data_connection_timeout<br />
建立数据联机的逾时设定。默认值为300秒。<br />
idle_session_timeout<br />
发呆的逾时设定，若是超出这时间没有数据的传送或是指令的输入，则会强迫断线，单位为秒。默认值为300秒。</p>
<p>＝＝＝速率限制＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
anon_max_rate<br />
匿名登入所能使用的最大传输速度，单位为每秒多少bytes，0表示不限速度。默认值为0。<br />
local_max_rate<br />
本机使用者所能使用的最大传输速度，单位为每秒多少bytes，0表示不限速度。默认值为0。</p>
<p>＝＝＝新增档案权限设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
anon_umask<br />
匿名登入者新增档案时的umask 数值。默认值为077。<br />
file_open_mode<br />
上传档案的权限，与chmod 所使用的数值相同。默认值为0666。<br />
local_umask<br />
本机登入者新增档案时的umask 数值。默认值为077。</p>
<p>＝＝＝port 设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
connect_from_port_20<br />
用法：YES/NO<br />
若设为YES，则强迫ftp-data 的数据传送使用port 20。默认值为YES。<br />
ftp_data_port<br />
设定ftp 数据联机所使用的port。默认值为20。<br />
listen_port<br />
FTP server 所使用的port。默认值为21。<br />
pasv_max_port<br />
建立资料联机所可以使用port范围的上界，0表示任意。默认值为0。<br />
pasv_min_port<br />
建立资料联机所可以使用port范围的下界，0表示任意。默认值为0。</p>
<p>＝＝＝其它＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
anon_root<br />
使用匿名登入时，所登入的目录。默认值为无。<br />
local_enable<br />
用法：YES/NO<br />
启动此功能则允许本机使用者登入。默认值为YES。<br />
local_root<br />
本机使用者登入时，将被更换到定义的目录下。默认值为无。<br />
text_userdb_names<br />
用法：YES/NO<br />
当使用者登入后使用ls -al 之类的指令查询该档案的管理权时，默认值会出现拥有者的UID，而不是该档案拥有者的名称。若是希望出现拥有者的名称，则将此功能开启。默认值为NO。<br />
pasv_enable<br />
若是设为NO，则不允许使用PASV 的模式建立数据的联机。默认值为开启。</p>
<p>＝＝＝更换档案所有权＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
chown_uploads<br />
用法：YES/NO<br />
若是启动，所有匿名上传数据的拥有者将被更换为chown_username 当中所设定的使用者。这样的选项对于安全及管理，是很有用的。默认值为NO。<br />
chown_username<br />
这里可以定义当匿名登入者上传档案时，该档案的拥有者将被置换的使用者名称。默认值为root。</p>
<p>＝＝＝guest 设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
guest_enable<br />
用法：YES/NO<br />
若是启动这项功能，所有的非匿名登入者都视为guest。默认值为关闭。<br />
guest_username<br />
这里将定义guest 的使用者名称。默认值为ftp。</p>
<p>＝＝＝anonymous 设定＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
anonymous_enable<br />
用法：YES/NO<br />
管控使否允许匿名登入，YES 为允许匿名登入，NO 为不允许。默认值为YES。<br />
no_anon_password<br />
若是启动这项功能，则使用匿名登入时，不会询问密码。默认值为NO。<br />
anon_mkdir_write_enable<br />
用法：YES/NO<br />
如果设为YES，匿名登入者会被允许新增目录，当然，匿名使用者必须要有对上层目录的写入权。默认值为NO。<br />
anon_other_write_enable<br />
用法：YES/NO<br />
如果设为YES，匿名登入者会被允许更多于上传与建立目录之外的权限，譬如删除或是更名。默认值为NO。<br />
anon_upload_enable<br />
用法：YES/NO<br />
如果设为YES，匿名登入者会被允许上传目录的权限，当然，匿名使用者必须要有对上层目录的写入权。默认值为NO。<br />
anon_world_readable_only<br />
用法：YES/NO<br />
如果设为YES，匿名登入者会被允许下载可阅读的档案。默认值为YES。<br />
ftp_username<br />
定义匿名登入的使用者名称。默认值为ftp。<br />
deny_email_enable<br />
若是启动这项功能，则必须提供一个档案/etc/vsftpd.banner_emails，内容为email address。若是使用匿名登入，则会要求输入email address，若输入的email address在此档案内，则不允许联机。默认值为NO。</p>
<p>＝＝＝Standalone 选项＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
listen<br />
用法：YES/NO<br />
若是启动，则vsftpd将会以独立运作的方式执行，若是vsftpd独立执行，如RedHat Linux 9的默认值，则必须启动；若是vsftpd包含在xinetd之中，则必须关闭此功能，如RedHat Linux 8。在RedHat Linux 9中默认值为YES。<br />
listen_address<br />
若是vsftpd 使用standalone 的模式，可使用这个参数定义使用哪个IP address提供这项服务，若是主机上只有定义一个IP address，则此选项不需使用，若是有多个IP address，可定义在哪个IP address上提供ftp服务。若是不设定，则所有的IP address均会提供此服务。默认值为无。<br />
max_clients<br />
若是vsftpd使用standalone的模式，可使用这个参数定义最大的总联机数。超过这个数目将会拒绝联机，0表示不限。默认值为0。<br />
max_per_ip<br />
若是vsftpd使用standalone的模式，可使用这个参数定义每个ip address所可以联机的数目。超过这个数目将会拒绝联机，0表示不限。默认值为0。<br />
实验一、设置Chroot——用户不能切换目录<br />
因为默认情况下是可以切换目录的，所以是很不安全的。。<br />
1、限制所有用户不能切换目录<br />
chroot_local_user=YES<br />
2、设置指定的用户不能切换目录<br />
chroot_local_user=NO<br />
chroot_list_enable=YES<br />
chroot_list_file=/etc/vsftpd.chroot_list<br />
实验二、用Vsftp.user_list访问控制<br />
利用/etc/vsftpd.user_list<br />
A、设置在/etc/vsftpd.user_list文件中用户不能访问，其它用户可以访问<br />
userlist_enable=YES<br />
userlist_deny=YES<br />
userlist_file=/etc/vsftpd.user_list<br />
B、设置在/etc/vsftpd.user_list文件中的用户能访问国，其它用户不可以访问。<br />
userlist_enable=YES<br />
userlist_deny=NO<br />
userlist_file=/etc/vsftpd.user_list<br />
实验三、简单虚拟用户<br />
让abc用户不能登录系统，只能登入FTP<br />
#adduser –g ftp –s /sbin/nologin abc<br />
#passwd abc</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tisswb.com/archives/12.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

