标题：linux
简介
  创始人林纳斯·托瓦兹Linux操作系统是UNIX操作系统的一种克隆系统，它诞生于1991 年的10 月5 日（这是第一次正式向外公布的时间）。以后借助于Internet网络，并通过全世界各地计算机爱好者的共同努力，已成为今天世界上使用最多的一种UNIX 类操作系统，并且使用人数还在迅猛增长。[1]
Linux是一套免费使用和自由传播的类Unix操作系统，是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想，是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。[2]
Linux以它的高效性和灵活性著称，Linux模块化的设计结构，使得它既能在价格昂贵的工作站上运行，也能够在廉价的PC机上实现全部的Unix特性，具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的，是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统，而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面，如同我们使用Windows NT一样，允许我们使用窗口、图标和菜单对系统进行操作。[3]
发展简史
Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱：UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。[4]
1981 年IBM公司推出微型计算机IBM PC。
1991年，GNU计划已经开发出了许多工具软件，最受期盼的GNU C编译器已经出现，GNU的操作系统核心HURD一直处于实验阶段，没有任何可用性，实质上也没能开发出完整的GNU操作系统，但是GNU奠定了Linux用户基础和开发环境。当时的MINIX需要购买才能得到源代码，局限于校园用作教育使用，闭源专利注定Minix错失推广时机，以至于Minix长期处于测试而无人问津。　
1991年初，林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月，林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。刚开始，他的目的很简单，只是为了学习Intel386 体系结构保护模式运行方式下的编程技术。通过学习，他逐渐不能满足于minix系统的现有性能，并开始酝酿开发一个新的免费操作系统。林纳斯·托瓦兹几乎花了全部时间研究i386-minix系统（hackthe kernel)，并且尝试着移植GNU的软件到该系统上（GCC、BASH、GDB等）。
1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上，而且已经爱不释手、不能离开这个shell 软件了。[1]
1991年7月3日，第一个与Linux有关的消息是在comp.os.minix上发布的（当然此时还不存在Linux这个名称，当时林纳斯·托瓦兹的脑子里想的可能是FREAX，FREAX的英文含义是怪诞的、怪物、异想天开等）。其中透露了他正在进行Linux系统的开发，并且在Linux最初的时候已经想到要实现与POSIX兼容。
1991年的10月5日，林纳斯·托瓦兹在comp.os.minix新闻组上发布消息，正式向外宣布Linux内核的诞生（Freeminix-like kernel sources for 386-AT）。[5]
1993年，大约有100余名程序员参与了Linux内核代码编写/修改工作，其中核心组由5人组成，此时Linux 0.99的代码有大约有十万行，用户大约有10万左右。
1994年3月，Linux1.0发布，代码量17万行，当时是按照完全自由免费的协议发布，随后正式采用GPL协议。
1995年1月，Bob Young创办了RedHat（小红帽），以CNULinux为核心，集成了400多个源代码开放的程序模块，搞出了一种冠以品牌的Linux，即RedHat Linux,称为Linux"发行版"，在市场上出售。这在经营模上是一种创举。
1996年6月，Linux 2.0内核发布，此内核有大约40万行代码，并可以支持多个处理器。此时的Linux 已经进入了实用阶段，全球大约有350万人使用。
1998年2月，以Eric Raymond为首的一批年轻的"老牛羚骨干分子"终于认识到CNULinux体系的产业化道路的本质，并非是什么自由哲学，而是市场竞争的驱动，创办了"Open Source Intiative"（开放源代码促进会）"复兴"的大旗，在互联网世界里展开了一场历史性的Linux产业化运动。
2001年1月，Linux 2.4发布，它进一步地提升了SMP系统的扩展性，同时它也集成了很多用于支持 桌面系统的特性：USB，PC卡（PCMCIA）的支持，内置的即插即用，等等功能。
2003年12月，Linux 2.6版内核发布，相对于2.4版内核2.6在对系统的支持都有很大的变化。
2004年的第1月，SuSE嫁到了Novell，SCO继续顶着骂名四处强行"化缘 "， Asianux， MandrakeSoft也在五年中首次宣布季度赢利。3月SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。[6-8]
文件系统
文件类型普通文件（regular file）：就是一般存取的文件，由ls -al显示出来的属性中，第一个属性为 [-]，例如 [-rwxrwxrwx]。另外，依照文件的内容，又大致可以分为：
1、纯文本文件（ASCII）：这是Unix系统中最多的一种文件类型，之所以称为纯文本文件，是因为内容可以直接读到的数据，例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说，使用命令“cat ~/.bashrc”就可以看到该文件的内容（cat是将文件内容读出来）。
2、二进制文件（binary）：系统其实仅认识且可以执行二进制文件（binary file）。Linux中的可执行文件（脚本，文本方式的批处理文件不算）就是这种格式的。举例来说，命令cat就是一个二进制文件。
3、数据格式的文件（data）：有些程序在运行过程中，会读取某些特定格式的文件，那些特定格式的文件可以称为数据文件（data file）。举例来说，Linux在用户登入时，都会将登录数据记录在 /var/log/wtmp文件内，该文件是一个数据文件，它能通过last命令读出来。但使用cat时，会读出乱码。因为它是属于一种特殊格式的文件。
目录文件（directory）：就是目录，第一个属性为 [d]，例如 [drwxrwxrwx]。
连接文件（link）：类似Windows下面的快捷方式。第一个属性为 [l]，例如 [lrwxrwxrwx]。
设备与设备文件（device）：与系统外设及存储等相关的一些文件，通常都集中在 /dev目录。通常又分为两种：
块设备文件：就是存储数据以供系统存取的接口设备，简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。
字符设备文件：即串行端口的接口设备，例如键盘、鼠标等等。第一个属性为 [c]。
套接字（sockets）：这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求，客户端就可以通过套接字来进行数据通信。第一个属性为 [s]，最常在 /var/run目录中看到这种文件类型。
管道（FIFO,pipe）：FIFO也是一种特殊的文件类型，它主要的目的是，解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out（先进先出）的缩写。第一个属性为 [p]。文件结构/：根目录，所有的目录、文件、设备都在/之下，/就是Linux文件系统的组织者，也是最上级的领导者。
/bin：bin 就是二进制（binary）英文缩写。在一般的系统当中，都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
/boot：Linux的内核及引导系统程序所需要的文件目录，比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下，GRUB或LILO系统引导管理器也位于这个目录。
/cdrom：这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如：mount /dev/cdrom /cdrom
/dev：dev 是设备（device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备，和访问一个文件，一个目录没有任何区别。
/etc：etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件，文件系统，x系统配置文件，设备配置信息，设置用户信息等都在这个目录下。
/home：如果建立一个用户，用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径，用来存放用户的主目录。
/lib：lib是库（library）英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此，千万不要轻易对这个目录进行什么操作，一旦发生问题，系统就不能工作了。
/lost+found：在ext2或ext3文件系统中，当系统意外崩溃或机器意外关机，而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里，并修复已经损坏的文件系统。有时系统发生问题，有很多的文件被移到这个目录中，可能会用手工的方式来修复，或移到文件到原来的位置上。
/mnt：这个目录一般是用于存放挂载储存设备的挂载目录的，比如有cdrom等目录。可以参看/etc/fstab的定义。
/media：有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘（包括U盘）、CD/DVD驱动器等等。
/opt：这里主要存放那些可选的程序。
/proc：可以在这个目录下获取系统信息。这些信息是在内存中，由系统自己产生的。
/root：Linux超级权限用户root的家目录。
/sbin：这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放，是超级权限用户root的可执行命令存放地，普通用户无权限执行这个目录下的命令，这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的，凡是目录sbin中包含的都是root权限才能执行的。
/selinux ：对SElinux的一些配置文件目录，SElinux可以让linux更加安全。
/srv 服务启动后，所需访问的数据目录，举个例子来说，www服务启动读取的网页数据就可以放在/srv/www中
/tmp：临时文件目录，用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候，会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
/usr
这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下，可以找到那些不适合放在/bin或/etc目录下的额外的工具
/usr/local：这里主要存放那些手动安装的软件，即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录，而把自定义的脚本（scripts)放到/usr/local目录下面、。
/usr/share ：系统共用的东西存放地，比如 /usr/share/fonts 是字体目录，/usr/share/doc和/usr/share/man帮助文件。
/var：这个目录的内容是经常变动的，看名字就知道，可以理解为vary的缩写，/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录；/var/lib 用来存放一些库文件，比如MySQL的，以及MySQL数据库的的存放地。[9]
主要特性
完全免费
Linux是一款免费的操作系统，用户可以通过网络或其他途径免费获得，并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点，来自全世界的无数程序员参与了Linux的修改、编写工作，程序员可以根据自己的兴趣和灵感对其进行改变，这让Linux吸收了无数程序员的精华，不断壮大。[10]
完全兼容POSIX 1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时，就想到以前在Windows下常见的程序是否能正常运行，这一点就消除了他们的疑虑。[10]
多用户、多任务
Linux支持多用户，各个用户对于自己的文件设备有自己特殊的权利，保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点，Linux可以使多个程序同时并独立地运行。[10]
良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统，用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似，可以说是一个Linux版的Windows。[10]
支持多种平台
Linux可以运行在多种硬件平台上，如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统，可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作，使系统性能大大提高。[10]
使用技巧
日常应用Linux主要被用作服务器的操作系统，因为它的廉价、灵活性及Unix背景。传统上，以Linux为基础的“LAMP（Linux，Apache，MySQL，Perl/PHP/Python的组合）”技术，除了已在开发者群体中广泛流行，它提供网站服务供应商最常使用的平台。
基于其低廉成本与高度可设置性，Linux常常被应用于嵌入式系统，例如机顶盒、移动电话及移动装置等。在移动电话上，Linux已经成为Symbian OS的主要竞争者；而在移动装置上，则成为Windows CE与Palm OS外之另一个选择。TiVo数码摄影机使用了经过客制化后的Linux。此外，有不少硬件式的网络防火墙及路由器，例如部份LinkSys的产品，其内部都是使用Linux来驱动、并采用了操作系统提供的防火墙及路由功能。[11]
采用Linux的超级电脑亦愈来愈多，根据2008年11月的TOP500超级电脑列表，现时世上最快速的超级电脑使用Linux作为其操作系统。而在表列的500套系统里，采用Linux为操作系统的，占了439组（即87.8%）。
2006年开始发售的SONY PlayStation 3亦可使用Linux的操作系统，它有一个能使其成为一个桌面系统的Yellow Dog Linux。之前，Sony亦曾为他们的PlayStation 2推出过一套名为PS2 Linux的DIY组件。Ubuntu自9.04版本，恢复了PPC支持（包括PlayStation 3）。
而随着OLPC的XO-1，华硕的Eee PC等低价电脑的推行，许多人乐观的认为在低端PC市场，linux的市场占有率正在快速的增长。但在Windows进入此一市场后，Linux的市占率快速下滑。[12-13]
主要用途：虚拟化，数据库服务器，Web服务器，应用服务器，跳转盒(Jump box)，日志服务器，开发平台，Google搜索设备，入侵检测系统。[14]硬盘分区分区类型
硬盘分区一共有三种：主分区，扩展分区和逻辑分区。[15]
在一块硬盘上最多只能有四个主分区。您可以另外建立一个扩展分区来代替四个主分区的其中一个，然后在扩展分区下您可以建立更多的逻辑分区。
扩展分区只不过是逻辑分区的“容器”。实际上只有主分区和逻辑分区进行数据存储。[16]
分区规定
设备管理在 Linux 中，每一个硬件设备都映射到一个系统的文件，对于硬盘、光驱等，IDE 或 SCSI 设备也不例外。Linux 把各种 IDE 设备分配了一个由 hd 前缀组成的文件；而对于各种 SCSI 设备，则分配了一个由 sd 前缀组成的文件。
例如，第一个 IDE 设备，Linux 就定义为hda；第二个 IDE 设备就定义为 hdb；下面以此类7631p2.推。而 SCSI 设备就应该是 sda、sdb、sdc 等。[17]
分区数量
要进行分区就必须针对每一个硬件设备进行操作，这就有可能是一块IDE硬盘或是一块SCSI硬盘。对于每一个硬盘（IDE 或 SCSI）设备，Linux 分配了一个 1 到 16 的序列号码，这就代表了这块硬盘上面的分区号码。
例如，第一个 IDE 硬盘的第一个分区，在 Linux 下面映射的就是 hda1，第二个分区就称作是 hda2。对于 SCSI 硬盘则是 sda1、sda2 等。[18]
分区作用
在 Linux 中规定，每一个硬盘设备最多能有 4 个主分区（其中包含扩展分区）构成，任何一个扩展分区都要占用一个主分区号码，也就是在一个硬盘中，主分区和扩展分区一共最多是 4 个。
对于早期的 DOS 和Windows（Windows 2000 以前的版本），系统只承认一个主分区，可以通过在扩展分区上增加逻辑盘符（逻辑分区）的方法，进一步地细化分区。
主分区的作用就是计算机用来进行启动 操作系统 的，因此每一个 操作系统 的启动，或者称作是引导程序，都应该存放在主分区上。这就是主分区和扩展分区及逻辑分区的最大区别。
在指定安装引导 Linux 的 bootloader 的时候，都要指定在主分区上，就是最好的例证。
Linux 规定了主分区（或者扩展分区）占用 1 至 16 号码中的前 4 个号码。
以第一个 IDE 硬盘为例说明，主分区（或者扩展分区）占用了 hda1、hda2、hda3、hda4，而逻辑分区占用了 hda5 到 hda16 等 12 个号码。
因此，Linux 下面每一个硬盘总共最多有 16 个分区。
对于逻辑分区，Linux 规定它们必须建立在扩展分区上（在 DOS 和 Windows 系统上也是如此规定），而不是主分区上。
因此，扩展分区能够提供更加灵活的分区模式，但不能用来作为 操作系统 的引导。
分区指标
对于每一个 Linux 分区来讲，分区的大小和分区的类型是最主要的指标。
容量的大小读者很容易理解，但是分区的类型就不是那么容易接受了。
分区的类型规定了这个分区上面的文件系统的格式。
Linux 支持多种的文件系统格式，其中包含FAT32、FAT16、NTFS、HP-UX，以及各种 Linux 特有的 Linux Native和 Linux Swap分区类型。在 Linux 系统中，可以通过分区类型号码来区别这些不同类型的分区。[19-20]常用命令echo 命令
举例：echo $PATH。
功能：将命令行中的参数显示到标准输出中。
date命令
举例：date。
功能：显示或设置系统时间，没参数直接显示系统当前的日期和时间。
passwd命令
举例：passwd。
功能：修改密码。
file命令
举例：file 文件名 【参数】。
功能：确定指定文件类型。
ls命令
举例 ls -a 显示当前目录下的全部文件（包括隐藏文件）。
功能：列出目录文件。
touch命令
举例：touch 【选项】 文件名。
功能：修改指定文件的时间标签或者创建一个空文件。
选项：-a 仅改变指定文件的存取时间。
相关认证
Linux认证指获得专业Linux培训后通过考试得到的资格，国际上广泛承认的Linux认证有Linux Professional Institute（简称为LPI）、SairLinux和GNU、Linux+和RedHatCertifiedEngineer。[21]
LinuxProfessional Institute（LPI）
根据Linux团体所关注的程度，LPI认证计划受到了最为广泛的支持。LPI已经先期推出了Linux ProfessionInstitute Certified-Level1（简称为LPIC-1）认证计划，不久的将来还会按预定计划推出第2和第3级认证。
SairLinux 和GNU
同LPI一样，Sair认证提供了三种级别的认证计划；
Level1——Sair Linux & GNU Certified Administrator（LCA）
Level2 —-- Sair Linux & GNU Certified Engineer（LCE）
Level3 ---- Master Sair Linux & GNU Certified Engineer（MLCE）
Linux+
CompTIA主办的Linux+认证计划是最新进入Linux认证市场的。该计划于2001年9月21日正式推出，已经在Linux从业人员和业内引起了广泛的关注。几乎所有的主要认证出版商都撰写了针对Linux+认证的考试参考书，众多的IT 培训中心都在准备Linux+认证计划了。
RedHat Certified Engineer
Linux+代表了低级的Linux认证计划，而高级的Linux认证长期以来则几乎完全是RedHat Certified Engineer（RHCE）认证计划的天下。[22-23]