??xml version="1.0" encoding="utf-8" standalone="yes"?> 图解Solaris10 For X86在vmware安装全过E?/span> 从源代码安装qY件的朋友一定对 ./configure && make && make install 安装三步曲非常熟悉了。然而究竟这个过E中的每一步幕后都发生了些什么呢Q本文将带领你一探究竟。深入理解这个过E将有助于你在LFS的基上玩q花样来。不q需要说明的是本文对 Makefile ?make 的讲解是相当q视和粗的Q但是对于理解安装过E来说够了?/p>
用一句话来解释这个过E就是: Ҏ源码包中 Makefile.in 文g的指C,configure 脚本查当前的pȝ环境和配|选项Q在当前目录中生?Makefile 文g(q有其它本文无需兛_的文?Q然?make E序按照当前目录中?Makefile 文g的指C将源代码编译ؓ二进制文Ӟ最后将q些二进制文件移?卛_?到指定的地方(仍然按照 Makefile 文g的指C??/p>
由此可见 Makefile 文g是幕后的核心。要深入理解安装q程Q必首先对 Makefile 文g有充分的了解。本文将首先讲述 Makefile ?make Q然后再讲述 configure 脚本。ƈ且在讲述q两部分内容Ӟ提供了尽可能详细的、可以运用于实践的参考资料?/p>
用一句话来概括Makefile ?make 的关pd是: 首先看看 make 的命令行语法Q?/p>
[options]是命令行选项Q可以用 make --help 命o查看全部Q[VAR=VALUE]是在命o行上指定环境变量Q这两个大家都很熟悉Q将在稍后详l讲解。而[targets]是什么呢Q字面的意思是"目标"Q也是希望本次 make 命o所完成的Q务。凭l验猜测Q这个[targets]大概可以?ckeck","install"之类(也就是常见的试和安装命?。但是它到底是个啥玩意儿Q不带Q?目标"?make 命o是什么意思?Z么在安装 LFS 工具链中?Perl-5.8.8 软g包时会出?make perl utilities"q样怪异的命令?要回{这些问题必首先理?Makefile 文g中的"规则"? Makefile 规则包含了文件之间的依赖关系和更新此规则目标所需要的命o?/p>
一个简单的 Makefile 规则是这样写的: OK! 现在你明白[targets]是什么了Q原来它们来自于 Makefile 文g中一条条规则的目?TARGET)。另外,Makefile文g中第一条规则的目标被称?l极目标"Q也是你省略[targets]参数时的目标(通常?all")?/p>
当你查看一个实际的 Makefile 文gӞ你会发现有些规则非常复杂Q但是它都符合规则的基本格式。此外,Makefile 文g中通常q包含了除规则以外的其它很多东西Q不q本文只兛_其中的变量?/p>
Makefile 中的"变量"更像?C 语言中的宏,代表一个文本字W串(变量的?Q可以用于规则的M部分。变量的定义很简单:VAR=VALUEQ变量的引用也很单:$(VAR) 或?${VAR}。变量引用的展开q程是严格的文本替换q程Q就是说变量值的字符串被_的展开在变量被引用的地斏V比如,若定义:VAR=cQ那么,"$(VAR) $(VAR)-$(VAR) VAR.$(VAR)"被展开?c c-c VAR.c"?/p>
虽然?Makefile 中可以直接用系l的环境变量Q但是也可以通过?Makefile 中定义同名变量来"遮盖"pȝ的环境变量。另一斚wQ我们可以在调用 make 时?-e 参数强制使系l中的环境变量覆?Makefile 中的同名变量Q除此之外,在调?make 的命令行上?VAR=VALUE 格式指定的环境变量也可以覆盖 Makefile 中的同名变量?/p>
下面看一个简单的、实际的Makefile文gQ?/p>
从中可以看出Qmake ?make all 以及 make prog1 prog2 三条命o其实是等L。而常用的 make check ?make install 也找C归属。同时我们也看到?Makefile 中的各种变量是如何媄响编译的。针对这个特定的 Makefile Q你甚至可以省略安装三步曲中?make 命o而直接?make install q行安装?/p>
同样Qؓ了用自定义的编译参数编?prog2 Q我们可以?make prog2 CFLAGS="-O3 -march=athlon64" ?CFLAGS="-O3 -march=athlon64" && make -e prog2 命o辑ֈ此目的?/p>
下面是Makefile中一些约定俗成的目标名称及其含义Q?/p>
下面?Makefile 中一些约定俗成的变量名称及其含义Q?/p>
q些U定俗成的变量分ZcR第一cM表可执行E序的名字,例如 CC 代表~译器这个可执行E序Q第二类代表E序使用的参?多个参数使用I格分开)Q例?CFLAGS 代表~译器执行时使用的参?一U怪异的做法是直接?CC 中包含参?Q第三类代表安装目录Q例?prefix {等Q含义简单,下面只列出它们的默认倹{?/p>
最后说?make 的命令行选项(以Make-3.81版本为准)Q?/p>
此阶D늚主要目的是生?Makefile 文gQ是最关键的运{帷q阶D,基本上所有可以对安装q程q行的个性化调整都集中在q一步?/p>
configure 脚本能够?Makefile 中的哪些内容产生影响呢?基本上可以这么说Q所有内容,包括本文最兛_?Makefile 规则?Makefile 变量。那么又是哪些因素媄响着最l生成的 Makefile 文g呢?{曰Q系l环境和配置选项?/p>
配置选项的媄响是显而易见的。但?pȝ环境"的概念却很宽泛,包含很多斚w内容Q不q我们这里只兛_环境变量Q具体说来就是将来会?Makefile 中用到的环境变量以及与 Makefile 中的变量同名的环境变量?/p>
在进一步讲qC前,先看?configure 脚本的语法,一般有两种Q?/p>
configure [OPTIONS] [VAR=VALUE]... configure [OPTIONS] [HOST] 不管是哪U语法,我们都可以用 configure --help 查看所有可用的[OPTIONS]Qƈ且通常在结N分还能看到这个脚本所兛_的环境变量有哪些。在本文中将对这两种语法q行合ƈQ用下面这U简化的语法Q?/p>
configure [OPTIONS] q种语法能够被所有的 configure 脚本所识别Q同时也能通过讄环境变量和用特定的[OPTIONS]完成上述两种语法的一切功能?/p>
虽然每个软g包的 configure 脚本千差万别Q但是它们却都有一些共同的选项Q也基本上都遵守相同的选项语法?/p>
玩交叉编译的朋友对这些选项已经很熟悉了Qƈ且对于通常的交叉编译情况而言QHOST == BUILD != TARGET 。但是对于不使用交叉~译的朋友也不必担心Q将它们三个都设为相同即可?/p>
除了上述通用的选项外,下列环境变量影响着最l生成的 Makefile 文gQ?/p>
至于讄q些环境变量的方法,你可以将它们 export 为全局变量在全局范围内用,也可以在命o行上使用 [VAR=VALUE]... configure [OPTIONS] 的语法局部用。此处就不详l描qC?/p>
|上关于~译优化的文章很多,但大多零零散散,不成体系Q本文试囄Z个完整和清晰的优化思\Q同时提供在实践中如何进行优化的详尽参考。但是,在介l所有优化知识之前首先引用LFS-Book中的一句忠告:“使用~译器优化得到的幅度性能提升Q与它带来的风险相比微不道”。你q要q行优化吗? %@=^%~*# ... 在l之前,作者还是奉劝各位:如果q求极致的优化,那么它将是一件既耗时又麻烦的事情Q你会陷入无止尽的测试、测试、再试……另外 Gentoo wiki 上有q么一句话Q?GCC has well over a hundred individual optimization flags and it would be insane to try and describe them all."所以本文不会涉及全部GCC优化选项。最后作者还是再|唆一句:优化应当适可而止为好Q将_֊留出来做一些其它事情会更有意义Q?/p>
本文的主要读者是 LFS/Gentoo 的玩Ӟ基本上比?crazy 的玩安接触q,如果你之前从未用过 LFS/Gentoo Q请先按?a >《Linux From Scratch 6.2 中文版?/font>做一?LFS Q然后再来阅L文将会更有意义。另外,本文是徏立在《深入理解Y件包的配|、编译与安装?/font>一文基之上的,在开始阅L文之前,请先阅读它?/p>
我们首先从三个方面来看与优化相关的内容: 大体上编译优化就q?三板?(其实?三脚?)了,本文接下来的内容讨只猫的后两只脚?/p>
对于~译工具自n的选择Q在假定使用 Binutils ?GCC 以及 Make 的前提下Q没什么好说的Q基本上新版本都能带来性能提升Q同时比老版本对新硬件的支持更好Q所以应当尽量选用新版本。不q追C可能带来pȝ的不E_Q这p针对实际情况q行权衡了。本文以 Binutils-2.17 ?GCC-4.1.1 以及 Make-3.81 Zq行说明?/p>
q里我们只讲解通用?体系l构选项"Q由?Ҏ选项"在每个Y件包之间千差万别Q所以不可能在此处进行讲解?/p>
q部分内容很单,q且其含义也是不a而喻的,下面只列出常用的| 如果你实在不知道应当使用哪一个,那么干脆不使用q几个选项Q让 config.guess 脚本自己ȝ吧,反正也挺准的?/p>
让我们先看看 Makefile 规则中的~译命o通常是怎么写的?/p>
大多数Y件包遵守如下U定俗成的规范: 当然也有数软g包不遵守q些U定俗成的规范,比如Q?/p>
当然q有极个别Y件包完全?胡来"Qؕ用变?增加不必要的又漏掉了应有?者有之,不用$(CC)者有之,不一而..... 管源代码~译Zq制文g的四个步骤由不同的程?cpp,gcc/g++,as,ld)完成Q但是事实上 cpp, as, ld 都是?gcc/g++ q行间接调用的。换句话_控制?gcc/g++ q于控制了所有四个步骤。从 Makefile 规则中的~译命o可以看出Q编译工L行ؓ全靠 CC/CXX CPPFLAGS CFLAGS/CXXFLAGS LDFLAGS q几个变量在控制。当然理Z控制~译工具行ؓ的还应当?AS ASFLAGS ARFLAGS {变量,但是实践中基本上没有软g包用它们?/p>
那么我们如何控制q些变量呢?一U简易的做法是首先设|与q些 Makefile 变量同名的环境变量ƈ它?export 为全局Q然后运?configure 脚本Q大多数 configure 脚本会用这同名的环境变量代?Makefile 中的倹{但是少?configure 脚本q不q样做,你必L动编辑生成的 Makefile 文gQ在其中Lq些变量q修改它们的|一些源码包在每个子文g夹中都有 Makefile 文gQ真是一件很累h的事Q?/p>
q是 C ?C++ ~译器命令。默认g般是 "gcc" ?"g++"。这个变量本来与优化没有关系Q但是有些h因ؓ担心软g包不遵守那些U定俗成的规范,x自p心设|的 CFLAGS/CXXFLAGS/LDFLAGS 之类的变量被忽略了,而烦性将原本应当攄在其它变量中的选项一股老儿塞到 CC ?CXX 中,比如QCC="gcc -march=k8 -O2 -s"。这是一U怪异的用法,本文不提倡这U做法,而是提倡按照变量本来的含义使用变量?/p>
q是用于预处理阶D늚选项。不q能够用于此变量的选项Q看不出有哪个与优化相关。如果你实在惌一个,那就使用下面q个吧: CFLAGS 表示用于 C ~译器的选项QCXXFLAGS 表示用于 C++ ~译器的选项。这两个变量实际上涵盖了~译和汇~两个步骤。大多数E序和库在编译时默认的优化别是"2"(使用"-O2"选项)q且在Intel/AMDq_上默认按照i386处理器来~译Q也是 CFLAGS="-O2 -march=i386", CXXFLAGS=$CFLAGS 。事实上Q?-O2"已经启用l大多数安全的优化选项了。另一斚wQ由于大部分选项可以同时用于q两个变量,所以仅在最后讲q只能用于其中一个变量的选项。[提醒]下面所列选项皆ؓ非默?/strong>选项Q你只要按需d卛_?/p>
先说?-O3"?-O2"基础上增加的几项Q?/p>
另外Q?/p>
调试选项Q?/p>
全局选项Q?/p>
目录选项Q?/p>
代码生成选项Q?/p>
g体系l构相关选项[仅仅针对x86与x86_64]Q?/p>
其它优化选项Q?/p>
传递给汇编器的选项Q?/p>
仅可用于 CFLAGS 的选项Q?/p>
仅可用于 CXXFLAGS 的选项Q?/p>
LDFLAGS 是传递给q接器的选项。这是一个常被忽视的变量Q事实上它对优化的媄响也是很明显的?/p>
最后说两个与优化无关的pȝ环境变量Q因Z影响GCC~译E序的方式,下面两个是咱中国人比较关心的Q?/p>
IBM服务器,LinuxpȝQ三块硬盘做Raid5Q今天终于成功加上了块硬盘! W一步很?br> W二步,分区 Device Boot Start End Blocks Id System Disk /dev/sdb: 36.4 GB, 36401315840 bytes Device Boot Start End Blocks Id System The number of cylinders for this disk is set to 4442. Command (m for help): W三步,格式?br> q儿Q格式化成ext3格式Q命令ؓmkfs.ext3 /dev/hdb1 Z让硬盘在pȝ启动时自动挂载,用vi~辑/etc/fstab文gQ加入如下内容(比如挂蝲?mnt/hd目录Q?br>/dev/dhb1 /mnt/hd reiserfs defaults 1 1
选择安装cd我选择的是3Q因为它看上L较友好吧, pcn0是我的网卡,它另一头是加电的ADSL
3、按ESC改变外设的配|主要是昑֍Q手要快?br>
4、改昑֍Q其实这里的昄不是最l配|,只是Z安装q程昄
5、按某位仁兄的帖子设定,实际安装完后配置l果是比较接q刚刚的默认?br>
6 、ESC +2键l(h意下面的菜单阿)
7、其实我的显C器?7?br>
8?800x600
9、l?br>
10?ESC+2 试效果Q会出来各种颜色的椭圆,下面有yes no点yes 试成功
11、选语aQ看着?br>
12、F2
13、F2
14、l?br>
15、l?br>
16、主机名Q安装完可以改)
17?#8230;…Q!
18Q选择子网才会让写子网掩码
19、加IPV6 也行不媄响用(看字q)
20、\由,我是ADSL和\由没关系1Q?都行
21、回儡l配|?br>
22、参考他_我不清楚Q所以默?br>
23、命名服务,我选的NONE但安装后的一个错误可能和他有养I不过解决了,h着看,我后悔没选DNSQ一般我按系l都来一个chenghe.com
24、口令拉
25、标准(其他不清楚)
26、手动啦Q这样他会要求你适时换盘Q用实际光驱的话Q自动也许好一点)
27、自动引导吧Q我可不xơ都得手动敲命o引导
28、协议阿Q每个Y仉有,除了病毒
29、选择安装产品、我是新玩家Q有盘全装,不然Q安完打补丁会有ȝ?br>
30?附加产品我没下,不用扫描?br>
31、就是有盘Q我选大的、大的全Q我刚又配个80G的硬盘加Ud盒)
32、要选硬盘了Q格式化{等Q按I格键?br>
33、整个的吧,q块虚拟盘是l他?br>
34、自动设|分区F2 Q手工的freebsd,openbsd也设q,但新学的东西默认保险?br>
35、默认的两个挂蝲点就行、选多了分l了会要求更大的盘Q实际系l会Ҏ需要自动划分细些、如果是实际应用的话应该手动讑֕
36、默认划分、l?br>
37、我没有文g服务器、另外也不缺盘I间Ql?br>
38、ȝ一下,可以F4 修改不满意的地方啊,我l?br>
39、大概是因ؓ现在的引D备是CDROMQ系l改为刚配好的硬盘了Q开始吧
40、安装进度,{吧Q这里只是开始啊
41、第一张盘用完了,pȝ自动重v
42、启动信?br>
43、大概意思是需要有个域名,要不要覆盖yes的话会要求你重新写个域名。注意到我前面配制网l的时候要求过命名服务Q我选的NONE。这里我选NOQ等安装完不行再修改?br>
44、警告,pȝ讑֤配置也许不正或不完_误入ROOT的密码以便用KDMconfig工具q行修改Q那改?br>
45、提C显卡和昄器配|不正确QF2改一?br>
46、与开始安装时步骤差不多,Ҏ?br>
47、自动找到的配置、从q里看到solaris10可以自动识别匚wvmware、不用特意装驱动
48、默认匹?br>
49?7?7Q反正我的显C器是飞利17液晶
http://opensolaris.org
Sun 中国技术社?br>http://developers.sun.com.cn
OpenSolaris 中文 Wiki
http://wiki.gceclub.sun.com.cn/index.php
OpenSolaris/Solaris中文FAQ
http://wiki.gceclub.sun.com.cn/index.php/Opensolaris_chinese_faq
一般讨?
pȝ安装
使用/理/配置
应用E序开?
内核和驱动程序开?
其他
附:以下转自Wikipdia的Solaris条目Q根据最C息,有所修改
Solaris
Solaris是太阛_司研制的UNIXcL作系l。目前正式发布的最新版为Solaris 10。早期的Solaris是由BSDpd发展而来。这是因为太阛_司的创始人来自U.C.Berkeley。但是随着旉的推U,Solaris现在在接口上正在逐渐向System V靠拢?目前Solaris仍旧属于U有软g?005q??4日,Sun公司正在开发中的Solaris 11的源代码以CDDL许可开放,q一开攄本就是OpenSolaris?br>
Sun的操作系l最初叫做SunOSQ由于Sun Microsystem的创始h之一QBill Joy, U.C.BerkeleyQ因此SunOS主要是基于BSDUnix 版本。SunOS 5.0开始,SUN的操作系l开发开始{向System V Release 4Qƈ且有了新的名字叫做Solaris 2.0QSolaris 2.6以后,SUN删除了版本号中的"2Q因此,SunOS 5.10叫做Solaris 10?Solaris的早期版本后来又被重新命名ؓSolaris 1.x. 所?SunOS"q个词被用做专指Solaris操作pȝ的内核,因此Solaris被认为是由SunOSQ图形化的桌面计环? 以及它网l增强部分组成?br>
目录
1 q_
2 用户?
3 桌面环境
4 开放源代码
5 相关技?
6 主要版本
7 OpenSolaris的衍生版?
q_
Solarisq行在两个^収ͼIntel x86及SPARC/UltraSPARC。后者是Sun工作站用的处理器。因此,Solaris在SPARC上拥有强大的处理能力和硬件支持,同时Intel x86上的性能也正在得到改善。对两个q_QSolaris屏蔽了底层^台差异,为用h供了可能一L使用体验?最新发布的Solaris10包含若干创新技术,包括ZFSQDTraceQSolaris ZonesQContainerQ?预测性自愈等。其中一些以往只可能在专业服务器等h相关g的大型机器上才可能得到支持,但Solaris10使得M一台普通PC都可以具有这些能力?Solaris支持多种pȝ架构: SPARC, x86 and x64. x64即AMD64及EMT64处理器。在版本2.5.1的时候,Solaris曄一度被UL到PowerPC架构, 但是后来又在q一版本正式发布时被删去。与Linux相比QSolaris可以更有效地支持对称多处理器、即SMP架构。Sun同时宣布在Solaris 10的后l版本中提供Linuxq行环境, 允许Linux二进制程序直接在Solaris x86和x64pȝ上运行,目前Q这一技术已通过Solaris Zone的一个特D实?BrandZ)得到支持?br>Solaris传统上与ZSun SPARC处理器的g体系l构l合紧密, 在设计上和市Zl常捆绑在一P整个软硬件系l的可靠性和性能也因此大大增强。然而SPARCpȝ的成本和h通常要高于PCcȝ产品Q这成ؓ Solarisq一步普及的障碍。可喜的是,Solaris对x86体系l构的支持正得到大大加强Q特别是Solaris 10已经能很好地支持x64(AMD64/EMT64)架构。Sun公司已推行设计的ZAMD64的工作站和服务器Qƈ随机附带Solaris 10?br>
用户?br>早期的Solaris主要用于Sun工作站上Q不q随著Sun让Solaris可以免费下蝲和OpenSolaris的释出后QSolaris/OpenSolaris 除了作ؓ服务?工作站的用途外。已l开始可以作为Desktop用途。虽然现在仍然不普及且应用程序和讑֤驱动的支援尚嫌不I但这一问题正得到快速改善,未来 用户朝向一般大众的情况仍是有很高的可能性的?br>目前各大软g、应用程序厂商对SPARCq_的支援尚良好,但对x86q_的Solaris多半都不支援。这也是x86使用者面临的 困境之一?br>
桌面环境
W一个Solaris的桌面环境是OpenWindows。紧接着是Solaris 2.5的CDE?在Solaris 10中,Sun又推ZZGNOME的,Java Desktop System。另外也支援KDE(详见QKDE-Solaris)QXFCE,WindowMaker{?BlastWave).
开放源代码
Solaris已开攑օ部分源代码,但是׃Sun公司的源代码许可证,Solaris不是自由软gQ而OpenSolaris才是?可参?a target=_blank>http://www.opensolaris.org/os/ . Solaris的大多数源代码已l在CDDL的许可下在OpenSolaris开源项目中发布。二q制和源代码目前都可以被下蝲和许可而无需M费用?br>Sun的Common Development and Distribution License被选择用做OpenSolaris的许? q过了Open Source Initiative评审和批?管它与时下行的[GPL]是互不兼容的)?OpenSolaris?005q??4日正式启动,源代码来自当前的Solaris开发版本。Solaris未来的版本将从OpenSolaris衍生?br>关于CDDL可以参考:CDDL授权条款
相关技?br>ZFS
DTrace
Zone
主要版本
Solaris最新的主要发布版本如下:
Solaris版本 SunOS内核版本 发布日期 ?br>Solaris 11 SunOS 5.11 Nevada 未正式发布
Solaris 10 SunOS 5.10 2005q??1?包括DTrace (动态跟t?, Solaris Containers, Service
Management Facility (SMF)QSMF取代了传l的UNIX的init.d
脚本, 和iSCSI支持?ZGnome的Java Desktop System作ؓ
默认桌面, q包含了CDE?br>Solaris 9 SunOS 5.9 2002q??2?最q的更新是Solaris 9 9/05
Solaris 8 SunOS 5.8 2000q??包括Multipath I/O. 引入Role-Based Access Control (RBAC)?br>能?最q的更新是Solaris 8 2/04.
Solaris 7 SunOS 5.7 1998q?1?W一?4位版本?br>Solaris 2.6 SunOS 5.6 1997q??包括Kerberos 5, PAM, TrueType字体, WebNFS
Solaris 2.5.1 SunOS 5.5.1 1996q??用户ID(uid_t)扩展?2-bits?br>Solaris 2.5 SunOS 5.5 1995q?1?首先支持Ultra 1q包含了CDE
SUN对Solaris 7和Solaris 2.6已经不再销售但仍旧提供支持。更早期的版本已l没有支持?br>
SunOS仍旧用来U呼Solaris的核? SunOS的版本号是以5.{Solaris版本号}来表C。例如,最新的Solaris发布版本QSolaris 10Q?在SunOS 5.10上运行。Solaris的man手册是以SunOS为标记的Q启动的时候也昄? 但是"SunOS"q个词不再用于Sun的市场文中?br>
OpenSolaris的衍生版?br>Schillix, 最早的OpenSolaris发布版本
Belenix, OpenSolaris发布版本之一QliveCD形式?
Nexenta, cDebian的发布版?ZGNU软g和Solaris的SunOS内核Q也被称为GNU/Solaris
Polaris, PowerPCUL版本
Martux
Solari
概述
Makefile ?make
Makefile 包含了所有的规则和目标,?make 则是Z完成目标而去解释 Makefile 规则的工兗?/p>
make 语法
make [options] [targets] [VAR=VALUE]...
Makefile 规则
TARGET : PREREQUISITES
COMMAND
Makefile 变量
Makefile 实例
CC=gcc
CPPFLAGS=
CFLAGS=-O2 -pipe
LDFLAGS=-s
PREFIX=/usr
all : prog1 prog2
prog1 : prog1.o
$(CC) $(LDFLAGS) -o prog1 prog1.o
prog1.o : prog1.c
$(CC) -c $(CFLAGS) prog1.c
prog2 : prog2.o
$(CC) $(CFLAGS) $(LDFLAGS) -o prog2 prog2.o
prog2.o : prog2.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) prog2.c
clean :
rm -f *.{o,a} prog{1,2}
install : prog1 prog2
if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi
cp -f prog1 $(PREFIX)/bin/prog1
cp -f prog2 $(PREFIX)/bin/prog2
check test : prog1 prog2
prog1 < sample1.ref > sample1.rz
prog1 < sample2.ref > sample3.rz
cmp sample1.ok sample1.rz
cmp sample2.ok sample2.rz
Makefile 惯例
AR 函数库打包程序,可创建静态库.a文。默认是"ar"?
AS 汇编E序。默认是"as"?
CC C~译E序。默认是"cc"?
CXX C++~译E序。默认是"g++"?
CPP C/C++预处理器。默认是"$(CC) -E"?
FC Fortran~译器。默认是"f77"?
PC Pascal语言~译器。默认是"pc"?
YACC Yacc文法分析器。默认是"yacc"?
ARFLAGS 函数库打包程序的命o行参数。默认值是"rv"?
ASFLAGS 汇编E序的命令行参数?
CFLAGS C~译E序的命令行参数?
CXXFLAGS C++~译E序的命令行参数?
CPPFLAGS C/C++预处理器的命令行参数?
FFLAGS Fortran~译器的命o行参数?
PFLAGS Pascal~译器的命o行参数?
YFLAGS Yacc文法分析器的命o行参数?
LDFLAGS 链接器的命o行参数?
prefix /usr/local
exec_prefix $(prefix)
bindir $(exec_prefix)/bin
sbindir $(exec_prefix)/sbin
libexecdir $(exec_prefix)/libexec
datadir $(prefix)/share
sysconfdir $(prefix)/etc
sharedstatedir $(prefix)/com
localstatedir $(prefix)/var
libdir $(exec_prefix)/lib
infodir $(prefix)/info
includedir $(prefix)/include
oldincludedir $(prefix)/include
mandir $(prefix)/man
srcdir 需要编译的源文件所在的目录Q无默认?
make 选项
configure
通用 configure 语法
通用 configure 选项
脚本自n选项
目录选项
体系l构选项
Ҏ选项
通用环境变量
OK, crazy guy! Let's Go!!先决条g
基本原理
~译工具的选择
configure 选项
~译选项
#1,首先从源代码生成目标文g(预处?~译,汇编)Q?-c"选项表示不执行链接步骤?
$(CC) $(CPPFLAGS) $(CFLAGS) example.c -c -o example.o
#2,然后目标文件连接ؓ最l的l果(q接)Q?-o"选项用于指定输出文g的名字?
$(CC) $(LDFLAGS) example.o -o example
#有一些Y件包一ơ完成四个步骤:
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) example.c -o example
#1,有些在命令行中漏掉应有的Makefile变量(注意Q有些遗漏是故意?
$(CC) $(CFLAGS) example.c -c -o example.o
$(CC) $(CPPFLAGS) example.c -c -o example.o
$(CC) example.o -o example
$(CC) example.c -o example
#2,有些在命令行中增加了不必要的Makefile变量
$(CC) $(CFLAGS) $(LDFLAGS) example.o -o example
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) example.c -c -o example.o
CC ?CXX
CPPFLAGS
CFLAGS ?CXXFLAGS
-falign-jumps=N
-falign-loops=N
-falign-labels=N
-mno-mmx
-msse
-mno-sse
-msse2
-mno-sse2
-msse3
-mno-sse3
-m3dnow
-mno-3dnow
-fbranch-target-load-optimize2
LDFLAGS
1、用Raid驱动盘(是不是这么叫Q呵呵)引导Q将新加的盘做Raid0(因ؓ只加了一块盘)
2、通过fdisk分区
3、通过mkfs.ext3格式化新的分区,完成
1、通过fdisk -l查看未分区硬?br>Disk /dev/sda: 72.8 GB, 72802631680 bytes
254 heads, 63 sectors/track, 8885 cylinders
Units = cylinders of 16002 * 512 = 8193024 bytes
/dev/sda1 * 1 13 103981+ 83 Linux
/dev/sda2 14 8656 69152643 83 Linux
/dev/sda3 8657 8885 1832229 82 Linux swap
254 heads, 63 sectors/track, 4442 cylinders
Units = cylinders of 16002 * 512 = 8193024 bytes
q儿可以看到Q?dev/sdb未分区
2、通过fdisk /dev/sdb?dev/sdbq行分区
[root@ckkhserver root]# fdisk /dev/sdb
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
键入m查看帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
选n add a new partitionQ创Z分区
Command action
e extended
p primary partition (1-4)
我不知道q是什么意思,但尝试后知道Q应该选p primary partition (1-4)
然后Ҏ情况键入数字Q比?
再根据提C选择分区的类型,L查看知道有这么一个类型,83 Linux
那就选这个类型,输入83Q然后保存退出,分区完成了
先说说他的功能吧Q主要就是从q行FTP服务器的计算Z输文件。可以交互用。这里要注意Q只有安装了tcp/ip协议的机器才能用ftp命o?
命o格式Qftp [-v][-d][-i][-n][-g][-s:filename][-a][-w:windowsize][computer]
说说他们的含义吧?
-v 不显CE服务器响应
-n 止W一ơ连接的时候自动登?
-i 在多个文件传输期间关闭交互提C?
-d 允许调试、显C客h和服务器之间传递的全部ftp命o
-g 不允怋用文件名通配W,文g名通配W的意思是说允许在本地文g以及路径名中使用通配字符
-s:filename 指定包含ftp命o的文本文件。在ftp命o启动后将自动q行q些命o。在加的参数里不能有I格?
-a l定数据q接Ӟ使用M的本地端?
-w:windowsize 忽略默认?096传输~冲?
computer 指定要连接的q程计算机的ip地址
1Q??
说明Q显Cftp命o的说明。后面可以加参数Q是加需要解释的命o名,不加则显C包含所有命令列表?
2Q?!
说明:功能是在本地计算Zq行指定命o?
? command 其中command是你要q行的命令,如果不加commandq个参数的话Q则昄本地命o提示Q?q时你输入exit命opq回到ftp了?
3Q? macroQame[args]
说明Q执行宏定义macroQname?
4Q?append
说明Q用当前文件类型设|,本地文仉加到q程计算Z。大概格式是append local-file [remote-file] 其中local-file是说指定要添加的本地文g。remote-file是说指定要将local-file附加到远E计机文gQ要是省了这个,则是使用本地文g名做q程文g名?
5Qaccount[password]
说明Q提供登录远E系l成功后讉Kpȝ资源所需的补充口令?
6)ascii
说明:默认情况下,文件传输类型设|ؓASCII
7)bell
说明Q响玲开养I意思是文g传输完成后是否有玲声提醒。默认是关闭的?
8)binary
说明Q将文g传输cd讄Zq制?
9)bye
说明:l束和远E计机的ftp会话Q也是安全断开Q退出ftp.
10)cd
说明Q更改远E计机上的工作目录?
如cd data 其中data是要q入的远E计机的目录?
12Qcdup
说明Q进入远E主机目录的父目录?
13Qchmod modefileQname
说明Q将q程L文gfileQname的存取方式设|ؓmode?
?chmod 777 a.out?
14Qcr
说明Q用asscii方式传输文g?回车换行{换ؓ回行?
15)close
说明:l束与远E服务器的ftp会话Qƈq回命o解释E序?
16)dir
说明:昄q程的文件以及子目录列表?
如dir data local-file其中data是指定要查看列表的目录,没指定的话就是当前目录。local-file是指定要保存列表的本地文Ӟ不指定的话就在屏q输出?
17)debug
说明Q调试开养I打开的时候打印每个发送到q程计算机的命oQ命令前有—?gt;默认情况是关闭的?
18)disconnnect
说明Q与q程计算机断开q接Q但q保持着ftp命o提示W?
19Qdelete remoteQfile
说明Q删除远E主机文件?
20Qdisconnection
说明Q同close?
21Qform format
说明Q将文g传输方式讄为format,~省为file方式?
22)get
说明Q用当前文件传输类型,把远E的文g拯到本地计机上?
如get remote-file local-fileremote-file是指定要复制的文Ӟlocal-file是指定本地计机上的文g名,没有指定的话则个remote-file同名?
23)glob
说明Q文件名通配开?
24)hash
说明Q{换每个传输数据快的散列标记打?#).数据快的大小?048字节。默认情况下是关闭的Q?
25)help
说明Q显Cftp命o的解释,如help commmand 其中command是你要解释的命令,如果不加commandq个参数的话׃昄所有命令的列表
26Qidle[seconds]
说明Q将q程服务器的休眠计时器设为[seconds]U?
27Qimage
说明Q设|二q制传输方式(同binary)
28)lcd
说明:更改本地计算机的本地目录,在默认的时候是启动ftp的目?q个不要觉得没用啊,在你使用ftp的时候ؓ了传递文件不是常改变本地和远E计机的目录吗?
如lcd [directory] 其中[directory]是指定要q入的本地计机的目?如果你不加这个参?׃昄出本地计机的工作目?
29)literal
说明:向远Eftp服务器发送协商参?报告.
如lireral argument [...] 其中argument是指定要发送给q程服务器的协商参数?
30)ls
说明:昄q程目录的文件和字目?
如ls remote-directory local-file其中remote-directory是指要查看的列表的目?不指定的话显C的是当前工作目录。local-file是指定要保存列表的本地文?不指定的话是在屏q上输出.
31Qmacdef macroQname
说明Q定义一个宏,遇到macdef下的I?宏定义结束?
32)mdelete
说明:删除q程计算Z的文?
如mdelete remote-file ...remote-file肯定是要删的文g啊,可以删除多个.
33)mdir
说明:昄q程目录的文件和子目录列?他允许指定多个文?
如mdir remote-file ... local-file参数我想大家应该明白什么意思吧?不明白就看看前面的类似命令吧.
34)mget
说明:使用当前文g传输cd多个远E文件复制到本地计算?
如mget remote-files ...其实remote-files可以指定多个Q他是指定要复制到本地计算机的q程文g.
35)mkdir
说明:创徏q程目录.
如mkdir directory q个命o和nt下的命o提示W中的md directory一P不多说了.
36)mls
说明:昄q程目录的文件和目录?
如mls remote-file ... local-file其中remote-fileq个参数是必要加的Q?-'是用远E计机的当前工作目?
37)mput
说明:使用当前文g传输cd,本地文件复制到q程计算?
如mput local-files ...
38Qmode[modeQname]
说明Q将文g传输方式讄为modeQname,~省为stream方式?
39Qmodtime fileQname
说明Q显CE主机文件的最后修Ҏ间?
39QnewerfileQname
说明Q如果远E机中fileQname的修Ҏ间比本地盘同名文g?旉更近,则重传该文g?
40Qnlist[remoteQdir][localQfile]
说明Q显CE主机目录的文g清单,q存入本 地硬盘的localQfile?
41Qnmap[inpatternoutpattern]
说明Q设|文件名映射机制,使得文g传输?文g中的 某些字符怺转换?
如nmapK?.K?.K?[K?,K?].[K?,K?],则传输文件a1.a2.a3?, 文g名变为a1、a2Q该命o特别适用于远E主Zؓ非UQNIX机的情况?
42Qntrans[inchars[outchars]
说明Q设|文件名字符的翻译机?如ntrans1R,则文件名LLL变为RRR?
43Qopen
说明:q接到指定ftp服务器上Q?
如open computer port 其中computer一般是q程计算机的ip地址,port不用说就是指定端口了?
44Qpassive
说明Q进入被动传输方式?
45)prompt
说明:转换提示,在多个文件传输的时?ftp提示可以有选择的检索或保存文gQ如果关闭提C?则mget和mput命o传输所有文?在默认情况下是打开?
46QproxyftpQcmd
说明Q在ơ要控制q接?执行一条ftp命o,该命令允许连接两个ftp服务?以在两个服务器间传输文g。第一条ftp命o必须为open,以首先徏立两个服务器间的q接
47)put
说明:使用当前文g传输cd本地文件复制到q程计算ZQ?
如put local-file remote-file其中local-file是指定要复制的本地文Ӟremote-file是指定要复制的远E计机上的文g名,不指定的话是和本地计机上的文g名同?
48)pwd
说明:昄q程呢感计算Z的当前目?
49)quit
说明:l束与远E计机的ftp会话,q出ftp.
50)quote
说明:向远Eftp服务器发送协?报告.期待ftp单码应答,q个命o的功能和literal相同.
51)recv
说明:使用当前文g传输cd远E文件复制到本地计算?他与get命o作用相同?
52QregetremoteQfile[localQfile]
说明Q类gget,但若localQfile存在,则从?ơ传输中断处l传
53)remotehelp
说明:昄q程命o的帮?q个命o的用法和help,!一样可以参考他的用?
54)rename
说明:更改q程计算Z的文件名。这个命令和nt的命令提C符的ren一栗?
如rename filename newfilename
55Qreset
说明Q清除回{队列?
56Qrestart marker
说明Q从指定的标志marker?重新开始get或put,如restart 130?
57)rmdir
说明:删除q程目录.q个命o和nt的命令提C符的rm一栗?
如rmdir directory
58Qrunique
说明Q设|文件名唯一性存?若文件存?则在原文件后加后~?
59)send
说明:使用当前文g传输cd本地文件复制到q程计算?send和put命o的功能一栗?
如send local-file remote-file
60)status
说明:昄ftpq接和{换的当前状?
61sendport
说明Q设|PORT命o的用?
62Qsite arg1,arg2......
说明Q将参数作ؓSITE命o逐字发送至q程ftpL?
63Qsize fileQname
说明Q显CE主机文件大?
如site idle 7200?
64Qstatus
说明Q显C当前ftp状态?
65Qstruct[structQname]
说明Q将文g传输l构讄为structQname,~省时?streaml构?
66Qsunique
说明Q将q程L文g名存储设|ؓ唯一(与runique对应)?
67Qsystem
说明Q显CE主机的作系l类型?
68Qtenex
说明Q将文g传输cd讄为TENEX机所需的类型?
69Qtick
说明Q设|传输时的字节计数器?
70)trace
说明:转换报文跟踪,q行ftp的命令时,trace显C没个报文的理由?
71)type
说明:讄或显C文件传输类?
如type [type-name]其中type-name 的意思是文g传输的类型,默认是ASCII,没加q个参数是昄当前的传输类?
72umask[newmask]
说明Q将q程服务器的~省umask讄为newmask,如umask 3?
73)user
说明:指定q接到远E计机的用?
如user user-name [passwd] [account]其中user-name不用说都是用来登陆计机的用户名了,passwd是指定user-name的密?不指定的话ftp会提C入密码。account是指定用来登陆计机的帐?如不指定,ftp会提C入帐?
74)verbose
说明:转换冗余模式,q里如果打开,会显C所有ftp响应,文g传输l束的时候会昄传输的效率和l计信息,默认的情冉|打开?br>
名称 : cd
使用权限 : 所有用?
使用方式 : cd [dirName]
说明 : 变换工作目录?dirName?其中 dirName 表示法可为绝对\径或相对路径。若目录名称省略Q则变换至用者的 home directory (也就是刚 login 时所在的目录)?
另外Q?~" 也表CZؓ home directory 的意思,"." 则是表示目前所在的目录Q?.." 则表C目前目录位|的上一层目录?
范例 : 跛_ /usr/bin/ :
cd /usr/bin
跛_自己?home directory :
cd ~
跛_目前目录的上上两?:
cd ../..
指o名称 : chmod
使用权限 : 所有用?
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的案存取权限分ZU?: 案拥有者、群l、其他。利?chmod 可以藉以控制档案如何被他人所存取?
把计 :
mode : 权限讑֮字串Q格式如?: [ugoa...][+-=][rwxX]...][,...]Q其中u 表示该档案的拥有者,g 表示与该案的拥有者属于同一个群?group)者,o 表示其他以外的hQa 表示q三者皆是?
+ 表示增加权限? 表示取消权限? 表示唯一讑֮权限?
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该案是个子目录或者该案已经被设定过为可执行?
-c : 若该档案权限实已经更改Q才昄其更改动?
-f : 若该案权限无法被更改也不要昄错误讯息
-v : 昄权限变更的详l资?
-R : 对目前目录下的所有案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 昄辅助说明
--version : 昄版本
范例 :?file1.txt 设ؓ所有h皆可d :
chmod ugo+r file1.txt
?file1.txt 设ؓ所有h皆可d :
chmod a+r file1.txt
?file1.txt ?file2.txt 设ؓ该档案拥有者,与其所属同一个群体者可写入Q但其他以外的h则不可写?:
chmod ug+w,o-w file1.txt file2.txt
?ex1.py 讑֮为只有该案拥有者可以执?:
chmod u+x ex1.py
目前目录下的所有案与子目录皆设ؓM人可d :
chmod -R a+r *
此外chmod也可以用数字来表C权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各ؓ一个数字,分别表示User、Group、及Other的权限?
r=4Qw=2Qx=1
若要rwx属性则4+2+1=7Q?
若要rw-属性则4+2=6Q?
若要r-x属性则4+1=7?
范例Q?
chmod a=rwx file
?
chmod 777 file
效果相同
chmod ug=rwx,o=x file
?
chmod 771 file
效果相同
若用chmod 4755 filename可此程式具有root的权?/span>
指o名称 : chown
使用权限 : root
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
说明 : Linux/Unix 是多人多工作业系l,所有的案皆有拥有者。利?chown 可以档案的拥有者加以改变。一般来_q个指o只有是由pȝ理?root)所使用Q一般用者没有权限可以改变别人的案拥有者,也没有权限可以自q案拥有者改设ؓ别h。只有系l管理?root)才有q样的权限?
把计 :
user : 新的案拥有者的使用?IDgroup : 新的档案拥有者的使用者群?group)-c : 若该案拥有者确实已l更改,才显C其更改动作-f : 若该案拥有者无法被更改也不要显C错误讯?h : 只对于连l?link)q行变更Q而非?link 真正指向的?v : 昄拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变?即以递回的方式逐个变更)--help : 昄辅助说明--version : 昄版本
范例 :
?file1.txt 的拥有者设?users 体的用?jessie :
chown jessie:users file1.txt
目前目录下的所有案与子目录的拥有者皆设ؓ users 体的用?lamport :
chmod -R lamport:users *
名称Qcp
使用权限Q所有用?
使用方式Q?
cp [options] source dest
cp [options] source... directory
说明Q将一个案拷贝至另一档案Q或数个案拷贝至另一目录?
把计
-a 可能将案状态、权限等资料都照原状予以复制?
-r ?source 中含有目录名Q则目录下之案亦皆依序拷贝至目的地?
-f 若目的地已经有相同档名的案存在Q则在复制前先予以删除再行复制?
范例Q?
?aaa 复制(已存?Qƈ命名?bbb :
cp aaa bbb
所有的C语言E式拯?Finished 子目录中 :
cp *.c Finished
名称Qcut
使用权限Q所有用?
用法Qcut -cnum1-num2 filename
说明Q显C每行从开头算?num1 ?num2 的文字?
范例Q?
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字?
test2
this i
名称 : find
用法 : find
使用说明 :
案系l内W合 expression 的案列出来。你可以指要案的名U、类别、时间、大、权限等不同资讯的组合,只有完全相符的才会被列出来?
find Ҏ下列规则判断 path ?expressionQ在命o列上W一?- ( ) , ! 之前的部份ؓ pathQ之后的?expression。如?path 是空字串则用目前\径,如果 expression 是空字串则?-print 为预?expression
expression 中可使用的选项有二三十个之多,在此只介l最常用的部份?
-mount, -xdev : 只检查和指定目录在同一个档案系l下的案,避免列出其它案pȝ中的案
-amin n : 在过?n 分钟内被dq?
-anewer file : 比?file 更晚被读取过的档?
-atime n : 在过?n 天过dq的案
-cmin n : 在过?n 分钟内被修改q?
-cnewer file :比?file 更新的?
-ctime n : 在过?n 天过修改q的档案
-empty : I的案-gid n or -group name : gid ?n 或是 group 名称?name
-ipath p, -path p : 路径名称W合 p 的案,ipath 会忽略大写
-name name, -iname name : 案名称W合 name 的档案。iname 会忽略大写
-size n : 案大小 ?n 单位Qb 代表 512 位元l的区块Qc 表示字元敎ͼk 表示 kilo bytesQw 是二个位元组?type c : 案cd?c 的案?
d: 目录
c: 字型装置档案
b: 区块装置案
p: 具名贮列
f: 一般?
l: W号q结
s: socket
-pid n : process id ?n 的?
你可以?( ) 运式分隔Qƈ使用下列q算?
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
目前目录及其子目录下所有g伸档名是 c 的案列出来?
# find . -name "*.c"
目前目录其其下子目录中所有一般案列?
# find . -ftype f
目前目录及其子目录下所有最q?20 分钟内更新过的档案列?
# find . -ctime -20
名称Qless
使用权限Q所有用?
使用方式Q?
less [Option] filename
说明Q?
less 的作用与 more 十分怼Q都可以用来览文字档案的内容,不同的是 less 允许使用者往回卷?
以浏览已l看q的部䆾Q同时因?less q未在一开始就d整个案Q因此在遇上大型案的开启时Q会比一般的文书~辑??vi)来的快速?
范例Q?
指o名称 : ln
使用权限 : 所有用?
使用方式 : ln [options] source distQ其?option 的格式ؓ :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
说明 : Linux/Unix 案pȝ中,有所谓的q结(link)Q我们可以将其视为档案的别名Q而连l又可分ZU?: 连l?hard link)与Yq结(symbolic link)Q硬q结的意思是一个档案可以有多个名称Q而Yq结的方式则是生一个特D的案Q该案的内Ҏ指向另一个案的位置。硬q结是存在同一个档案系l中Q而Yq结却可以跨不同的档案pȝ?
ln source dist 是生一个连l?dist)?sourceQ至于用硬q结或Y铄则由参数军_?
不论是硬q结或Y铄都不会将原本的案复制一份,只会占用非常量的磁空间?
-f : 铄时先与 dist 同名的案删除-d : 允许pȝ理者硬铄自己的目?i : 在删除与 dist 同档名的档案时先q行询问-n : 在进行Yq结Ӟ?dist 视ؓ一般的案-s : q行软链l?symbolic link)-v : 在连l之前显C其名-b : 在铄时会被覆写或删除的案进行备?S SUFFIX : 备份的档案都加?SUFFIX 的字?V METHOD : 指定备䆾的方?-help : 昄辅助说明--version : 昄版本
范例 :
?yy 产生一?symbolic link : zz
ln -s yy zz
?yy 产生一?hard link : zz
ln yy xx
名称Qlocate
使用权限Q所有用?
使用方式Q?locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明Q?
locate 让用者可以很快速的搜寻案pȝ内是否有指定的档案。其Ҏ是先建立一个包括系l内所有档案名U及路径的资料库Q之后当L时就只需查询q个资料库,而不必实际深入案系l之中了?
在一般的 distribution 之中Q资料库的徏立都被放?contab 中自动执行。一般用者在使用时只要用
# locate your_file_name
的型式就可以了?参数Q?
-u
-U
建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置?
-e
?
排除在寻扄范围之外?
-l
如果 ?1Q则启动安全模式。在安全模式下,使用者不会看到权限无法看到的案。这会始速度减慢Q因?locate 必须臛_际的案pȝ中取得档案的权限资料?
-f
特定的档案pȝ排除在外Q例如我们没有到理要?proc 案pȝ中的案攑֜资料库中?
-q
安静模式Q不会显CZQ何错误讯息?
-n
臛_昄 个输出?
-r
使用正规q算?做寻扄条g?
-o
指定资料库存的名U?
-d
指定资料库的路径
-h
昄辅助讯息
-v
昄更多的讯?
-V
昄E式的版本讯?范例Q?
locate chdrv : L所有叫 chdrv 的档?
locate -n 100 a.out : L所有叫 a.out 的案,但最多只昄 100 ?
locate -u : 建立资料?/span>
名称 : ls
使用权限 : 所有用?
使用方式 : ls [-alrtAFR] [name...]
说明 : 昄指定工作目录下之内容Q列出目前工作目录所含之案及子目录)?
-a 昄所有案及目录 (ls内定档案名或目录名U开头ؓ"."的视为隐藏Q不会列?
-l 除案名U外Q亦案型态、权限、拥有者、档案大等资讯详细列出
-r 案以相反ơ序昄(原定依英文字母次?
-t 案依建立旉之先后次序列?
-A ?-a Q但不列?"." (目前目录) ?".." (父目?
-F 在列出的案名称后加一W号Q例如可执行则?"*", 目录则加 "/"
-R 若目录下有档案,则以下之案亦皆依序列出
范例Q?
列出目前工作目录下所有名U是 s 开头的案Q愈新的排愈后面 :
ls -ltr s*
?/bin 目录以下所有目录及案详细资料列出 :
ls -lR /bin
列出目前工作目录下所有档案及目录Q目录于名称后加 "/", 可执行档于名U后?"*" :
ls -AF
名称Qmore
使用权限Q所有用?
使用方式Qmore [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明Q类?cat Q不q会以一一늚昄方便使用者逐页阅读Q而最基本的指令就是按I白键(spaceQ就往下一|C,?b 键就会往回(backQ一|C,而且q有搜寻字串的功能(?vi 怼Q,使用中的说明文gQ请?h ?
参数Q?num 一ơ显C的行数
-d 提示使用者,在画面下ҎC?[Press space to continue, q to quit.] Q如果用者按错键Q则会显C?[Press h for instructions.] 而不???
-l 取消遇见Ҏ字元 ^LQ送纸字元Q时会暂停的功能
-f 计算行数Ӟ以实际上的行敎ͼ而非自动换行q后的行敎ͼ有些单行字数太长的会被扩展ؓ两行或两行以上)
-p 不以卷动的方式显C每一,而是先清除萤q后再显C内?
-c ?-p 怼Q不同的是先昄内容再清除其他旧资料
-s 当遇到有q箋两行以上的空白行Q就代换Z行的I白?
-u 不显CZ引号 Q根据环境变?TERM 指定?terminal 而有所不同Q?
+/ 在每个档案显C前搜寻该字ԌpatternQ,然后从该字串之后开始显C?
+num 从第 num 行开始显C?
fileNames Ʋ显C内容的档案Q可为复C?
范例Q?
more -s testfile 逐页昄 testfile 之档案内容,如有q箋两行以上I白行则以一行空白行昄?
more +20 testfile 从第 20 行开始显C?testfile 之案内宏V?/font>
名称 : sleep 名称Q?time Time Resources Memory Resources IO Resources Command Info -p or --portability
名称Qchfn 名称Qchsh
shell>> last -2 minery 名称:login 名称 : who
指oQmesg ?mesg 相关的指令有Q?talkQwriteQwall? 名称Q?etc/aliases 名称 : talk
名称 : write 名称Qkill 名称Qnice
|
名称Qrenice
使用权限Q所有用?
使用方式Qrenice priority [-p] pid ...] [-g] pgrp ...] [-u] user ...]
说明Q重新指定一个或多个行程(Process)的优先序(一个或多个根据所下的参数而定)
把计
-p pid 重新指定行程?id ?pid 的行E的优先?
-g pgrp 重新指定行程组(process group)?id ?pgrp 的行E?(一个或多个) 的优先序
-u user 重新指定行程拥有者ؓ user 的行E的优先?
范例Q?
行E?id ?987 ?32 的行E与行程拥有者ؓ daemon ?root 的优先序L?1 :
renice +1 987 -u daemon root -p 32
注意 : 每一个行E?Process)都有一个唯一?(unique) id
名称Qtop
使用权限Q所有用?
使用方式Qtop [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
说明Q即时显C?process 的动?
把计
d : 改变昄的更新速度Q或是在交谈式指令列( interactive command)?s
q : 没有M延迟的显C速度Q如果用者是?superuser 的权限,?top 会以最高的优先序执?
c : 切换昄模式Q共有两U模式,一是只昄执行档的名称Q另一U是昄完整的\径与名称S : 累积模式Q会己完成或消q子行E?( dead child process ) ?CPU time 累积h
s : 安全模式Q将交谈式指令取? 避免潜在的危?
i : 不显CZQ何闲|?(idle) 或无?(zombie) 的行E?
n : 更新的次敎ͼ完成后将会退?top
b : Ҏ模式,搭配 "n" 参数一起用,可以用来?top 的结果输出到案?
范例Q?
昄更新十次后退?;
top -n 10
使用者将不能利用交谈式指令来对行E下命o :
top -s
更新显CZơ的l果输入到名UCؓ top.log 的案里 :
top -n 2 -b < top.log
名称Qskill
使用权限Q所有用?
使用方式Q?skill [signal to send] [options] 选择E序的规?
说明Q?
送个讯号l正在执行的E序,预设的讯息ؓ TERM (中断) , 较常使用的讯息ؓ HUP , INT , KILL , STOP , CONT ,?0
讯息有三U写?分别?-9 , -SIGKILL , -KILL , 可以使用 -l ?-L 已列出可使用的讯息?
一般参敎ͼ
-f 快速模?未完成
-i 互动模式/ 每个动作要被确?
-v 详细输出/ 列出所选择E序的资?
-w 警告讯息/ 未完成
-n 没有动作/ 昄E序代号
参数Q选择E序的规则可以是, l端Z?使用者名U?E序代号,命o名称?
-t l端Z?( tty ?pty )
-u 使用者名U?
-p E序代号 ( pid )
-c 命o名称 可用的讯号:
以下列出已知的讯号名U?讯号代号,功能?
名称 (代号) 功能/ 描述
ALRM 14 d
HUP 1 d
INT 2 d
KILL 9 d/ 关闭
PIPE 13 d
POLL d
PROF d
TERM 15 d
USR1 d
USR2 d
VTALRM d
STKFLT d/ 只适用于i386, m68k, arm ?ppc 体
UNUSED d/ 只适用于i386, m68k, arm ?ppc 体
TSTP 停止 /产生与内容相关的行ؓ
TTIN 停止 /产生与内容相关的行ؓ
TTOU 停止 /产生与内容相关的行ؓ
STOP 停止 /关闭
CONT 从新启动 /如果在停止状态则从新启动,否则忽略
PWR 忽略 /在某些系l中会离开
WINCH 忽略
CHLD 忽略
ABRT 6 核心
FPE 8 核心
ILL 4 核心
QUIT 3 核心
SEGV 11 核心
TRAP 5 核心
SYS 核心 /或许未实作
EMT 核心 /或许未实作
BUS 核心 /核心p|
XCPU 核心 /核心p|
XFSZ 核心 /核心p|
范例Q?
停止所有在 PTY 装置上的E序
skill -KILL -v pts/*
停止三个使用?user1 , user2 , user3
skill -STOP user1 user2 user3
其他相关的命? kill
名称Qexpr
使用权限Q所有用?
### 字串长度
shell>> expr length "this is a test"
14
### 数字商数
shell>> expr 14 % 9
5
### 从位|处抓取字串
shell>> expr substr "this is a test" 3 5
is is
### 数字?only the first character
shell>> expr index "testforthegame" e
2
### 字串真实重现
shell>> expr quote thisisatestformela
thisisatestformela
名称: tr
### 1.比方说要把目录下所有的大写档名换ؓ写名?
g有很多方式,"tr"是其中一U?
#!/bin/sh
dir="/tmp/testdir";
files=`find $dir -type f`;
for i in $files
do
dir_name=`dirname $i`;
ori_filename=`basename $i`
new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done
### 2.自己试验?..lowercase to uppercase
tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr [:lower:] [:upper:]
shell>> echo "this is a test" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST
### 3.L不想要的字串
shell>> tr -d this ### L有关 t.e.s.t
this
man
man
test
e
### 4.取代字串
shell>> tr -s "this" "TEST"
this
TEST
th
TE
指oQclear
用途:清除萤幕用?
使用ҎQ在 console 上输?clear?/font>
名称: reset, tset
使用Ҏ: tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]
使用说明:
reset 其实?tset 是一同个命oQ它的用途是讑֮l端机的状态。一般而言Q这个命令会自动的从环境变数、命令列或是其它的组态军_目前l端机的型态。如果指定型态是 ? 的话Q这个程式会要求使用者输入终端机的型别?
׃q个E式会将l端回原始的状态,除了?login 时用外Q当pȝl端机因为程式不正常执行而进入一些奇怪的状态时Q你也可以用它来重设l端机o 例如不小心把二进位?cat 指oq到l端机,怼有终端机不再回应键盘输入Q或是回应一些奇怪字元的问题。此时就可以?reset 终端机回复臛_始状态。选项说明:
-p
终端机cd昄在萤q上Q但不做讑֮的动作。这个命令可以用来取得目前终端机的类别?
-e ch
?erase 字元设成 ch
-i ch
中断字元设?ch
-k ch
删除一行的字元设成 ch
-I
不要做设定的动作Q如果没有用选项 -Q 的话Qerase、中断及删除字元的目前g然会送到萤幕上?
-Q
不要昄 erase、中断及删除字元的值到萤幕上?
-r
终端机cd印在萤幕上?
-s
设?TERM 用的命o用字串的型式送到l端ZQ通常?.login ?.profile 中用
范例:
让用者输入一个终端机型别q将l端到该型别的预讄态?
# reset ?
?erase 字元讑֮ control-h
# reset -e ^B
设定用的字串显C在萤幕?
# reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;
名称Qcompress
使用权限Q所有用?
使用方式Qcompress [-dfvcV] [-b maxbits] [file ...]
说明Q?
compress 是一个相当古老的 unix 档案压羃指oQ压~后的案会加上一?.Z 延名以区别未压羃的档案,压羃后的档案可以?uncompress 解压。若要将C档案压成一个压~Q必d?tar h再压~。由?gzip 可以产生更理想的压羃比例Q一般h多已改用 gzip 为案压~工兗?
参数Q?
c 输出l果x准输备(一般指荧幕Q?
f 写入档案Q若目的档已l存在,则会被覆?(force)
v 程式执行的讯息印在荧幕?(verbose)
b 讑֮共同字串数的上限Q以位元计算Q可以设定的gؓ 9 ?16 bits 。由于D大,能用的共同字串?多Q压~比例就大Q所以一般用预讑ր?16 bits (bits)
d 压~解压~?
V 列出版本讯息
范例Q?
?source.dat 压羃?source.dat.Z Q若 source.dat.Z 已经存在Q内容则会被压羃覆盖?
compress -f source.dat
?source.dat 压羃?source.dat.Z Qƈ列印出压~比例?
-v ?-f 可以一起?
compress -vf source.dat
压~后的资料输出后再导?target.dat.Z 可以改变压羃名?
compress -c source.dat > target.dat.Z
-b 的D大,压羃比例p大,范围?9-16 Q预讑ր是 16 ?
compress -b 12 source.dat
?source.dat.Z 解压?source.dat Q若档案已经存在Q用者按 y 以确定覆盖档案,若?-df E式则会自动覆盖案。由于系l会自动加入 .Z 为g伸名,所?source.dat 会自动当?source.dat.Z 处理?
compress -d source.dat
compress -d source.dat.Z
名称Q?lpd
使用权限Q?所有用?
使用方式Qlpd [-l] [#port]
lpd 是一个常ȝ印表机管理程式,它会Ҏ /etc/printcap 的内Ҏ理本地或远端的印表机?etc/printcap 中定义的每一个印表机必须?/var/lpd 中有一个相对应的目录,目录中以 cf 开头的案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生?
lpr ?lpd l成了一个可以离U工作的pȝQ当你?lpr Ӟ印表Z需要能立即可用Q甚至不用存在。lpd 会自动监视印表机的状况,当印表机上线后,便立卛_案送交处理。这个得所有的应用E式不必{待印表机完成前一工作?
参数Q?
-l: 一些除错讯息显C在标准输出上?
#port: 一般而言Qlpd 会?getservbyname 取得适当?TCP/IP portQ你可以使用q个参数 lpd 使用指定?port?
范例Q?
q个E式通常是由 /etc/rc.d 中的E式在系l启始阶D|行?
名称 lpq
-- 昄列表列中未完成的工作 用法
lpq [l] [P] [user]
说明
lpq 会显C由 lpd 所理的列表机贮列中未完成的项目?
范例
范例 1. 昄所有在 lp 列表列中的工?
# lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes
相关函数
lpr,lpc,lpd
名称Q?lpr
使用权限Q?所有用?
使用方式Qlpr [ -P printer ]
案或是由标准输入送进来的资料送到印表列之中,印表机管理程?lpd 会在E后这个案送给适当的程式或装置处理。lpr 可以用来料资送给本地或是q端的主机来处理?
参数Q?
-p Printer: 资料送至指定的印表机 PrinterQ预讑րgؓ lp?
范例Q?
?www.c ?kkk.c 送到印表?lp?
lpr -Plp www.c kkk.c
名称: lprm
-- 一个工作由印表列中U除 用法
/usr/bin/lprm [P] [file...]
说明
未完成的印表机工作会被攑֜印表列之中,q个命o可用来将常未送到印表机的工作取消。由于每一个印表机都有一个独立的贮列Q你可以?-P q个命o讑֮惌作用的印列机。如果没有设定的话,会用系l预讄印表机?
q个命o会检查用者是否有_的权限删除指定的案Q一般而言Q只有档案的拥有者或是系l管理员才有q个权限?
范例
印表机 hpprinter 中的W?1123 号工作移?
lprm -Phpprinter 1123
第 1011 号工作由预设印表ZU除
lprm 1011
名称Q?fdformat
使用权限Q?所有用?
使用方式Qfdformat [-n] device
使用说明 :
Ҏ定的软碟|进行低阶格式化。用这个指令对软碟格式化的时候,最好指定像是下面的装置Q?
/dev/fd0d360 碟?A: Q磁片ؓ 360KB 碟
/dev/fd0h1440 碟?A: Q磁片ؓ 1.4MB 碟
/dev/fd1h1200 碟?B: Q磁片ؓ 1.2MB 碟
如果使用像是 /dev/fd0 之类的装|,如果里面的磁不是标准容量,格式化可能会p|。在q种情况之下Q用者可以用 setfdprm 指o先行指定必要参数?
参数Q?
-n 关闭认功能。这个选项会关闭格式化之后的确认步骤?
范例Q?
fdformat -n /dev/fd0h1440
磁机 A 的磁片格式化?1.4MB 的磁片。ƈ且省略确认的步骤?/font>
名称Q?mformat
使用权限Q?所有用?
使用方式Q?
mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:
在已l做q低阶格式化的磁片上建立 DOS 案pȝ。如果在~译 mtools 的时候把 USE_2M 的参数打开Q部分与 2M 格式相关的参数就会发生作用。否则这些参敎ͼ像是 S,2,1,MQ不会发生作用?
参数Q?
-t 柱QsynliderQ数
-h 头QheadQ数
-s 每一轨的磁区数
-l 标签
-F 磁格式化?FAT32 格式Q不q这个参数还在实验中?
-I 讑֮ FAT32 中的版本受这当然也还在实验中?
-S 区大小代码Q计方式ؓ sector = 2^(大小代码+7)
-c 丛QclusterQ的区数。如果所l定的数字会D丛数超q?FAT 表的限制Qmformat 会自动放大磁区数?
-s
-M 软体区大小。这个数字就是系l回报的区大小。通常是和实际的大相同?
-a 如果加上q个参数Qmformat 会生一l?Atari pȝ的序Lq块软碟?
-X Y格式化?XDF 格式。用前必须先用 xdfcopy 指o对Y作低阶格式化的动作?
-C 产生一个可以安?MS-DOS 案pȝ的磁媄像Qdisk imageQ。当然对一个实体磁机下这个参数是没有意义的?
-H 隐藏区的数目。这通常适用在格式化碟的分割区Ӟ因ؓ通常一个分割区的前面还有分割表。这个参数未l测试,能不用就不用?
-n 碟序号
-r 根目录的大小Q单位是区数。这个参数只?FAT12 ?FAT16 有效?
-B 使用所指定的档案或是设备的开机磁区做片磁片或分割区的开机磁区。当然当中的体参数会随之更动?
-k 量保持原有的开机磁区?
-0 W?0 轨的资料传输?
-A W?0 轨以外的资料传输?
-2 使用 2m 格式
-1 不?2m 格式
范例Q?
mformat a:
q样会用预设值把 a: Q就?/dev/fd0Q里的磁片格式化?/font>
名称Q?mkdosfs
使用权限Q?所有用?
使用方式Q?mkdosfs [ -c | -l filename ]
[ -f number_of_FATs ]
[ -F FAT_size ]
[ -i volume_id ]
[ -m message_file ]
[ -n volume_name ]
[ -r root_dir_entry ]
[ -s sector_per_cluster ]
[ -v ]
device
[ block_count ]
说明Q?建立 DOS 案pȝ?device 指你惌建立 DOS 案pȝ的装|代受像?/dev/hda1 {等?block_count 则是你希望配|的区块数。如?block_count 没有指定则系l会自动替你计算W合该装|大的区块数?
参数Q?
-c 建立案pȝ之前先检查是否有坏轨?
-l 从得定的档案中读取坏轨记录?
-f 指定案配置表(FAT , File Allocation Table)的数量。预讑րgؓ 2 。目?Linux ?FAT 案pȝ不支援超q?2 ?FAT 表。通常q个不需要改?
-F 指定 FAT 表的大小Q通常?12 或是 16 个位元组?2 位元l通常用于碟片,16 位元l用于一般硬的分割区,也就是所谓的 FAT16 格式。这个值通常pȝ会自己选定适当的倹{在碟片上?FAT16 通常不会发生作用Q反之在碟上用 FAT12 亦然?
-i 指定 Volume ID。一般是一?4 个位元组的数字,像是 2e203a47 。如果不l系l会自己产生?
-m 当用者试囄q片片或是分割区开机,而上面没有作业系l时Q系l会l用者一D警告讯息。这个参数就是用来变更这个讯息的。你可以先用档案~辑好,然后用这个参数指定,或是?
-m -
q样pȝ会要求你直接输入q段文字。要特别注意的是Q档案里的字串长度不要超q?418 个字Q包括展开的蟩栏符PTABQ和换行W号Q换行符号在 DOS 底下两个字元!Q?
-n 指定 Volume NameQ就是磁标{。如同在 DOS 底下?format 指o一Pl不l都可以。没有预讑ր{?
-r 指定根目录底下的最大案数。这里所谓的案数包括目录。预讑ր是在Y上?112 或是 224 Q在碟上是 512。没事不要改q个数字?
-s 每一个磁丛(clusterQ的区数。必L 2 的次Ҏ。不q除非你知道你在作什么,q个g要ؕl?
-v 提供额外的讯?
范例Q?
mkdosfs -n Tester /dev/fd0 ?A 槽里的磁片格式化ؓ DOS 格式Qƈ标{设?Tester
以上摘自linuxeden.com 供各位查阅!
安全和稳定是Linux操作pȝ的两大特炏V由于Linux采取了许多安全技术措施,包括?写权限控制、带保护的子pȝ、审计跟t、核心授权等Qؓ|络多用L境中的用h供了必要的安全保障,因此来多的用户开始学习和使用Linux。但是Linux的安全要建立在有效的防范基础上,如果是一个不加Q何防范和限制的LinuxpȝQ同样也有较多漏z。以传统的网l服务程序ؓ例,FTP、R Shell和Telnet{服务在本质上都存在不安全因素,因ؓ它们在网l上?#8220;明文”传送口令和数据Q别有用心的h很容易截莯些口令和数据。同时这些服务程序的安全验证方式也有qQ很Ҏ受到“中间?#8221;Qman-in-the-middleQ的d。所?#8220;中间?#8221;的攻L式,?#8220;中间?#8221;冒充真正的服务器接收用户传给服务器的数据Q然后再冒充该用h数据传给真正的服务器。服务器和用户之间的数据传送被“中间?#8221;做了手脚之后Q会出现很严重的问题。所以,可能地使用安全的工h理pȝ昑־愈发重要? 传统q程理工具的特?/strong> q程d的作用就是让用户以模拟终端的方式Q登录到Internet的某CZ。一旦连接成功,q些个h计算机就像远E计机的一个终端,可以像用终端计机一栯入命令,q运行远E计机中的E序? 在企业通常的用环境中Q服务器攑֜ISP托管中心或其服务器机房内Q只有少Ch才能q入q接触到L。因此管理员通常会在服务器上开启Telnet服务守护q程Q以便能够随时观察服务器上的变化Qƈd到服务器上进行维护;如果理员需要在服务器调试程序,q会开启FTP服务q程Q从本地Z传程序到服务器进行调试(如图1所C)。可见这U终端的服务对网l管理员来说非常重要?
? 理员利用终端服务对ISPq行操控 一般在q程理中经怋用远E管理Telnet的工hCRT、NetTerm、ShellNetQ以及Rlogin、Rcp、Rexec、RshQ所有以“R”开头的服务都徏立在不与外界q行M联系的基上。出于安全方面的考虑Q必ȝ止这些进E的启动Q。这些工L优点是用方ѝ配|简单;~点是不够安全。以TelnetZQ因为其?#8220;明码”传输Q所以不能称Z个很好的联机方式。什么是“明码”Q简单地_使用TelnetӞpȝ会出C个主机界面,如果没有讄pȝ的issue.net文g为空Q系l默认出现的界面׃泄露一些对用户不利的信息给别hQ如?所C?
? TelnetdL界面 用户需要输入̎号与密码Q当L接受资料后才能进行确认。此Ӟ用户资料׃l过Telnet协议传输CZ。如果有人正在某个router节点监听包Q就可以轻而易丑֜截获资料包Qƈ可以通过解读H取账号和密码。徏议非必要时不要激zTelnetQ如果一定要Ȁz,必须定限制的联_q用iptables讑֮联机的限制区域。此外,q要随时注意d案里关于登录的事项Q不要让root用户以Telnet方式dLinuxL? SSH及OpenSSH?/strong> SSHQSecure ShellQ是以远E联机服务方式操作服务器时的较ؓ安全的解x案。它最初由芬兰的一家公司开发,但由于受版权和加密算法的限制Q很多h转而用免费的替代软gOpenSSH? 用户通过SSH可以把所有传输的数据q行加密Q“中间?#8221;的攻L式不可能实现Q而且也能够防止DNS和IPƺ骗。它q有一个额外的好处是传输的数据是经q压~的Q可以加快传输的速度。SSH作用q泛Q既可以代替TelnetQ又可以为FTP、POPQ甚至ؓPPP提供一个安全的“通道”。SSH协议在预讄状态中Q提供两个服务器功能Q一个是cMTelnet的远E联Z用Shell服务器,即俗USSH功能Q另一个是cMFTP服务的SFTP-Server功能Q可提供更安全的FTP服务? SSH的安全验证如何工作呢Q主要依靠联机加密技术。从客户端来看,有以下两U安全验证别: 1Q基于口令的安全验证Qssh1Q?只要知道自己的̎号和口oQ就可以d到远E主机。所有传输的数据都将被加密,但是不能保证正在q接的服务器是惌q接的服务器。可能受?#8220;中间?#8221;的攻凅R? 2Q基于密匙的安全验证Qssh2Q?需要依靠密匙,即用户必Mؓ自己创徏一对密匙,q把公用密匙攑֜需要访问的服务器上。如果要q接到SSH服务器上Q客L软g׃向服务器发出hQ请求用密匙q行安全验证。服务器收到h之后Q先在该服务器的home目录下寻扑օ用密匙,然后把它和发送过来的公用密匙q行比较。如果两个密匙一_服务器就用公用密匙加?#8220;质询”QchallengeQ,q把它发送给客户端Y件。客L软g收到“质询”后,可以用Uh密匙解密再把它发送给服务器。用这U方式,用户必须知道自己密匙的口令。与W一U别相比,q种U别不需要在|络上传送口令,不仅加密所有传送的数据Q而且L?#8220;中间?#8221;d方式。整个登录的q程一般需?0U? OpenSSH的安装和启动 OpenSSH的安装非常简便,操作如下? 1.下蝲软g包。到http://www.openssh.com下蝲最新Y件包OpenSSH 3.6.1Q最好下载源E序软g包后自行~译Q。本文以openssh-3.5p1.tar.gzZq行介绍Q安装环境ؓRed Hat 7.1/kernel 2.4.8/gcc-2.96-98? 2. 解压及安装,代码如下Q?
重启计算Z后,用下列命令进行测试:
因ؓ是第一ơ登录主机,OpenSSH显CZ能识别该L。键?#8220;yes”Q把L?#8220;识别标记”加到“~/.ssh/know_hosts”文g中。第二次讉Kq台L的时候就不会再显C条提CZ息。然后,OpenSSH提示输入q程L上的账号及口令。输入完后就建立了SSHq接Q可以像使用Telnet一样用OpenSSH? 配置Z密钥认证的OpenSSH ~省情况下,SSH默认用口令验证方式。不需要对pȝq行M配置可以用̎号和口od到远E主机。下面介l如何配|ƈ使用Z密匙认证的OpenSSHQ假讄户名为geminisQ主机IP?92.168.0.1Q? 首先创徏一对密匙(包括公匙和密匙,q且用公匙加密的数据只能用密匙解密)Q把公匙攑ֈ需要远E服务器上。当dq程服务器时Q客L软g会向服务器发求,h用密匙进行认证,代码如下Q?
如果创徏成功Q系l将q回以下信息Q?
接下来,把id_dsa.pub发布到服务器上。通过FTP公匙文?#8220;/home/admin/.ssh/id_dsa.pub”Q复制到q程服务器的“/home/admin/.ssh”目录。如?ssh目录不存在,可以用mkdir命o先徏立。然后,?#8220;id_dsa.pub”重命名ؓ“authorized_keys2”Q代码如下:
注意Q如果authorized_keys2文g的权限不正确Q会DSSHq接p|? 服务器收到请求之后,在该服务器的宿主目录下寻扑օ匙,然后查该公匙是否合法。如果合法就用公匙加密一随机敎ͼx谓的challengeQƈ发送给客户端Y件。客L软g收到后就用私匙解密再把它发送给服务器。因为用公匙加密的数据只能用密匙解密Q服务器l过比较可以知道该客户q接的合法性。连接代码如下:
pȝq回以下信息Q?
OpenSSH客户端用方?/strong> 1Q?Windowsq_ 客户端通常使用Windowsq_Q操作较为直观。下面对几种客户端工兯行介l? ?PuTTY 在客L使用SSH较好的工hPuTTYQ这是一个开源Y件。用户可以根据自q配置情况对该软gq行修改Q如?所C?
? PuTTY配置界面 如果是第一ơ用该软gQ系l会提示下蝲有关L?#8220;识别标记”Q选择“yes”Q下ơ登录就不会出现提示框? ?Filezilla Filezilla是客L使用SFTP的一ƾ不错的开源YӞ对中文支持很好,配置界面如图4所C?
? Filezilla配置界面 2Q?Linuxl端 在Linuxl端下用SSHQ优Ҏ操作更方便,无须其它软gQ缺Ҏ不太直观。用方法及命o介绍如下Q? ?SSH的?
?SFTP的?
SFTP相关命o的用方法如?所C? 3Q进阶提高要? 配置SSH客户端文?#8220;/etc/ssh/ssh_config”Q如?所C?
? 配置“/etc/ssh/ssh_config”文g ? SFTP相关命o的用方?
选项讄说明如表2所C? ? SSH配置选项说明
配置SSH服务器端文g“/etc/ssh/sshd_config”Q取消口令验证。把“PasswordAuthentication Yes”改ؓ“no”Q可以禁止用第一U口令验证? 配置“/etc/ssh/sshd_config”文gQ编?#8220;sshd_config”文gQ加入或改变下面的参敎ͼ
|