Linux学习与实验材料.docx
《Linux学习与实验材料.docx》由会员分享,可在线阅读,更多相关《Linux学习与实验材料.docx(34页珍藏版)》请在冰豆网上搜索。
Linux学习与实验材料
Linux实验和编程环境
1.1Linux操作系统基础简介
一、总论
1、Linux发展史
LinusTorvalds芬兰赫尔辛基大学学生1990年秋天学习操作系统,用Minit开始练手。
1994年3月14日发布了它的第一个正式版本1.0版。
2、Linux与Unix
实际上Linux就是Unix克隆(CLONE),只不过Linux一般用于PC机,而大多数商业Unix则主要用于工作站或大型机,Linux吸收了许多商业Unix的优点,但还具有很多其他Unix所不具有优点,例如Linux源代码是公开的!
IBM、富士公司的策略调整,都和Linux的快速发展有关。
有人称Linux为PC机上的UNIX。
3、Linux与GNU、GPL
(1)什么是GNU
GNU就是GNU'sNotUnix,简单的说GNU是一种自由软件体系。
(2)GPL(GNUGeneralPublicLicense)
通用公共版权协议,即用户获得GNU软件后可以自由使用、修改,也可以自由散布GNU软件,但是必须让下一个用户也有获得源代码的权利并且必须告诉他这一点,其目的是要让GNU软件永远是自由和公开的.
(3)Linux是按GPL来发行的
4、Linux的版本
(1)内核(Kernel)http:
//www.kernel.org/
内核版中,第二个数字是偶数,则说明这种版本是稳定的产品化版本,如是奇数,则为实验版本beta。
目前,最新内核稳定版2.6.20(2007-02-20发布)。
(2)发行版本(distribution)
LINUX主要发行版有:
国内公司有中软、蓝点、红旗、Xteam等。
国外的有Redhat,Slackware,SuSe,Turbolinux,MandrakeLinux等。
5、Linux的好处
1)免费的OS,不用付高昂的软件版权费。
2)相比Window,源码开放,用户可以进行任意修改,系统安全漏洞可以迅速得到改正,Window正常有安全之虑,关系到国家安全、金融等敏感部门不采用Window;Window不稳定,Linux稳定性高。
3)强大的网络功能(服务器市场Linux占有率高)。
4)Linux本身就是在Internet上成长起来的,提供了全面的网络支持,如TCP/IP。
5)多任务,多用户。
多任务是指计算机在同一时间内运行多个应用程序的能力,多用户是指多个用户可以在同一时间内使用一台机器。
6)应用软件丰富,Linux的应用软件也是免费的。
7)软件移植性好。
8)Linux潜在的商业价值不可限量。
Linux与Windows的区别
1,从发展的背景看,Linux来源于Unix这个比较成熟的操作系统,Windows则是自成体系,无对应相依托的操作系统。
2,从使用费用上看,Linux是一种免费的操作系统,运行于其上的软件也大多是免费的。
Windows则是有偿使用的,我们要使用它就必须支付一定的费用,而这笔费用往往很高。
3,从开发标准来看,Linux是一套开放操作系统,其代码向用户开放。
Windows操作系统的接口和设计标准只有微软公司才有权对其进行修改,它是在封闭的环境下发展的。
6、Linux的应用前景展望
Linux目前大有后来者居上之势,因为它是免费的公开源代码的操作系统,特别受到中小企业及个人的青睐,虽然它的用户界面不如Windows友好,但由于它是免费的,不用支付高昂的软件使用费,而且运行其上的工具软件已越来越丰富,不象则开始出现时那样界面较差,只有专业人员才能使用,现在的Linux发行版本中,安装和使用采用了图形化,越来越简单,使用越来越方便,已有数百万的用户在使用它,其应用前景一片光明。
基于安全的考虑,国家重要部门、金融及军队等敏感部门,一般不采用微软的Windows操作系统,我国政府大力提倡使用Linux。
北京市政府招标采用的是红旗Linux操作系统。
二、Linux的安装
安装前的准备事项
(1)硬件要求
硬盘的分区(建议用RedHat自带的DiskDruid手动分区),文件系统类型(可选EXT2,EXT3),SWAP交换区的设置(一般为内存容量的二倍)。
(2)软件准备
(3)设置BIOS
(4)选择安装方式
a、文本方式安装
b、图形方式安装(建议选用)
c、专家方式安装
三、Linux的应用简介
1、Linux在网络服务领域的应用
2、Linux在嵌入式系统中的应用
3、Linux在传统的桌面PC上的应用
1.2Linux目录结构
Linux文件系统是个树型结构,系统的每个分区都是一个文件系统,都有自己的目录层次。
Linux将这些不同分区的、独立的文件系统按树型的方式形成一个系统总目录,简称/根目录。
目录提供了一个管理文件的方便而有效的途径最上层是根目录,其他的所有目录都是从属于根目录的。
总的目录结构如图1所示:
图1.1:
Linux目录结构
通常我们可以为Linux定义四个分区:
swap
分区类型为swap(交换空间),概略地相当于两倍于内存大小。
swap分区是不可见分区。
根:
/
它是最重要的分区。
它不仅包含系统最重要的数据和程序,也将当作其他分区的挂接点。
根分区的大小需求是有限制的,通常300MB足够了。
然而,如果你计划安装商业的应用程序,它们通常会放在/opt,那么你将需要增加根分区大小。
另外也可以为/opt创建独立的分区。
静态数据:
/usr
大多数安装包将把其大部分可执行程序和数据文件安装在/usr目录下。
把它放在独立分区上的好处是,你能容易地与网络上的其他机器共享它。
分区大小依赖于你需要安装的包大小和数目。
它可以从100MB(为一个轻量级安装)到几个GB(为完全安装)变化。
通常一或二个GB(依赖于你的磁盘大小)的一个折中是足够的。
Home目录:
/Home
这里为登陆本机所有用户保留了个人的目录。
它通常也作为HTTP或FTP提供服务的目录(分别为网页浏览和文件传输)。
这里分区大小依赖于注册的用户(或服务)数目和它们的需要。
解决的一个变通是不使用独立分区存放/usr文件:
/usr将仅仅是根/分区之内的一个目录。
其他主要的目录还有:
二进制命令:
/bin
它存放常用的二进制可执行命令,如ls、cd、cp、mv、rm、mkdir、ftp、telnet等命令。
通常它与/usr/bin的内容是一致的。
系统管理命令:
/sbin
这里存放的是系统管理员使用的管理程序,如fdisk,fsck,mount等的命令。
标准程序设计库:
/lib
也称动态链接库,在Linux执行或编译内核时均会用到。
系统管理和配置文件:
/etc
存放系统管理和配置文件,如网络配置、文件系统管理、引导程序参数以及其他的系统主要设置。
系统内存映像:
/proc
这是一个虚拟的目录,可直接访问这个目录来获取系统信息。
系统工作目录:
/var
这是系统在工作时预先设置的工作目录,比如各种服务的日志文件、快速缓存文件、数据库文件、收发的邮件等。
内核启动和关闭文件目录:
/boot,设备文件目录:
/dev,临时挂载目录:
/mnt,公用临时文件目录:
/tmp,系统管理员的主目录:
/root,非正常关机遗留文件目录:
/lost+found等等。
1.3Linux常用基本命令
这里仅列出部分常用命令,其它常用命令见相关参考书。
1)文件处理命令
1.ls命令:
英文原义:
list(显示目录文件及其属性)
执行权限:
alluser
语法:
ls选项[-alFR][文件或目录]
-a显示所有文件包括隐藏文件
-l使用长格式(longformat)显示
-F附加文件类别符号在文件名最后
-R显示目录及其下的子目录内容
示例:
$ls–a
$ls–l
说明:
“.”代表当前目录,“..”代表上一层目录,长格式显示的目录或文件属性包括下列七项:
文件权限(r-可读,w-可写,x-可执行)、文件数目、所有者、文件大小、建立日期、文件名。
2.cd命令
英文原义:
changedirectory(切换目录)
执行权限:
alluser
语法:
cd[目录]
示例:
$cd..回到上层目录
$cd.在原目录
$cd~回到user的homedirectory
$cd/切换到根目录
$cd../usr切换到上一层目录的usr目录
3.pwd命令
英文原义:
printworkdirectory(显示当前所在目录)
执行权限:
alluser
语法:
pwd
示例:
$pwd
说明:
由于Linux系统的树状目录结构颇为庞大,若没有使用Shell环境变量指定在Shell提示符显示当前的工作目录,则不断地使用cd切换目录之后,可能会忘记当前所在的目录是哪里,例如在:
/usr/bin和/usr/local/bin。
一般Shell提示符只显示最后的目录名称bin/,所以会对所在目录产生混淆,因此可以随时用pwd命令了解当前的工作目录/usr/X11R6/bin.显示当前工作目录为/usr/X11R6/bin
4.cp,rm,mv,mkdir命令
英文原义:
copy,remove,move,makedirectory(复制、删除、移动文件,创建目录)
执行权限:
alluser
语法:
cp-afpx[源文件或目录][目地文件或目录]
-aarchive的意思相当于-dpR,也就是复制所有目录并包括子目录
-f强制复制文件
-p保留原始文件的日期
-x指定文件复制后属于目地磁盘的文件系统,如:
ext2->fat32
语法:
rm-irf[文件或目录]
-r删除目录及其下的所有目录内容
-f强制删除
-I交互模式,删除前再做一次确认
语法:
mv–if[源文件或目录][目地文件或目录]
5.1n命令
英文原义:
link(产生连接文件)
执行权限:
AllUser
语法:
ln–s[源文件][目录文件](-ssymboliclink,符号连接)
示例:
1n–s/bin/less/usr/local/bin/less
说明:
当需要在不同的目录用到相同的文件时,不需要在每一个需要的目录下都放一个相同的文件,只要在某个固定的目录中,放上该文件,然后在其他的目录用ln命令连接它即可,不必重复占用硬盘空间。
2)文件权限管理命令
1.chmod命令
英文原义:
changefileordirectory’smode(改变文件或目录的权限)
执行权限:
AllUser
语法:
chmod-R[mode=4,2,1or{a,u,g,o}{+,-,=,}{r,w,x,s,t}][文件或目录]
示例:
$chmoda+rstuff
$chmod755file
说明:
Linux将文件的权限分成Readable(r)、Writable(w)、executable(x)、SetUser’ID、Setuid(s)、SetGroupIDSetgid(s)、Stickybit(t),而将文件的用户分成All(a)、User(u)、Group(g)、Other(o)等四种。
可以使用chmod加上这些代号规范文件权限。
第一个示例赋予所有用户对stuff有读的权利。
第二个示例赋予所有者对file文件可读可写可执行,同组用户和其他用户可读可执行的权利。
2.chown命令
英文原义:
Changefileordirectory'sOwner(改变文件或目录的所有者)
执行权限:
AllUser
语法:
chown–R[用户][.[群组]][文件或目录]
功能描述:
改变文件或目录的所有者
3.chgrp名称
英文原义:
Changefileordirectory'sGroup(改变文件或目录的所属群组)
执行权限:
AllUser
语法:
chgrp–R[文件或目录]
3)文件查找命令
1.whereis命令
英文原义:
whereisfile?
(显示文件或目录的所在位置)
执行权限:
AllUser
语法:
whereis[文件或目录]
2.find命令
英文原义:
find(查找文件或目录)
执行权限:
A11User
语法.find[查找路径][查找关键字][表答式]
-type指定查找文件的文件类型,如下:
oblock(buffered)special
ccharacher(unbuffered,special)
ddirectiry
pnamedpipe(FIF0)
iregularfile
1symboliclink
ssocket
-gidn指定查找群组id为n的文件
-groupgrpname指定查找群组名称为grpname的文件
-iname‘filename’指定查找与filename类似的所有文件
另外还可以使用通配符,例如:
find./-iname‘f*’-print查找所有以f开头的文件名
find./-iname’c?
?
’-print查找以c开头且后面有两个字节的文件名
说明:
-name和-iname选项类似,差别在于-name会区分大小写,-iname和-ignore则
不区分大小写。
-iname查找文件为连接文件的文件或目录
4)磁盘管理命令
1.df,du命令
英文原义:
diskfilesystemspaceusage(显示文件系统)
diskfilespaceusage(显示文件使用的空间大小)
执行权限:
AllUser
语法:
df–km,du-sbkm
-bbytes
-kkilobytes
-mmegabytes
-ssummarize
示例:
$df
Filesystem1k-blocksUsedAvailableUse%MountedOn
/dev/hddl79603325035350455633%/
/dev/hdd5119001488259524593378%/usr
/dev/hdd679603342121333369656%/home
/dev/hdd71990471300485871969%/var
/dev/hdal2044240128143676280463%/win98
2.fdisk命令
英文原义:
formatdisks/partitions(修改、显示磁盘/磁盘分区格式)
执行权限:
root
语法:
fdisk[-bSSZ][-u]DISK修改磁盘分区表
fdisk-l[-bSSZ][-u]DISK列表显示磁盘分区表
fdisk-sPARTITION获取指定分区尺寸(以块为单位)
说明:
这里DISK是指/dev/hdb或/dev/sda磁盘设备文件之类的参数,PARTITION是指/dev/hda7某磁盘指定分区之类的参数。
-u:
获取磁盘分区起始扇区单元和终止扇区单元;
-b2048:
(对于特定MO磁盘)每扇区大小为2048-字节。
示例:
fdisk–l
Disk/dev/sda:
5368MB,5368709120bytes
255heads,63sectors/track,652cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*15224192933+83Linux
/dev/sda2523555265072+82Linuxswap
/dev/sda3556652779152+83Linux
3.mountumount命令
英文原义:
mount/umountafilesystem(挂接/拆除文件系统)
执行权限:
root
语法:
mount–a-tfstype-o[options]设备名称目录名称
-amount定义在/etc/fstab中的所有分区
-t指定文件系统格式(ext2,msdos,vfat,is09660…)
-o指定loopdeviceumount目录名称(mountpoint)
说明:
Linux使用磁盘的方式是必须将这些设备挂在系统的某一个目录,才可能让用户存取。
若是Linux系统没有挂接,用户无法直接对硬盘设备操作,所以mount命令非常重要。
如挂载U盘到/mnt/usb子目录:
mount/dev/sda1/mnt/usb
然后,通过命令cd/mnt/usb,以后对/mnt/usb子目录上的所有操作,都是针对U盘操作。
注意:
在拔下U盘之前,应执行卸载umonut操作:
cd/
umount/mnt/usb
5)程序管理命令
1.ps,kill命令
英文原义:
processstatus,kill
执行权限:
AllUser
语法:
psaux
a显示所有用户的线程
u显示用户名称
x显示不由tty控制的线程
kill(-HUPor-1)-9
-HUPor-1重新启动某个线程
-9强制删除线程
说明:
执行ps时,加的选项前面不需要“-”,请特别注意!
aux选项可以显示出系统当前的所有线程
2.top命令
英文原义:
displaytopCPUprocesses
执行权限:
AllUser
语法:
top
说明:
除了使用ps监视系统执行程序外,可以使用top同时监视系统效能与执行程序。
6)显示文本文件与字符串查找命令
1.cat,more,less命令
英文原义:
concatenate,fileperusalfilter,oppositeofmore(显示文件内容)
执行权限:
A11User
语法:
cat:
[文件或输出],more[文件或输出],less[文件或输出]
示例1:
$catfilelfile2>file3
说明:
上述命令将file1,file2的内容一起输出到file3中,达到合并文件的效果。
另外,more和less功能是一样的,都可以一页页地查看命令输出或内容的文件内容。
唯一的不同在于less可以做上下卷轴的操作,而more就只能向下输出内容,不能再回头输出已经出现过的内容。
示例2:
catinterrupts
说明:
列出当前中断占用情况
示例3:
catioports
说明:
列出设备的硬件IO占用情况
示例4:
catpci
说明:
列出pci设备的情况。
2.grep命令
英文原义:
GNUregularexpressionprint(查找字符串)
执行权限:
AllUser
语法:
grep[pattern][文件或输出]
示例:
$grepworldfile.txt(查找file.txt中含有world关键字的内容)
$grep-e“HellOWorld!
”file.txt(查找file.txt中含有HelloWorld!
字符串的内容)
$grep-cworldfile.txt(计算“world”在file.txt中出现的次数)
7)压缩与解压缩命令
1.gzip命令
英文原义:
GNUzip(使用Lempel-Zivcoding-LZ77技术压缩文件)
执行权限:
AllUser
语法:
gzip[选项][-19r][文件]
-1表示快速压缩
-9表示最佳状况压缩
-r压缩时包含所有子目录
2.gunzip命令
英文原义:
GNUunzip(解压缩以gzip压缩的.gz文件)
执行权限:
A1lUser
语法:
gunzip:
[选项][-r][文件或目录]
说明:
使用gzip–d-rfilename.gz和gunzip–rfilename.gz功能一样,-d是decompress的意思)。
3.tar命令
英文原义:
tar(压缩文件目录)
执行权限:
AllUser
语法:
tar[选项][zcvf][文件或目录]
-z使用gzip压缩.tar文件
-c产生一个tar文件
-v观看压缩过程
-f指定压缩成的文件(或压缩到磁带设备)
说明:
一般都是四个选项全加,这样马上可以将一个目录下所有的文件压缩成一个压缩文
件。
压缩后文件格式:
.tar.gzor.tgz。
tar的功能和其他压缩工具不太一样,tar可将一个目录所有的文件压缩成一个文件,但是tar没有空间压缩的功能。
因此大家用tar都会配合gzip一起使用,以达到前面介绍gzip时的压缩目录需求--将一个目录下所有的文件压成一个压缩文件。
-x选项解压。
1.4I/O管道和重定向
Linux系统有一个非常有趣的概念就是“I/O重定向(Redirection)”。
可以利用
大于符号(>)进行输出重定向,也可以利用小于符号(<)进行输入重定向,还有一个按位或符号(|)作为管道,可以将前级命令的输出定向给下级的命令当输入。
基本上,Linux将标准I/O分为三种。
分别是:
stdin(Standardlnput)标准输入、stdout(StandardOutput)标准输出以及stderr(Standarderror)标准错误输出。
stdin标准输入就是标准输入设备键盘的输入,或是一般Linux命令后面所加的参数,例如:
ls–lfile1其中的file1就是标准输入。
而stdout标准输出一般就是指输出到Terminal或更通俗的说法是屏幕console,例如:
1s–lfilel这个命令的输出会显示在屏幕上,这就是标准输出,最后一个stderr标准错误输出,是当命令执行错误时,输出的错误信息,就称为标准错误输出,例如:
ls–lfilel如果没有filel这个文件时,输出到屏幕上的信息就是stderr。
此时,读者可能觉得奇怪,stdout和stderr都是输出到屏幕上,这有什么差别呢?
它们的差别在于重定向的方式不同,请继续看下面的输出重定向就会了解一切。
1)输出重定向符(>)
$1s-1>list
正常情况执行ls-l后,应该会有目录和文件的输出结果到屏幕上,但是经过输出重定向符>后,输出结果会存储到list文件中,而屏幕上则无任何结果。
所以当一些命令运行并需要将结果记录下来时,输出重定向会是一项好工具。
cat命令没有参数,所以会等待用户的输入,接着用户输入的每个字节,都会经由输出重定向(>)被导引到list文件中,最后按Ctrl—C就可以中断cat程序,然后执行catlist,就是刚才输入的文字,所以cat加上输出重定向(>),俨然就成为一个新型的文件。
附加输出重定向符(>>)
$catlist2>>listl
如果是两个>>符号,就是将输出重定向结果附加到输出文件的后面,cat显示list2,然后将结果附加到listl的文件尾,所以这样的