Linux基础知识 李甬 整理于2006.5
Linux最早是由芬兰赫尔辛基大学一位叫Linus Torvalds的学生设计的.它是一套免费使用和自由传播的
类NUIX系统,源代码开发,能在各类硬件平台(包括Intel x86系列和RISC处理器)上运行.
Linux受广大计算机爱好者喜爱的原因:
1.Linux在pc计算机上实现了全部的UNIX特性,具有多任务,多用户的能力,而且在很多方面相当稳定高效.
2.Linux属于自由软件,用户不需要支付任何费用就可以获得它及其它的原代码,并可以对它进行须改,无偿使用它,无约束传播.
Linux具有以下主要特性:
开放性
开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
多用户
多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。
多任务
多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。
良好的用户界面
Linux向用户提供了两种界面:'用户界面和系统调用。
Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。
系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。
Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
设备独立性
设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。
Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。
供了丰富的网络功能
完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。
支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。
文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。
远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。
可靠的系统安全
Linux采取了许多安全技术措施,包括 对读、写进行权限控制 带保护的子系统 审计跟踪 核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
良好的可移植性
可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力.
Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。
可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。
在说Linux特点时,也顺别提一下它的缺点,Linux没有核心团队,来自世界各地的爱好者都可以发布自己的补丁(patch),缺点是源代码可能杂乱无章并且可能相互冲突.其实从另个方面说也是优点,爱好者都可以发布自己的补丁(patch),这使Linux充满着活力,不断更新进步.
Linux与其他操作系统的区别
Linux可以与MS-DOS、Windows等其他操作系统共存于同一台机器上。它们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。至于MS-DOS、Windows对我们一般计算机爱好来说是非常熟悉的操作系统了,在此只列出Linux与UNIX的区别.
某些PC机的Unix和Linux在实现方面相类似。几乎所有的商业Unix版本都基本支持同样的软件、程序设计环境和网络特性。然而,Linux和Unix的商业版本依然存在许多差别。Linux支持的硬件范围和商业Unix不一样。一般来说,商业Unix支持的硬件多一些,可是Linux支持的硬件也在不断扩大。突出的是,Linux至少和商用Unix一样稳定。对许多用户来说,最重要的因素是价格。Linux是免费软件,用户可以从Internet网上下载。如果上网不方便,可以很便宜地通过邮购得到Linux的磁盘或CD-ROM。当然也可以直接从朋友那里得到。商业Unix的价值不应被贬低。除了软件本身的价格外,用户还需支付文档、售后支持和质保费。对于较大的机构,这些都很重要,但是PC机用户也许从中得不到什么好处。许多商业公司和大学等单位已经发现,在实验室用廉价的PC机运行Linux比用工作站运行商业Unix还好。Linux可以在PC机上提供工作站的功能,而PC机的价格是工作站的几分之一。也有一些针对PC机的便宜的Unix,其中最有名的是386BSD。在许多方面,386BSD软件包和Linux兼容,但Linux更适合用户的需求。最显著的是,Linux的开发是开放的,任何志愿者都可以对开发过程做出贡献。相比之下,386BSD是由封闭的团队开发的。正是这样,这两种产品存在着严重的概念上和设计上的差别:Linux的目标是从头开始开发一个完整的Unix系统;386BSD的目标则是对现有的BSD做些修改,以适合80386系统。当然现在也有许多免费的在PC机上运行的UNIX,如NetBSD,FreeBSD,OpenBSD等,NetBSD,FreeBSD,OpenBSD在硬件支持方面不如Linux,在系统性能方面,具专家分析,FreeBSD在网络性能,软件移植和系统规范化上比Linux略强些.
Linux下的目录树
/
这就是根目录。在Windows,DOS或者其他类似的操作系统里面,每个分区都会有一个相应的根目录。但是Linux和其他Unix系统把所有的文件都放在一个目录树里面,/ 就是唯一的根目录。一般来讲,根目录下面很少保存什么文件,或者只有一个内核映像在这里。
/boot
很多Linux系统把内核映像和其他一些和启动有关的文件放在这里。
/tmp
一般只有启动的时候产生的临时文件才会放在这个地方。我们自己的那些临时文件都放在 /var/tmp。
/mnt
这个目录下面放着一些用来mount其他设备的子目录,比如说/mnt/cdrom或者/mnt/floppy。
/lib
启动的时候所需要用到的库文件都放在这个目录下。那些非启动用的库文件都会放在/usr/lib下。内核模块是被放在/lib/modules/(内核版本)下的。
/proc
这个目录在磁盘上其实是不存在的。里面的文件都是关于当前的系统状态的,包括正在运行的进程,硬件状态,内存使用的多少……
/dev
这个目录下保存着所有的设备文件。里面有一些Linux内核创建的用来控制硬件设备的特殊文件。注意,网卡设备文件(eth0,ppp0等)不在这儿。
/var
这里有一些被系统改变过的数据。比如说/var/tmp,就是用来储存临时文件的。还有很多其他的进程和模块把它们的记录文件也放在这个地方。下面将会列举一些重要的子目录:
/var/log
这里放着绝大部分的记录文件。随着时间的增长,这个目录可能会变得很臃肿。所以需要定期来清理一下。
/var/run
包括了各种运行时的小信息。
/var/lib
包括了一些系统运行的时候需要的文件。如果你用笔记本上网,/var/lib/pcmcia/stab可能会对你有用。
/var/spool
邮件,新闻,打印序列的所在地。
/root
Root用户的主目录。
/home
一般用户的主目录都会放在这个目录下。你可以通过$ cd ~ 来进入你自己的主目录。
/etc
如果你是Root用户的话,这个目录应该是你最常来的地方。这里保存着绝大部分的系统配置文件。相对来讲,单个用户的系统配置文件将会保存在这个用户自己的主目录里面。这里的文件会根据你所安装的软件而增减。下面将会列举一下重要的子目录:
/etc/X11
这里放着X系统所需要的配置文件。XF86Config就是把配置储存到这个地方的。/etc/X11/fonts里面放着一些服务器需要的字体。还有一些窗口管理器存放的配置文件也是放在这个地方的。
/etc/init.d
这个目录保存着启动描述文件,包括各种模块和服务的加载描述。所以如果不清楚的话,最好不要随便删这里的东西。这里的文件都是系统进行配置的,不是用户自己用来配置的。
/etc/rcS.d
这里放着一些连接到/etc/init.d的连接文件,根据runlevel的不同而执行相应的描述。这里的文件名都是由S来开头的,然后是一个两位的数字——表示各种服务启动的顺序。比如,S24foo就是在S42bar前面执行的。接着就是相应的连接到/etc/init.d下面的文件的名字了。
/etc/rc0.d - /etc/rc6.d
这里面也是一些连接文件,和/etc/rcS.d差不多。不同的是,这些只会在指定的runlevel下运行相应的描述。0表示关机,6表示重启。所有以 K开头的文件表示关闭,所有以S开头的文件表示重启。目前来讲,文件的命名方式和/etc/rcS.d是一样的。注意,在Debian下,2表示启动。
/bin, /sbin
这里分别放着启动的时候所需要的普通程序和系统程序。很多程序在启动以后也很有用,它们放在这个目录下是为它们会经常被其他程序所调用。
/usr
这是一个很庞大的目录,几乎所有的文件都放在这下面,除了上面所说的那些。下面将会列举一些重要的子目录:
/usr/X11R6, /usr/X11, /usr/Xfree86
这里面保存着X系统所需要的文件,它的目录结构和/usr是一样的。
/usr/bin
v二进制可执行文件存放的目录,这里放着绝大部分的应用程序。
/usr/sbin
这里放着绝大部分的系统程序。
/usr/games
游戏程序和相应的数据会放在这里。
/usr/include
这个目录保存着C和C++的头文件。除非你是程序员,否则你可能不会感兴趣。
/usr/lib
启动时用不到的库文件都会被放在这里。
/usr/info
这里保存着GNU Info程序所需要的数据。
/usr/man
这里保存着man程序所需要的数据。
/usr/src
这里保存着源代码文件。Linux内核的源代码都放在/usr/src/linux下了。
/usr/doc
这里保存着各种文档文件。这些文件可以帮助你了解Linux,解决问题和提供一些技巧。或者你可以通过访问 http://www.linuxdoc.org 来活得更多的知识。
/usr/local
这里面保存着本地计算机所需要的文件。在用户进行远程访问的时候特别有意义。这个目录在有些Linux系统下就是一个单独的分区,存放一些这台机子所属的那个用户的文件。里面的结构和/usr是一样的。
/usr/shared, /usr/share
这里保存着各种共享文件,比如说某个应用程序所需要的声音文件。