循序渐进学习LINUX
张斌·yesky
LINUX以其优越、稳定的网络服务器性能征服了许许多多的软、硬件制造商和广大计算机迷。据CNET报导,IDC资料显示,Linux在伺服器市场已经夺下第二名的宝座。从1998到1999,Linux在伺服器市场的占有率从16%大幅成长为25%,IDC原本预期Linux将在2002或2003年成为市占率第二,没想到这个预测1999便即实现。
LINUX开始于芬兰赫尔辛基大学的Linus Torvalds的业余爱好,当时他想建立一个代替Minix操作系统的、可用于基于Intel的个人计算机上的UNIX类操作系统。LINUX的标志(吉祥物)是一只企鹅。从LINUX1.0发布以来,它越来越多的得到电脑迷的青睐,并得到广大电脑爱好者的不断补充的更新。
LINUX的很多部分是在GNU的通用公共许可证的保护下发布的。这个操作系统是由世界各地的数以百计的程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。到现在,LINUX已经是一个在个人计算机和工作站上使用的UNIX操作系统,是UNIX的免费版本,其基本系统对硬件要求很低,它在很多系统上是相当的稳定。
LINUX是目前唯一可免费获得的、为PC及的多个用户提供多任务、多进程功能的操作系统。一个可以从网上或其他途径自由获得的免费软件。安装LINUX,不仅可以亲身体验成为系统管理员的个中滋味,为笔者们了解世界上流行的UNIX操作系统提供了廉价的机会;还可以通过在网络上开放一些服务而建立自己的网站。现今比较流行的版本是:Turbo LINUX、RedHat LINUX、Slackware LINUX、Solaris。我国支持的是红旗LINUX。
笔者接触LINUX较晚,曾花费一段时间学习LINUX,现将学习笔记整理如下,望能与LINUX高手、爱好者相互学习。
LINUX特性综述
一、系统特征
LINUX系统有文本编辑界面和图形用户界面(GUI),笔者更喜欢到GUI界面的仿真终端进行命令输入。其特征包括:多用户、多任务、多平台、可编程SHELL、提供源代码、仿真终端、支持多种文件系统及强大的网络功能等。
多用户:多个用户(六个)能同时从相同或不同的终端(终端号:tty1~tty6)上用同一个应用程序的副本进行工作。在控制台,切换终端的命令是:ALT+F1~F6;在仿真终端窗口(ps/0~n)是:SHIFT+ALT+F1~F6。
多任务:可同时执行多个程序,程序之间互不妨碍。与WINDOWS的多任务不同,LINUX将系统没有用到的剩余物理内存全部用来做硬盘的高速缓存。笔者曾经打开三个xterm,分别用于查找文件、调试程序、发邮件。而且还可以指定某一个程序在后台运行,指定某一些程序在特定的时间内运行(at命令)。
多平台:LINUX能在X86平台上运行,也能移植到其他平台。
可编程SHELL:SHELL是解释并执行命令的系统外壳程序。通过编写SHELL程序,使得系统更加个性化;而且在一些程序中具有C语言的功能。
提供源代码:LINUX是自由软件,源代码完全公开,可以自行编译内核,修改和扩充操作系统,进行二次开发。
LINUX支持的文件系统很多,例如:EXT2、NFS、VFS、ISO9660、MSDOS等等。
网络功能:较全面的实现了TCP/IP、SLIP、PPP、PLIP协议,功能强大。
二、系统比较
LINUX可以和PC机上的其他操作系统共存,但还是有差别的。
(一)LINUX与MSDOS
DOS在PC机上普及最广,价格低。LINUX是免费软件,不用考虑价格。LINUX有些命令与M S- DOS相同或相似,如cp----copy、cd(..)---cd(..)、telnet---telnet等;要在LINUX下用DOS命令,要在命令前加m;LINUX还可以充分发挥微处理器的功能,其多用户、多任务、网络等功能是MSDOS所不能比的。常见的是,LI N U X和DOS装在同机器上。
(二)LINUX与WINDOWS
两者都是多任务的操作系统,都支持同样的用户接口、网络和安全性。但是,WINDOWS是专用系统,由开发的公司控制接口和设计,并建立了严格的标准,而且购买的价格高。而LINUX是自由软件,其开发采用开放和协作的模式,因而有利于充分程序人员的集体智慧,大量减少不必要的重复劳动,并使得自由软件的弱点能及时发现和得到克服,具有强大的生命力。LINUX正在竞争UNIX和WINDOWS NT的市场份额。它是目前唯一可以与MICROSOFT WINDOWS抗衡的操作系统;盖茨也承认LINUX是微软的竞争对手。
(三)LINUX与UNIX
实质上,LINUX是UNIX的一种版本。UNIX支持的硬件要多一些,LINUX支持的硬件也在不断扩大。很突出的一点是,LINUX至少和商用UNIX一样稳定。对于许多用户来说,最重要的因素是价格;显然,在这一点上LINUX要占优势。LINUX使得用户在PC机上运行完整的UNIX。所以,LINUX为笔者们学习UNIX提供了廉价的机会。
三、缺点:
使用LINUX的最大缺点是没有一个实体对它的发展负责。LINUX的开发人员分散在世界各地,他们可以随意发表自己的程序,没有正式的质量保证程序。
1、由于分散性的开发,LINUX缺乏技术支持,笔者就常遇到很多问题,根本不懂如何解决,查资料又找不到----这就是笔者多次安装的主要原因;
2、并不能安装和运行在所有硬件平台上。LINUX所支持的硬件取决于每个开发者编写代码时所用的硬件。
3、一些应用软件,尤其是for WINDOWS、DOS的,不能在LINUX上使用。目前解决的办法是,与其它操作系统共存于一台机器上。
4、另外,笔者感觉安装软件还不够智能,有时需要重新编译内核,还要修改Makefile等文件,费时费力,还常常安装不上----可能是没有优化、配置好内核。
LINUX安装简介
总的来说,LINUX对系统的要求并不高,在386上就能运行,并能优化系统性能。
笔者安装过几遍Turbo Linux,RedHat Linux,对从光盘的安装过程有一定的了解。限于硬盘大小、CPU性能,无其他操作系统共存。其安装还是比较智能化的,可根据提示一步步的来安装,不懂之处采用默认值,或者先别配置。
因为全部安装了它内置的软件包,所以每次安装的时间比较长。
感觉较重要的一步是分区。首先要清楚硬盘驱动器是用文件名/dev/had来表示的。LINUX至少要分两个区:主分区、交换区。交换区用于启动虚拟内存的,它可以使系统在固定的实际物理内存下运行的更加顺利。根据要求,交换区容量应为内存的两倍。因而,先分交换区had为64M,剩余的全部用作主分区hda1。由于机器上只装了LINUX,所以笔者只能从书本上了解在安装两个系统时是如何分区的。
要谨慎的是在选取显示器、刷新频率时,一定要做出正确的选择,以免烧坏显示器。
安装过程中,它会自动找到网卡,会引导设置TCP/IP网络。由于只装一个操作系统,因此不用配置LILO。
安装完成后,可以配置内核,主要目的是让硬件都可以准确的启动。而且,自由对系统内核进行正确的编辑,才能拥有一个最适合自己计算机的LINUX内核。首先进入/usr/src/linux,接着用make config开始编辑。
LINUX文件与目录
一、文件系统
LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。
1普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。
2 目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。
3 连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以\"-〉\"指向所连接的文件。
4 特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/had来自第一硬盘。
LINUX的文件有不同的权限,用ls -l [filename]来列出。例如:
$ ls -l aa?
$ lrwxr-x--x 1 aa 460 Dec 3 14:35 aa ->aa.c
(二)目录系统
LINUX的目录系统可以点击X-WINDOWS菜单的File Manager窗口中看到。其目录结构如下:
/
/bin
/dev
/home
/
/etc
/passwd
/rc.d
/mnt
/root
/sbin
/tmp
/usr
/var 一些常用的目录是:
/etc--包括大多数引导系统或激活系统所需的系统专用熟据,如:host.conf、httpd等。
/lib--包含c编译程序需要的函数库,是二进制文件,如:cpp。
/usr--包括所有其他内容,如:src,local。LINUX的内核就在/usr/src中。其下有子目录/bin,存放有所安装的语言的命令,如:javac,java,gcc,perl等。
/var--包含系统定义表、以便在系统运行改变是可以只备份该目录,如cache。
/tmp--用于临时性的存储。
/bin--大多数命令存放在这里。
/home--主要存放用户账号;另外还有ftp。
系统管理员增加用户时,系统会在这里自动增加与用户同名的目录,此目录下一般默认有Desktop目录。
/dev--包含称为设备文件的特殊文件,如fd0、had等。
/mnt--在LINUX中系统中,它是专门给外挂的文件系统使用的,里面有两个文件:cdrom,floopy,登录光驱、软驱时要用到。
LINUX配置
在这里,配置的对象并非内核,而是软件。至于网络的配置,主要在安装系统是已经基本完成;也可以进入GUI界面从菜单选择liloconf来配置。
与WINDOWS一样,在LINUX系统可以从光盘、软盘安装应用软件;但不同的是,它需要用命令mount来登录光驱、软驱。而且,软件大多是经过压缩的,所以还需要懂得如何解压。最后必须配置、编译才能运行。下面分四个方面进行介绍:
一、mount登录
LINUX的软驱设备用特殊文件/dev/fd0,文件系统是msdos,因此用以下命令登录,读取软盘内容:
# mount -t msdos /dev/fd0 /mnt/floppy
# cd /mnt/floppy
同理,键入以下命令读光盘:
# mount -t iso9660 /dev/hdb /mnt/cdrom
# cd /mnt/cdrom
然后,用cp命令将所需的软件拷贝到系统中。
退出软驱、光驱用umount命令。注意,不能在其目录中使用此命令,而应先cd到其他目录,再使用:umount /mnt/cdrom。
二、安装软件
for LINUX的软件一般是以.gz或.tar或者.tar.gz结尾的。前者是由gzip压缩的,后者是先用tar归档,在用gzip压缩而成的。
1、以.gz结尾的为压缩文件,用命令:gzip -d filename来解压,得到的文件在当前目录中,但已没有了.gz。
2、以.tar结尾的为归档文件,用命令:tar -xvf filename来展开,生成的文件与源文件在同一目录中,只是少了.tar。
3、以.tar.gz结尾的文件最常见,可直接用命令:gzip -cd filename | tar xfv -来安装。
一般情况下,这类文件的第一项是一个目录,所以用上面的命令时会创建出这一个目录,并把所有的文件都存在此目录之下。如果是特殊情况,可先用命令:tar -tvf filename | more 来查看文件的第一项。倘若它并不是目录,则先创建一个目录,把文件放在此目录之下,在用命令:tar -xvf filename来安装。
经过以上步骤,会生成README及INSTALL等文件。用vi来仔细阅读这些文件造处于LINUX有关的部分,更具体是进行配置。一般的步骤是:(1)./config,(2)make install,(3)make。主要的变化在第一步,其后面需要参数,可见入命令来选择:./config --help。
三、实践举例笔者曾配置了apache(阿帕其服务器)、php3两个软件。
先从网上下载for LINUX的软件apache.tar.gz、php3.tar.gz。
1、由于apache.tar.gz大于1.44M,所以笔者在center_5的MSDOS上用telnet命令登录LINUX,通过put将其上传。
2、笔者将这两个软件放在/usr/src目录之下,用命令gzip -cd apache.tar.gz(php3.tar.gz)| tar xfv -来安装。这样会看到两个目录:apache_1.3.6和php-3.0.7。
3、在第一个目录之下,会看到非常重要的文件:README、INSTALL。如果此时是在GUI界面,则可以打开两个xterm,一个用于仔细阅读,一个则用于根据文件的提示进行配置。
4、在第二个目录中,也会很快的找到文件:INSTALL、INSTALL.DSO、README.QNX。步骤与3相似。由于这两个文件相互关联,必须先配置前者。
5、配置完后,进入/apache_1.3.6/conf/httpd.conf。在文件里面,理解其注释,删除或增加一些选项前的\"#\"。保存文件后,执行命令/usr/src/apache_1.3.6/bin/apachectl start,即打开http,然后可以在Netscape Communication来浏览网页。
心得体会在学习的一个多月来,笔者面对的是一个全新的操作系统,绝大多数操作是通过自己键入命令来实现的,从而能够深入到一定层次的了解操作系统内核。
1、懂得了UNIX的一些基本命令;
2、熟悉vi文本编辑;
3、知道如何在LINUX、UNIX上编写、编译C、C++、JAVA程序;
4、进一步了解了网络原理,动手配置了网络应用软件,从而也清楚了软件安装的一般步骤。
5、毕竟现今for LINUX的应用软件少,而且RedHat LINUX不支持中文,因而还不能完全脱离WINDOWS。因此,应发挥LINUX是一个非常优秀的网络服务器操作系统的优点,扬长避短。
由于有关操作系统的知识不够,所以还不能自己修改、开发内核,暂时停留在一般性了解、基本操作的基础上。因为笔者学习LINUX是为了先在PC机上了解UNIX,这是最主要的目的。当然,这一段时间的学习就是围绕着这个目的开展的。
显然,以上学习所得只是LINUX的皮毛,希望能与各位LINUX高手、爱好者继续探讨LINUX的精髓所在。
LINUX编程
一、文本编辑
LINUX系统标准的文本编辑程序是vi,它提供了编写命令、程序的环境。可见,vi与编程息息相关,因此很有必要在此次先介绍vi的运用。
vi有命令及文本输入模式,通过按来切换。
(1)在命令模式下:
i--在光标前添加文本,与按相同;
a--在光标后添加文本;
r--替换文本,与按两次相同;
x--删除光标处初的字符;
:u--取消最后一次操作;
:wq/:x/:ZZ--保存文本退出;
:q!--防弃修改退出;
:w--将缓冲区写入文件;
:w filename--将缓冲区写入filename(相当于另存为:filename);
:w!Filename2--强迫vi重写名为filename2的文件;j--移动光标到下一行当前位置,与k相反;
h--将光标左移至下一字符,与l相反;
dd--删除一行,dd删除n行;
dw--删除一个词,dw删除n个词;
o--在当前行下添加一行,与O相反;^--行首;$--行尾;:%d--全部删除文件内容;
/string:--在缓冲区向前查找字符串string,与?String相反。按表示继续查找下一个;
set number--显示行号,便于查找错误;
(二)在文本输入模式下,主要进行文本的输入。+x可删除光标前的一个字符;还可以通过鼠标进行快捷的拷贝。
LINUX的文本编辑环境还有emacs、ex等,与vi相似。
二、SHELL编程
bash shell有一组可以从键盘使用的强有力的交互功能:输入/输出重定向,作业控制,历史命令表以及命令行编辑。另外,shell还提供完整的程序语言节是程序及读取和执行用户自己编写的shell的手段。这些shell程序成为shell script。编写shell程序,能配置自己的登录环境,进行交互输入,编辑和别名shell命令,控制流程等。
由于笔者对LINUX操作系统的学习还不够,所以暂时不能进行深层次的编程,只是了解SHELL的语法结构:if命令,test命令,while命令,for循环,until命令,case选择。况且,笔者的学习目的并不在于此,因而没有花太多的时间,而是应能熟练的运用SHELL命令。
三、高级语言编程在LINUX上编写以上程序用到glibc/c++,jdk。步骤如下:
1 # vi xxx.c(/cpp/.java)进入vi编辑界面进行编辑。
2 编译过程
(1)对于C程序:# cc -o exe-filename(可执行文件名)xxx.c
# ./exe-filename
(2)对于C++程序:# c++ -o exe-filename xxx.cpp
# ./exe-filename
(3)对于JAVA程序:# javac xxx.java
# java xxx
可以用gdb来调试程序:gdb exe-filename。其命令通过help来查看。
此外,进行系统程序设计时,使用C语言并调用内部函数,例如用fork创建进程等。
参考文献:1、Jack Tackett Jr.DavidGunter著,万华等译 LINUX大全 电子工业出版社,1998。
2、Phil Cornes著,童寿彬等译 LINUX从入门到精通 电子工业出版社,1998。
3、Xterm Linux中文版1.0使用手册。
4、施势帆等著 Linux网络服务器实用手册 清华大学出版社,1999。
5、网上资料。
发布人:netbull 来自:it365