<?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>温室小花.技术.博客 --纯粹的unix技术博客 &#187; suse linux</title>
	<atom:link href="http://www.evanjiang.net.cn/archives/category/operating_system/suse-linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evanjiang.net.cn</link>
	<description>红颜弹指老，刹那芳华，与其天涯思君，恋恋不舍，莫若相忘于江湖！</description>
	<lastBuildDate>Sun, 05 Sep 2010 14:51:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>在Linux上实现DB2双机HA完整方案</title>
		<link>http://www.evanjiang.net.cn/archives/1449.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1449.html#comments</comments>
		<pubDate>Sat, 30 Jan 2010 14:58:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[db2]]></category>
		<category><![CDATA[suse linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1449</guid>
		<description><![CDATA[<p>


 <p>1. 摘要 </p>
<p>　　本文档介绍在SuSE Linux Enterprise Server v8.0(SLES 8)上安装配置DB2 UDB Enterprise Serverv8.2双机互备的高可靠性方案的基本步骤。该方案配合采用SLES的卷管理器(LVM)和Veritas Cluster Server v2.2(VCS 2.2)作为HA实现组件。 </p>
<p>2. 概述 </p>
<p>　本文档假定读者已经理解双机互备的HA方案的基本概念。 </p>
<p>2.1. 双机互备HA方案的基本步骤 </p>
<p>　　建立一个双机互备方案的基本步骤是：
1. 确定基本参数(如IP地址、存储空间，等等。本方案的参数均为示范参数，读者需要根据实际环境替换)
2. 配置共享存储(本方案不涉及共享存储方案的配置)
3. 在两台节点上分别安装应用(在本方案中是DB2 UDB)
4. 在一台节点上对应用作初始配置(在本方案中是在共享存储上建立DB2数据库)
5. 在另一台节点上引入共享存储上的配置(在本方案中是对共享存储上的数据库做catalog操作)
6. 在两台节点上分别手动测试应用
7. 配置HA Cluster管理软件(在本方案中是VCS)
8. 测试HA Cluster管理软件可以成功接管资源</p>
<p>2.2. 假设 </p>
<p>　　本文档假定采用以下示例环境，SLES与VCS已在节点上正确安装，SLES的共享存储已经正确连接，VCS的心跳连接已经正确配置。

2.2.1. 存储 </p>
<p>　　各节点上需要足够的本地磁盘空间，来安装DB2 UDB的可执行代码及实例。 </p>
<p>　　本方案需要足够的共享存储空间，来放置数据库数据。 </p>
<p>　　假定共享存储上分配给DB2数据库的卷组名为/dev/datavg1，逻辑卷名为/dev/datavg1/db2lv1(使用SLES的LVM服务)，在两个节点上的挂接点名为/home/db2data，且已正确格式化为合适的文件系统(Veritas工程师指出在SLES 8上VCS 2.2不支持ext3文件系统，建议格式化时指定ext2，在SLES 9和VCS 4.1上不存在这个问题)。注意这个挂接点要在fstab文件中配置为启动时不自动挂接。 </p>
<p>　　数据库其他表空间可以建立在共享存储的其他卷上，如果是文件系统，同样要配置为不自动挂接。本文档暂不讨论。 </p>
<p>2.2.2. 节点 </p>
<p>　　本HA方案采用两个服务器节点做主从互备，以下分别称为Active节点和Passive节点。这两个节点具有相同的硬件和操作系统配置。 </p>
<p>2.2.3. 网络 </p>
<p>　　对外的IP网络。假定该方案中DB2 UDB对外提供服务使用的浮动IP(Floating IP)为192.168.10.110，Active节点的物理IP为192.168.10.11，Passive节点的物理IP为192.168.10.12。 </p>
<p>　HA管理软件需要一组内部IP来管理双机间的心跳连接。心跳IP不在本文档范围内。 </p>
<p>3. [...]]]></description>
			<content:encoded><![CDATA[<p style="float: left;margin: 4px;"><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 160x600, 创建于 10-2-7 */
google_ad_slot = "8970910006";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p> <p>1. 摘要 </p>
<p>　　本文档介绍在SuSE Linux Enterprise Server v8.0(SLES 8)上安装配置DB2 UDB Enterprise Serverv8.2双机互备的高可靠性方案的基本步骤。该方案配合采用SLES的卷管理器(LVM)和Veritas Cluster Server v2.2(VCS 2.2)作为HA实现组件。 </p>
<p>2. 概述 </p>
<p>　本文档假定读者已经理解双机互备的HA方案的基本概念。 </p>
<p>2.1. 双机互备HA方案的基本步骤 </p>
<p>　　建立一个双机互备方案的基本步骤是：<br />
1. 确定基本参数(如IP地址、存储空间，等等。本方案的参数均为示范参数，读者需要根据实际环境替换)<br />
2. 配置共享存储(本方案不涉及共享存储方案的配置)<br />
3. 在两台节点上分别安装应用(在本方案中是DB2 UDB)<br />
4. 在一台节点上对应用作初始配置(在本方案中是在共享存储上建立DB2数据库)<br />
5. 在另一台节点上引入共享存储上的配置(在本方案中是对共享存储上的数据库做catalog操作)<br />
6. 在两台节点上分别手动测试应用<br />
7. 配置HA Cluster管理软件(在本方案中是VCS)<br />
8. 测试HA Cluster管理软件可以成功接管资源</p>
<p>2.2. 假设 </p>
<p>　　本文档假定采用以下示例环境，SLES与VCS已在节点上正确安装，SLES的共享存储已经正确连接，VCS的心跳连接已经正确配置。<br />
<span id="more-1449"></span><br />
2.2.1. 存储 </p>
<p>　　各节点上需要足够的本地磁盘空间，来安装DB2 UDB的可执行代码及实例。 </p>
<p>　　本方案需要足够的共享存储空间，来放置数据库数据。 </p>
<p>　　假定共享存储上分配给DB2数据库的卷组名为/dev/datavg1，逻辑卷名为/dev/datavg1/db2lv1(使用SLES的LVM服务)，在两个节点上的挂接点名为/home/db2data，且已正确格式化为合适的文件系统(Veritas工程师指出在SLES 8上VCS 2.2不支持ext3文件系统，建议格式化时指定ext2，在SLES 9和VCS 4.1上不存在这个问题)。注意这个挂接点要在fstab文件中配置为启动时不自动挂接。 </p>
<p>　　数据库其他表空间可以建立在共享存储的其他卷上，如果是文件系统，同样要配置为不自动挂接。本文档暂不讨论。 </p>
<p>2.2.2. 节点 </p>
<p>　　本HA方案采用两个服务器节点做主从互备，以下分别称为Active节点和Passive节点。这两个节点具有相同的硬件和操作系统配置。 </p>
<p>2.2.3. 网络 </p>
<p>　　对外的IP网络。假定该方案中DB2 UDB对外提供服务使用的浮动IP(Floating IP)为192.168.10.110，Active节点的物理IP为192.168.10.11，Passive节点的物理IP为192.168.10.12。 </p>
<p>　HA管理软件需要一组内部IP来管理双机间的心跳连接。心跳IP不在本文档范围内。 </p>
<p>3. 配置步骤 </p>
<p>3.1. DB2 UDB安装、配置步骤 </p>
<p>3.1.1. 建立用户和组 </p>
<p>　　在两台节点上分别在root下执行以下命令:<br />
　　groupadd –g 900 db2iadm1<br />
　　groupadd –g 901 db2fadm1<br />
　　groupadd –g 902 dasadm1<br />
　　useradd –g db2iadm1 –u 800 –d /home/db2inst1 –s /bin/bash db2inst1<br />
　　useradd –g db2fadm1 –u 801 –d /home/db2fenc1 –s /bin/bash db2fenc1<br />
　　useradd –g dasadm1 –u 802 –d /home/dasusr1 –s /bin/bash dasusr1<br />
　　组ID和用户ID可以根据实际情况选择，但务必保证在两台节点上相同的用户名/组名具有相同的ID。</p>
<p>3.1.2. 安装DB2 UDB产品代码<br />
　　在两台节点上分别在root用户下执行以下命令:<br />
　　cd<br />
　　./db2install –p DB2.ESE<br />
　　cd /opt/IBM/db2/V8.1/adm<br />
　　./db2licm –a /db2/license/db2ese.lic</p>
<p>　　其中，是DB2 UDB ESE安装介质所在目录。 </p>
<p>3.1.3. 建立实例 </p>
<p>　　在两台节点上分别在root用户下执行以下命令: </p>
<p>　　cd /opt/IBM/db2/V8.1/instance </p>
<p>　　./db2icrt –p 50000 –u db2fenc1 db2inst1 </p>
<p>3.1.4. 建立DAS </p>
<p>　　在两台节点上分别在root用户下执行以下命令: </p>
<p>　　cd /opt/IBM/db2/V8.1/instance </p>
<p>　　./dascrt –u dasusr1 </p>
<p>3.1.5. 建立数据库 </p>
<p>　　在Active节点上在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 create database on /home/db2data<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　　其中，是数据库名。</p>
<p>3.1.6. Catalog数据库<br />
　　在Passive节点上在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 catalog database on /home/db2data<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　其中，是上一步骤建立的数据库名</p>
<p>3.1.7. 检验DB2配置<br />
　　在Active节点上，在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 connect to<br />
　　db2 create table T (ID INTEGER)<br />
　db2 connect reset<br />
　db2stop<br />
　　exit<br />
　umount /home/db2data<br />
　　检验上述命令均无出错信息。</p>
<p>　　在Passive节点上，在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 connect to<br />
　　db2 drop table T<br />
　　db2 connect reset<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　　检验上述命令均无出错信息。</p>
<p>3.2. VCS配置<br />
　在VCS中，建立DB2资源组，在组中配置浮动IP、Application等资源，将Application的启动、停止等命令脚本配置为db2start、db2stop、db2admin start和db2admin stop，将Application的监视命令脚本配置为ps命令，监视db2sysc和db2dasrrm进程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1449.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle10gR2 on SUSE Linux 10安装笔记</title>
		<link>http://www.evanjiang.net.cn/archives/1097.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1097.html#comments</comments>
		<pubDate>Mon, 25 May 2009 10:00:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[suse linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1097</guid>
		<description><![CDATA[<p style="float: right;margin: 4px;">


</p> <p>系统要求：
内存：推荐1G
Swap分区：设为内存的2倍
/tmp磁盘空间：400MB以上
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：
SUSE Linux10 for x86
Oracle database 10gR2 for linux32
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：
1、安装SUSE
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包
安装orarun软件包
#rpm –ivh orarun-1.8-109.15.i586.rpm
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到
#rpm –ivh orarun-1.8-109.15.i586.rpm
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm</p>
<p>3、Oracle用户设置
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。

4、设置Oracle环境变量
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。
例如：
ORACLE_HOME=$ORACLE_BASE/product/10gR2
ORACLE_SID=ORCL
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。








5、安装Oracle10gR2
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。








下面在图形界面就可以一路顺利安装，安装时没有发现任何错误。
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。</p>
<p>感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮,大家有兴趣可以试一下。</p>
]]></description>
			<content:encoded><![CDATA[<p>系统要求：<br />
内存：推荐1G<br />
Swap分区：设为内存的2倍<br />
/tmp磁盘空间：400MB以上<br />
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：<br />
SUSE Linux10 for x86<br />
Oracle database 10gR2 for linux32<br />
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：<br />
1、安装SUSE<br />
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。<br />
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包<br />
安装orarun软件包<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm</p>
<p>3、Oracle用户设置<br />
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。<br />
<span id="more-1097"></span><br />
4、设置Oracle环境变量<br />
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。<br />
例如：<br />
ORACLE_HOME=$ORACLE_BASE/product/10gR2<br />
ORACLE_SID=ORCL<br />
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
5、安装Oracle10gR2<br />
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。<br />
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
下面在图形界面就可以一路顺利安装，安装时没有发现任何错误。<br />
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。</p>
<p>感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮,大家有兴趣可以试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1097.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unix常用指令及参数</title>
		<link>http://www.evanjiang.net.cn/archives/893.html</link>
		<comments>http://www.evanjiang.net.cn/archives/893.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 13:48:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[netbsd unix]]></category>
		<category><![CDATA[openbsd unix]]></category>
		<category><![CDATA[other linux]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[sco unix]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sun unix]]></category>
		<category><![CDATA[suse linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[unix 常用命令 及参数]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=893</guid>
		<description><![CDATA[<p>常用组合键
ctrl+h,backspace :删除前面的字符.
ctrl+u:删除一整行.
ctrl+c,del,break: 强行终止正在运行的程序.
ctrl+d:
常用指令
1.date:查看当前时间.
2.cal:查看某一个月的月历.
3.Finger 命令:显示一个用户的详细信息.
4.who命令:显示所有登陆用户.who an i
5.clear 命令:执行清屏动作.
6.echo 命令:将命令名后跟随的参数显示在屏幕echo hello </p>
<p>world
7.banner 命令:将命令名后跟的ACSSII字符串以大字的方式显</p>
<p>示在屏幕上banner hello
8.wc 命令:用于计算一个指定的文件中的行数单词及字符数:
   格式wc[-c(计算字符的数目)] [-l(计算行的数目)] [-w(计算</p>
<p>单词的数目)] filename
9.passwd 命令,用于修改口令.
10.man 命令:联机手册
六.shell的基本功能:命令解释器,程序设计语言.
shell的退出命令.
1.exit 主要用于退出B_shell
2.logout 主要用于退出C_shell
3.ctrl+d 用于退出各类shell
第三章 通信
内部通信
外部通信





下.
mail命令模式常用命令
 如有下页则显示,否则退出mail.
p      显示本邮件信息
d      删除当前邮件
n      显示下一个邮件
q      退出 mail,把末删除的邮件保存到个人邮箱中.
R     [...]]]></description>
			<content:encoded><![CDATA[<p>常用组合键<br />
ctrl+h,backspace :删除前面的字符.<br />
ctrl+u:删除一整行.<br />
ctrl+c,del,break: 强行终止正在运行的程序.<br />
ctrl+d:<br />
常用指令<br />
1.date:查看当前时间.<br />
2.cal:查看某一个月的月历.<br />
3.Finger 命令:显示一个用户的详细信息.<br />
4.who命令:显示所有登陆用户.who an i<br />
5.clear 命令:执行清屏动作.<br />
6.echo 命令:将命令名后跟随的参数显示在屏幕echo hello </p>
<p>world<br />
7.banner 命令:将命令名后跟的ACSSII字符串以大字的方式显</p>
<p>示在屏幕上banner hello<br />
8.wc 命令:用于计算一个指定的文件中的行数单词及字符数:<br />
   格式wc[-c(计算字符的数目)] [-l(计算行的数目)] [-w(计算</p>
<p>单词的数目)] filename<br />
9.passwd 命令,用于修改口令.<br />
10.man 命令:联机手册<br />
六.shell的基本功能:命令解释器,程序设计语言.<br />
shell的退出命令.<br />
1.exit 主要用于退出B_shell<br />
2.logout 主要用于退出C_shell<br />
3.ctrl+d 用于退出各类shell<br />
第三章 通信<br />
内部通信<br />
外部通信<1,电子邮件,2.即时通信<br />
一.即时通讯<br />
1.write 交谈命令 (半双工通信)<br />
格式 write student1<br />
ctrl+d 退出write<br />
Write协议:消息发送结束用O(结束)<br />
结束谈话用OO(结束并退出)<br />
2.mesg 消息开关命令.用于查询和开关本终端的消息接收状态.<br />
格式:mesg [-y] [-n]<br />
$ mesg 查询本终端当前的消息接收状态<br />
is y 可以接收消息<br />
is n 拒绝接收消息<br />
$ mesg n 设置关闭状态<br />
$ mesg y 设置打开状态<br />
3.talk 双向通信命令 (全双工方式)<br />
4.wall 广播信息命令<br />
二,电子邮件<br />
$ mail username  发送邮件<br />
$ mail                 接收邮件<br />
系统邮箱:在/usr/mail或/var/mail下,每个用户都有一个以其名字</p>
<p>命名的邮箱.例如:student8的系统邮箱可能为:/var/mail/student8<br />
个人邮箱:个人邮箱通常为用户自己的主目录(home)下的mbox<br />
<span id="more-893"></span><br />
文件.用户读过的邮件如果末删除或转存,则存放在个人邮箱中</p>
<p>.例如:student8的个人邮箱可能是:/home/student8/mbox<br />
1.发送邮件:<br />
$ mail student8<br />
给多个用户发送邮件<br />
a.$ mail student1 student2 student3 把用户列出来.<br />
b.$ mail TEACHER TEACHER为用户组名,即向属于TEACHER</p>
<p>组所有用记发邮件.<br />
c.$ alias usr_list student1 student2 student3给student1 student2 </p>
<p>student3等多个名字建立一个部的别名usr_list,该别名只在本</p>
<p>shell中起作用,退出shell后无效.<br />
$ mail usr_list<br />
把已有的文件作为邮件发送给用户:<br />
$ mail student8 < my_letter<br />
发邮件给不存在的用户:<br />
$ mail meizhegeren<br />
mail命令本身能正常执行,由于无有效的接收方,所以系统把邮</p>
<p>件退回到用户主目录下dead.letter中.<br />
2.接收邮件<br />
不带参数输入mial表示读取邮件.此时已进入出境mail命令模式<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
下.<br />
mail命令模式常用命令<br />
<cr> 如有下页则显示,否则退出mail.<br />
p      显示本邮件信息<br />
d      删除当前邮件<br />
n      显示下一个邮件<br />
q      退出 mail,把末删除的邮件保存到个人邮箱中.<br />
R     回复邮件<br />
!      执行shell命令.<br />
?      显示mail的内部命令.<br />
第四章 文件系统<br />
与目录相关的命令(pwd,cd,mkdir,rmdir,ls)<br />
与文件相关的命令(cp,mv,ln,more,rm)<br />
1.pwd 显示当前工作目录<br />
2.cd  改变当前目录<br />
3.mkdir 创建目录<br />
格式 mkdir dir_name<br />
4.rmdir 删除目录<br />
格式 rmdir dir_name<br />
     a.只能是空目录.<br />
      b.有写的权限<br />
一次操作多个目录<br />
- p 选项.在当前目录下逐级创建目录,也可以逐级删除目录.<br />
5.ls 显示目录<br />
$ ls -a 显示所有文件(以点开头的文件名是隐藏文件)<br />
$ ls -R 显示所有子目录的内容<br />
$ ls &#8211; l  能得到目录中的文件的详细信息.<br />
-:普通 d: 目录 c: 字符设备 b: 块设备 p:管道<br />
$ ls &#8211; C 以多列的格式列表,按列排序.<br />
$ ls &#8211; F 如果是目录,文件名后加/,如果是可执行文件,加*表示.<br />
$ ls &#8211; m 按页宽列文件,以逗号分隔.<br />
$ ls &#8211; p 如果是目录,文件名后加/<br />
$ ls &#8211; r 以字母反序列表<br />
$ ls &#8211; s 以文件块为单位显示文件大小<br />
$ ls &#8211; x 以多列的格式列表,按行排序.<br />
$ ls -G 以不同的颜色显示.<br />
$ ls -lc 显示更新时间<br />
$ ls -i   inode序号将列在第一列<br />
$ ls -lu 显示访问时间<br />
$ ls -I   显示更改时间<br />
6.touch 命令:作用是用来修改文件访问时间更改时间的.并可以</p>
<p>用来创建0字节长度的文件.<br />
格式 touch 命令参数<br />
7.cp 命令:复制文件<br />
格式 cp source target<br />
         $ cp file1 file2 &#8230; Target-dir<br />
$ cp -i 如果目标文件存在,请求确认<br />
$ cp -r 复制目录到新的目录<br />
8.mv 命令:移动文件或命名文件<br />
格式:mv source target<br />
9.ln 命令:ln命令的主要功能是给一个已经存在的文件再取一个</p>
<p>名字.新的文件名与原文件名可以在同一个目录下,也可以以在</p>
<p>不同的目录下,新老文件名代表同一个文件.<br />
格式ln source-file target-file<br />
作用:在现有的文件与新文件之间建立新链接,使一个文件具有</p>
<p>一个以上的名字.<br />
显示文件内容命令<br />
10.cat 命令:用来显示.创建或者合并文件<br />
格式cat filename<br />
11.more 命令:逐屏显示文件内容.翻屏时用<space>键.<br />
格式:$ more filename<br />
12.rm 命令:删除文件(删除后无法恢复)<br />
格式:$ rm file<br />
         $ rm file1 file2<br />
$ rm -i 删除文件前,给出确认<br />
$ rm -r 删除指定的目录及目录中的所有文件和子目录.即删除</p>
<p>整个目录结构.<br />
13.lp 命令:打印命令<br />
14.cut 命令:切取文件内容,用于切取文件中的列或字段.它把文</p>
<p>本文件中每一行的一部分显示输出.运行时必须指定功能选项.<br />
- f 指定字段的位置<br />
-c 指定列的位置<br />
-d 指定字段分隔符,缺省的字段分隔符是制表符tab<br />
15.paste 命令:连接文件.<br />
作用:把文件一行接一行地连接在一起,或者把两个或多个文件</p>
<p>的域连到一个新文件里.<br />
格式: $paste 选项 参数<br />
选项:-d 指定分隔符.默认是制表符<br />
第五章 文件权限<br />
16.chmod 命令:修改文件权限,常用chmod命令修改文件(包括普</p>
<p>通,目录和设备)的访问权限,<br />
格式: chmod pattern filename &#8230;<br />
finename 为要修改的权限文件名.可以有多个.<br />
pattern 为将改变成的权限,可以用两种形式表示:字母式和数字</p>
<p>形式.<br />
a,字母形式(符号模式)<br />
字母形式由用户类别(u,g,o). 如何改变(+,-)和权限(r,w,x)三部分</p>
<p>组成.<br />
u:本用户g:同组用户o:其它用户. + :增加权限 -:删除权限<br />
r:读w:写x:执行<br />
例如:chmod u+x file1<br />
         chmod o-w file2 file3<br />
          chmod go+r file4<br />
b,    数值形式<br />
格式: chmod 777 file1<br />
*新建文件或目录最大权限=状态掩码+新建文件或目录缺省</p>
<p>权限.此时unask为000<br />
对一个新建的文件,umask值为022则指定该文件的权限为644:<br />
对一个新建的目录,umask值为022则指定该目录的权限为755<br />
17.sort 命令:作用在于将指定的文件中的文件进行排序,并把排</p>
<p>序的结果输出到指定的标准输出中.<br />
格式:$srot [-t delimiter] [+field] [.column]][option]<br />
选项: -d 以字典顺序进行排序<br />
          -<br />
18.head 命令:用于查看一个文件.或多个文件的前面几行的内</p>
<p>容.<br />
格式:$ head [-number_of_lines] file(s)<br />
19.tail 命令:用于显示从指定行开始直到文件末尾的文件内容<br />
格式;tail [-number_of_lines | +number_of_lines]file<br />
20.tee 命令:在获得输入后,将把该输入数据送到两个地点:标准<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
输出和文件.<br />
21.grep 命令: 用于选项定包含特定模式的文本行.<br />
21.find 命令:在目录中递归地搜索包括有特定字符的文件名.<br />
22.df 命令:磁盘空间监测命令.显示当前系统中各个逻辑磁盘</p>
<p>中空闲的磁盘块数和空闲的索引节点(即可建立的新文件数)<br />
23.du 命令:查看磁盘使用情况统计,统计指定的目录及所有子</p>
<p>目录的磁盘使用情况,统计单位是磁盘块数.<br />
选项:-a 显示所有文件及子目录<br />
24.fsck 命令:文件系统管理:用于检测和修复文件文件的错误,<br />
25.tar命令:文件存储与备份.该命令可以把文件系统中的一个</p>
<p>或一组文件打成一个文件包.存放到外存上或硬盘上文件系统</p>
<p>的其它地方.常用于多个文件(包括目录)的备份或转移.<br />
格式: tar -cvf target file1 file2 file3 &#8230;把file1 file2 file3等文件备份到</p>
<p>档案文件target中.<br />
         tar -tvf target 检查档案文件target中包含的文件信息.<br />
         tar -xvf targer [file1] 从档案文件target中提取全部或file指定</p>
<p>的文件.<br />
26.shutdown 命令:系统关机<br />
选项:-h 完全关机<br />
         -r 关机并重新启动系统<br />
         time 关机时间,如17:30<br />
         message 关机前向所有已登陆用户发送消息<br />
例如: shutdown -r now 现在关机重启.<br />
27.crypt 文件加密命令:用于对文本文件进行加密和解密.以防</p>
<p>止文件内容泄密.<br />
例如:$ crypt < file > file.cry 对file加密,结果保存在file.cry中.key:加</p>
<p>密口令<br />
        $ crypt <aaa.cry > aaa 对aaa.cry解密,结果保存到aaa中. key:</p>
<p>解密口令<br />
附:$ vi -x file.cry 编辑一个加密后的文件<br />
28.compress/uncompress 文件压缩和解压命令<br />
格式:compress data_file 加压后自动在文件名后加一个.Z<br />
         umcompress abc.Z<br />
29.at 定时执行任务:在指定的时间一次性执行规定的任务.<br />
at 15:30 在15:30分执行<br />
who >> userlist 把上机用户清单发到userlist<br />
30,cron 系统定量执行任务:<br />
31,crontab 任务描述文件的管理命令.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/893.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle10gR2 on SUSE Linux 10安装</title>
		<link>http://www.evanjiang.net.cn/archives/677.html</link>
		<comments>http://www.evanjiang.net.cn/archives/677.html#comments</comments>
		<pubDate>Wed, 04 Mar 2009 10:04:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[suse linux]]></category>
		<category><![CDATA[suse10 安装 oracle10g]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=677</guid>
		<description><![CDATA[<p>系统要求：
内存：推荐1G
Swap分区：设为内存的2倍
/tmp磁盘空间：400MB以上
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：
SUSE Linux10 for x86
Oracle database 10gR2 for linux32
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：
1、安装SUSE
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包
安装orarun软件包
#rpm –ivh orarun-1.8-109.15.i586.rpm
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到
#rpm –ivh orarun-1.8-109.15.i586.rpm
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm

3、Oracle用户设置
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。</p>
<p>4、设置Oracle环境变量
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。
例如：
ORACLE_HOME=$ORACLE_BASE/product/10gR2
ORACLE_SID=ORCL
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。








5、安装Oracle10gR2
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。</p>
<p>下面在图形界面就可以一路顺利安装了，安装时没有发现任何错误。
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。








感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮.</p>
]]></description>
			<content:encoded><![CDATA[<p>系统要求：<br />
内存：推荐1G<br />
Swap分区：设为内存的2倍<br />
/tmp磁盘空间：400MB以上<br />
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：<br />
SUSE Linux10 for x86<br />
Oracle database 10gR2 for linux32<br />
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：<br />
1、安装SUSE<br />
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。<br />
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包<br />
安装orarun软件包<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm<br />
<span id="more-677"></span><br />
3、Oracle用户设置<br />
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。</p>
<p>4、设置Oracle环境变量<br />
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。<br />
例如：<br />
ORACLE_HOME=$ORACLE_BASE/product/10gR2<br />
ORACLE_SID=ORCL<br />
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
5、安装Oracle10gR2<br />
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。<br />
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。</p>
<p>下面在图形界面就可以一路顺利安装了，安装时没有发现任何错误。<br />
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/677.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下的bash与sh 详解以及实例</title>
		<link>http://www.evanjiang.net.cn/archives/668.html</link>
		<comments>http://www.evanjiang.net.cn/archives/668.html#comments</comments>
		<pubDate>Wed, 04 Mar 2009 09:45:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[suse linux]]></category>
		<category><![CDATA[linux下的bash与sh]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=668</guid>
		<description><![CDATA[<p>关于bash与sh的话题（限于一般linux），以下个人的一些总结及理解，有理解错误的地方还望指点</p>
<p>1、bash的POSIX标准</p>
<p>在一般的linux系统当中（如redhat），
使用sh调用执行脚本相当于打开了bash的POSIX标准模式
（等效于bash的 &#8211;posix 参数）</p>
<p>一般的，sh是bash的“子集”
（不是子集的部分，具体区别见下的“Things sh has that bash does not”）</p>
<p>例子：</p>
<p>[wwy@sf-watch test]$ cat t2.sh
#!/bin/bash
diff 




</p>
<p>2、调用相关：</p>
<p>在脚本的调用方面（interactive、login相关），bash与sh也是存在差异
以下是详细说明（假如被调用执行的脚本名字叫xxx.sh）</p>
<p>BASH：</p>
<p>1、交互式的登录shell （bash –il xxx.sh）
载入的信息：
/etc/profile
~/.bash_profile（ ->  ~/.bashrc  ->  /etc/bashrc）
~/.bash_login
~/.profile</p>
<p>2、非交互式的登录shell （bash –l xxx.sh）
载入的信息：
/etc/profile
~/.bash_profile （ ->  ~/.bashrc  ->  /etc/bashrc）
~/.bash_login
~/.profile
$BASH_ENV</p>
<p>3、交互式的非登录shell （bash –i xxx.sh）
载入的信息：
~/.bashrc （ ->  /etc/bashrc）</p>
<p>4、非交互式的非登录shell （bash xxx.sh）
载入的信息：
$BASH_ENV</p>
<p>SH：</p>
<p>1、交互式的登录shell
载入的信息：
/etc/profile
~/.profile</p>
<p>2、非交互式的登录shell
载入的信息：
/etc/profile
~/.profile</p>
<p>3、交互式的非登录shell
载入的信息：
$ENV</p>
<p>4、非交互式的非登录shell
载入的信息：
nothing</p>
<p>由此可以看出，最主要的区别在于相关配置文件的是否载入，
而这些配置的是否载入，也就导致了很多默认选项的差异
（具体请仔细查看~/.bash_profile 等文件）</p>
<p>如：</p>
<p>[wangweiyu@ComSeOp ~]$ grep ulimit /etc/profile
ulimit -S -c unlimited > /dev/null 2>&#038;1</p>
<p>即，如果/etc/profile没有被载入，则不会产生core dump</p>
<p>3、关于ssh</p>
<p>非常值得一提的是，使用ssh远程执行命令，
远端sshd进程通过“bash [...]]]></description>
			<content:encoded><![CDATA[<p>关于bash与sh的话题（限于一般linux），以下个人的一些总结及理解，有理解错误的地方还望指点</p>
<p>1、bash的POSIX标准</p>
<p>在一般的linux系统当中（如redhat），<br />
使用sh调用执行脚本相当于打开了bash的POSIX标准模式<br />
（等效于bash的 &#8211;posix 参数）</p>
<p>一般的，sh是bash的“子集”<br />
（不是子集的部分，具体区别见下的“Things sh has that bash does not”）</p>
<p>例子：</p>
<p>[wwy@sf-watch test]$ cat t2.sh<br />
#!/bin/bash<br />
diff <(echo xxx) <(echo yyy) </p>
<p>[wwy@sf-watch test]$ bash -x ./t2.sh # 使用bash 调用，不会出问题<br />
+ diff /dev/fd/63 /dev/fd/62<br />
++ echo xxx<br />
++ echo yyy<br />
1c1<br />
< xxx<br />
---<br />
> yyy<br />
[wwy@sf-watch test]$ sh ./t2.sh    # 而用sh调用，报错如下<br />
./t2.sh: line 3: syntax error near unexpected token `(&#8216;<br />
./t2.sh: line 3: `diff <(echo xxx) <(echo yyy)'<br />
[wwy@sf-watch test]$ echo $?<br />
2<br />
<span id="more-668"></span></p>
<p>但是，在我们的linux系统中，sh是bash的一个软链接：</p>
<p>[wangweiyu@ComSeOp mon]$ which sh<br />
/bin/sh<br />
[wangweiyu@ComSeOp mon]$ ls -l /bin/sh<br />
lrwxrwxrwx  1 root root 4 Mar 21  2007 /bin/sh -> bash</p>
<p>那为什么上面的例子中还会出现问题呢？原因在于：<br />
bash程序执行，当“$0”是“sh”的时候，<br />
则要求下面的代码遵循一定的规范，当不符合规范的语法存在时，则会报错，<br />
所以可以这样理解，<br />
“sh”并不是一个程序，而是一种标准（POSIX），<br />
这种标准，在一定程度上（具体区别见下面的“Things bash has that sh does not”）保证了脚本的跨系统性（跨UNIX系统）</p>
<p>下面的内容详细的说明了bash与sh在语法等方面的具体差异（引自Bash FAQ）：</p>
<p>Things bash has that sh does not:</p>
<p>        long invocation options<br />
        [+-]O invocation option<br />
        -l invocation option<br />
        `!&#8217; reserved word to invert pipeline return value<br />
        `time&#8217; reserved word to time pipelines and shell builtins<br />
        the `function&#8217; reserved word<br />
        the `select&#8217; compound command and reserved word<br />
        arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done<br />
        new $&#8217;&#8230;&#8217; and $&#8221;&#8230;&#8221; quoting<br />
        the $(&#8230;) form of command substitution<br />
        the $(<filename) form of command substitution, equivalent to<br />
                $(cat filename)<br />
        the ${#param} parameter value length operator<br />
        the ${!param} indirect parameter expansion operator<br />
        the ${!param*} prefix expansion operator<br />
        the ${param:offset[:length]} parameter substring operator<br />
        the ${param/pat[/string]} parameter pattern substitution operator<br />
        expansions to perform substring removal (${p%[%]w}, ${p#[#]w})<br />
        expansion of positional parameters beyond $9 with ${num}<br />
        variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,<br />
                   TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,<br />
                   LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,<br />
                   ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,<br />
                   HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,<br />
                   PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,<br />
                   SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,<br />
                   auto_resume<br />
        DEBUG trap<br />
        ERR trap<br />
        variable arrays with new compound assignment syntax<br />
        redirections: <>, &#038;>, >|, <<<, [n]<&#038;word-, [n]>&#038;word-<br />
        prompt string special char translation and variable expansion<br />
        auto-export of variables in initial environment<br />
        command search finds functions before builtins<br />
        bash return builtin will exit a file sourced with `.&#8217;<br />
        builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.<br />
                  export -n/-f/-p/name=value, pwd -L/-P,<br />
                  read -e/-p/-a/-t/-n/-d/-s/-u,<br />
                  readonly -a/-f/name=value, trap -l, set +o,<br />
                  set -b/-m/-o option/-h/-p/-B/-C/-H/-P,<br />
                  unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,<br />
                  type -a/-p/-t/-f/-P, suspend -f, kill -n,<br />
                  test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S<br />
        bash reads ~/.bashrc for interactive shells, $ENV for non-interactive<br />
        bash restricted shell mode is more extensive<br />
        bash allows functions and variables with the same name<br />
        brace expansion<br />
        tilde expansion<br />
        arithmetic expansion with $((&#8230;)) and `let&#8217; builtin<br />
        the `[[...]]&#8217; extended conditional command<br />
        process substitution<br />
        aliases and alias/unalias builtins<br />
        local variables in functions and `local&#8217; builtin<br />
        readline and command-line editing with programmable completion<br />
        command history and history/fc builtins<br />
        csh-like history expansion<br />
        other new bash builtins: bind, command, compgen, complete, builtin,<br />
                                 declare/typeset, dirs, enable, fc, help,<br />
                                 history, logout, popd, pushd, disown, shopt,<br />
                                 printf<br />
        exported functions<br />
        filename generation when using output redirection (command >a*)<br />
        POSIX.2-style globbing character classes<br />
        POSIX.2-style globbing equivalence classes<br />
        POSIX.2-style globbing collating symbols<br />
        egrep-like extended pattern matching operators<br />
        case-insensitive pattern matching and globbing<br />
        variable assignments preceding commands affect only that command,<br />
                even for builtins and functions<br />
        posix mode and strict posix conformance<br />
        redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,<br />
                /dev/tcp/host/port, /dev/udp/host/port<br />
        debugger support, including `caller&#8217; builtin and new variables<br />
        RETURN trap<br />
        the `+=&#8217; assignment operator</p>
<p>Things sh has that bash does not:<br />
        uses variable SHACCT to do shell accounting<br />
        includes `stop&#8217; builtin (bash can use alias stop=&#8217;kill -s STOP&#8217;)<br />
        `newgrp&#8217; builtin<br />
        turns on job control if called as `jsh&#8217;<br />
        $TIMEOUT (like bash $TMOUT)<br />
        `^&#8217; is a synonym for `|&#8217;<br />
        new SVR4.2 sh builtins: mldmode, priv</p>
<p>Implementation differences:<br />
        redirection to/from compound commands causes sh to create a subshell<br />
        bash does not allow unbalanced quotes; sh silently inserts them at EOF<br />
        bash does not mess with signal 11<br />
        sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100<br />
        bash splits only the results of expansions on IFS, using POSIX.2<br />
                field splitting rules; sh splits all words on IFS<br />
        sh does not allow MAILCHECK to be unset (?)<br />
        sh does not allow traps on SIGALRM or SIGCHLD<br />
        bash allows multiple option arguments when invoked (e.g. -x -v);<br />
                sh allows only a single option argument (`sh -x -v' attempts<br />
                to open a file named `-v', and, on SunOS 4.1.4, dumps core.<br />
                On Solaris 2.4 and earlier versions, sh goes into an infinite<br />
                loop.)<br />
        sh exits a script if any builtin fails; bash exits only if one of<br />
                the POSIX.2 `special' builtins fails</p>
<p>
<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
</p>
<p>2、调用相关：</p>
<p>在脚本的调用方面（interactive、login相关），bash与sh也是存在差异<br />
以下是详细说明（假如被调用执行的脚本名字叫xxx.sh）</p>
<p>BASH：</p>
<p>1、交互式的登录shell （bash –il xxx.sh）<br />
载入的信息：<br />
/etc/profile<br />
~/.bash_profile（ ->  ~/.bashrc  ->  /etc/bashrc）<br />
~/.bash_login<br />
~/.profile</p>
<p>2、非交互式的登录shell （bash –l xxx.sh）<br />
载入的信息：<br />
/etc/profile<br />
~/.bash_profile （ ->  ~/.bashrc  ->  /etc/bashrc）<br />
~/.bash_login<br />
~/.profile<br />
$BASH_ENV</p>
<p>3、交互式的非登录shell （bash –i xxx.sh）<br />
载入的信息：<br />
~/.bashrc （ ->  /etc/bashrc）</p>
<p>4、非交互式的非登录shell （bash xxx.sh）<br />
载入的信息：<br />
$BASH_ENV</p>
<p>SH：</p>
<p>1、交互式的登录shell<br />
载入的信息：<br />
/etc/profile<br />
~/.profile</p>
<p>2、非交互式的登录shell<br />
载入的信息：<br />
/etc/profile<br />
~/.profile</p>
<p>3、交互式的非登录shell<br />
载入的信息：<br />
$ENV</p>
<p>4、非交互式的非登录shell<br />
载入的信息：<br />
nothing</p>
<p>由此可以看出，最主要的区别在于相关配置文件的是否载入，<br />
而这些配置的是否载入，也就导致了很多默认选项的差异<br />
（具体请仔细查看~/.bash_profile 等文件）</p>
<p>如：</p>
<p>[wangweiyu@ComSeOp ~]$ grep ulimit /etc/profile<br />
ulimit -S -c unlimited > /dev/null 2>&#038;1</p>
<p>即，如果/etc/profile没有被载入，则不会产生core dump</p>
<p>3、关于ssh</p>
<p>非常值得一提的是，使用ssh远程执行命令，<br />
远端sshd进程通过“bash –c”的方式来执行命令（即“非交互式的非登录shell”）<br />
所以这一点，和登录之后再在本地执行执行命令，就存在了一定的差异</p>
<p>如：</p>
<p>[wangweiyu@ComSeOp ~]$ ssh wangweiyu@127.0.0.1 &#8216;echo $-&#8217;<br />
wangweiyu@127.0.0.1&#8242;s password:<br />
hBc<br />
[wangweiyu@ComSeOp ~]$ echo $-<br />
himBH<br />
[wangweiyu@ComSeOp ~]$ ssh wangweiyu@127.0.0.1 &#8216;echo $0&#8242;<br />
wangweiyu@127.0.0.1&#8242;s password:<br />
bash<br />
[wangweiyu@ComSeOp ~]$ echo $0<br />
-bash</p>
<p>注：<br />
“$-” 中含有“i”代表“交互式shell”<br />
“$0”的显示结果为“-bash”，bash前面多个“-”，代表“登录shell”<br />
没有“i“和“-”的，是“非交互式的非登录shell”</p>
<p>另外还有一点，虽然ssh远程执行的命令是“非交互式的非登录shell”，<br />
但在执行命令之前，ssh的那一次登录本身是“交互式的登录shell”，所以其会先载入“~/.bash_profile”</p>
<p>如：<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
[wangweiyu@ComSeOp ~]$ cat .bashrc<br />
# .bashrc<br />
# User specific aliases and functions<br />
# Source global definitions<br />
if [ -f /etc/bashrc ]; then<br />
        . /etc/bashrc<br />
fi<br />
echo &#8216;xxx&#8217; # 随便输出一些字符</p>
<p>[wangweiyu@ComSeOp ~]$ ssh wangweiyu@127.0.0.1 &#8216;echo $-&#8217;<br />
wangweiyu@127.0.0.1&#8242;s password:<br />
xxx # .bashrc 被执行<br />
hBc </p>
<p>这一点，衍生出一个关于scp的问题，scp在传输数据之前，会先进行一次ssh登录，<br />
而当.bashrc文件有输出的时候，则会导致scp失败！原因是解析返回的数据包出现混乱</p>
<p>如：</p>
<p>[wangweiyu@ComSeOp ~]$ cat .bashrc<br />
# .bashrc<br />
# User specific aliases and functions<br />
# Source global definitions<br />
if [ -f /etc/bashrc ]; then<br />
        . /etc/bashrc<br />
fi<br />
echo &#8216;xxx&#8217; # 随便输出一些字符<br />
[wangweiyu@ComSeOp ~]$ scp file wangweiyu@127.0.0.1:/tmp<br />
wangweiyu@127.0.0.1&#8242;s password:<br />
xxx # 输出xxx，随后scp失败<br />
[wangweiyu@ComSeOp ~]$ echo $?<br />
1<br />
[wangweiyu@ComSeOp ~]$ ls /tmp/<br />
[wangweiyu@ComSeOp ~]$</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/668.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 加载u盘、光盘、软盘 &amp; mount使用指南</title>
		<link>http://www.evanjiang.net.cn/archives/665.html</link>
		<comments>http://www.evanjiang.net.cn/archives/665.html#comments</comments>
		<pubDate>Wed, 04 Mar 2009 09:39:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[debian linux]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[suse linux]]></category>
		<category><![CDATA[Linux 加载u盘、光盘、软盘 mount使用指南]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=665</guid>
		<description><![CDATA[<p>一、Linux加载u盘
Linux如何加载(优)U盘
第一步，以root用户登陆
先加载USB模块 modprobe usb-storage
用fdisk -l 看看磁盘的设备
假如U盘是sda
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               mkdir /mnt/usb
第三步, 载入 u 盘，需键入以下命令：
Linux如何加载(优)U盘
第一步，以root用户登陆
先加载USB模块 modprobe usb-storage
用fdisk -l 看看U盘的设备
假如U盘是sda1
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               md /mnt/usb
成功后进行下一步。
第三步, 载入 [...]]]></description>
			<content:encoded><![CDATA[<p>一、Linux加载u盘<br />
Linux如何加载(优)U盘<br />
第一步，以root用户登陆<br />
先加载USB模块 modprobe usb-storage<br />
用fdisk -l 看看磁盘的设备<br />
假如U盘是sda<br />
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               mkdir /mnt/usb<br />
第三步, 载入 u 盘，需键入以下命令：<br />
Linux如何加载(优)U盘<br />
第一步，以root用户登陆<br />
先加载USB模块 modprobe usb-storage<br />
用fdisk -l 看看U盘的设备<br />
假如U盘是sda1<br />
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               md /mnt/usb<br />
成功后进行下一步。<br />
第三步, 载入 u 盘，需键入以下命令：<br />
mount -t vfat /dev/sda /mnt/usb_disk<br />
成功后，即可使用 u 盘, 文件就在目录 /mnt/usb 下。<br />
第四步，卸载u盘<br />
在使用完u盘后，在拔出前需要先键入卸载U盘命令<br />
命令如下：               umount /mnt/usb<br />
<span id="more-665"></span><br />
二、Linux mount使用指南<br />
在Linux中，如果你要使用储存设备 (Mo、硬盘、光驱等) ，就得先将它挂上 (Mount)，而当储 存设备挂上了之后，就可以把它当成一个目录来进行访问。挂上一个设备使用mount命令。 </p>
<p>在使用mount这个指令时，至少要先知道下列三种信息： </p>
<p>1. 要Mount对象的文件系统类型？ (File system type) </p>
<p>2. 要Mount对象的设备名称？ (/dev/????) </p>
<p>3. 要将设备Mount到哪个目录去？ </p>
<p>一、获得系统支持的文件系统类型 </p>
<p>就第一点来说，用户可以执行 </p>
<p>cat /proc/filesystems<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
</p>
<p>来获得机器上支持的文件系统类型。如果系统并不支持你要挂接设备的文件系统类型，那 你可能需要重新编译内核以使其增加对该种文件类型支持。关于如何编译内核请参照LinuxAid在 线培训栏目中的相关文章。 </p>
<p>常用的文件系统有： </p>
<p>Win95/98常用的FAT 32文件系统 ：vfat </p>
<p>Win NT用的文件系统 ：ntfs </p>
<p>OS2用的文件系统 ：hpfs </p>
<p>Linux用的文件系统 ：ext2 </p>
<p>光盘片用的文件系统 ：iso9660 </p>
<p>其中虽然vfat是指FAT 32系统，但事实上它也兼容FAT 16的文件系统类型。 </p>
<p>二、确定设备的名称 </p>
<p>在Linux中，设备名称通常都在/dev里。这些设备名称的命名都是有规则的，我们可以用&#8221;推 理&#8221;的方式把设备名称找出来。 </p>
<p>譬如说/dev/hda1这个IDE设备。hd是Hard Disk(硬盘)的意思，sd是SCSI Device，fd是Floppy Device(或是Floppy Disk?)。a则是代表第一个设备，通常IDE接口可以接上四个IDE设备(例如四块 硬盘)。所以要识别IDE硬盘的方法分别就 </p>
<p>是：hda、hdb、hdc、hdd。此外，hda1中的&#8221;1&#8243;代表hda的第一个硬盘分区 </p>
<p>(partition)，hda2代表hda的第二个分割区，依此类推。 </p>
<p>此外，你可以直接检查/var/log/messages这个文件，在该文件中可以找到计算机开机后，系 统已辨认出来的设备代号。 </p>
<p>三、查找挂接点 </p>
<p>最后我们要决定将设备挂接到哪里，先查看一下你的计算机是不是有个/mnt的空目录？该目 录就是专门用来当作挂载点(Mount Point)的目录。建议您在/mnt里多建这几个目录：/mnt/ cdrom、/mnt/floppy、/mnt/mo等来当作目录的专用挂载点。 </p>
<p>举例而言，如要挂载下列五个设备的话，其执行指令可能是 (假设都是Linux的ext2系统，如 果是Win XX的话，请将ext2改成vfat)：<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
1. 软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy </p>
<p>2. MO ===>mount -t ext2 /dev/sda /mnt/mo </p>
<p>3. cdrom ===>mount -t ext2 /dev/hdc /mnt/cdrom </p>
<p>4. SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom </p>
<p>5. SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr </p>
<p>这是假设，如果你的设备的名称跟这个不同的话请自行修改。 </p>
<p>最后需要注意的是： </p>
<p>1. 执行mount动作时先打一下pwd看看现在的目录是不是在挂载点，如果现在目录在挂载点 的话，mount (或umount)不会成功 (会显示device busy)。 </p>
<p>2. 想卸载某设备的语法是umount 目录名，例如umount /mnt/cdrom等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/665.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
