9599九五至尊老品牌


水浒传: 第三遍 赵员外重修文殊院 鲁智深大闹衡山

移动阅读为啥要引进社交模块?

Linux简介

摘要:
如果你对你的linux水平还不满意?想深入了解linux?那么跟随专家来学习吧!今天推荐书小编给大家推荐一本关于深入探索linux的一本专业技能书籍《Linux就是这个范儿》!编辑推荐
阿里巴巴Linux技术大拿赵鑫磊、支付宝 …

首先,我们常说的linux,准确地来讲,应该是叫“gnu/linux”。因此,严格来讲,术语Linux只表示操作系统内核本身,但通常采用Linux内核来表达该意思。Linux则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。

Linux系统目录结构有如下两个特点:

1、逻辑上所有的目录结构都在一个最高级别的根目录”/“
下,根(/)目录是所有目录的起始点,其下面的子目录是一个层次或树状结构,这些不同的目录可以分布在不同的硬盘分区甚至不同的设备上。这和Windows按照硬盘分区(C:,D:,E:)分隔的目录结构是不同的。

2、所有的目录内容按照类别组织。例如,一个Linux下的应用程序,它的可执行程序在/usr/bin,而它的数据文件和帮助文件在/usr/share下,运行时加载的配置文件和服务启动命令却在/etc下。
如果理解了这两点
,相信大家很快就能轻松的理解Linux系统的目录结构,进而感受Linux系统的独特的魅力所在。系统的独特的魅力所在。

图片 1

Linux的特性

  开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(OSI)国际标准。

  多用户:是挃系统资源可以被丌同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互丌影响。

  多任务:它是挃计算机同时执行多个程序,而丏各个程序的运行互相独立。

  良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

  设备独立性:是挃操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱劢程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而丌必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力。

  提供了丰富的网络功能:完善的内置网络是Linux一大特点。

  可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

  良好的可移植性:是挃将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行

Linux可划分为以下四部分:

  • Linux内核
  • GNU工具
  • 图形化桌面环境
  • 应用软件*

每一部分在Linux系统中各司其职。但就单个部分而言,其作用并不大。

基本结构框图

图片 2

内容小结:

1、Linux系统目录是树状目录结构,“/”根是所有目录的起点。

图片 3

linux系统目录

2、不同的目录可以跨越磁盘分区或不同的磁盘设备。
3、所有的目录都是按照一定的类别有规律的组织的。

/:存放系统程序,也就是At&t开发的Unix程序。
/usr:存放Unix系统商(比如IBM和HP)开发的程序。
/usr/local:存放用户自己安装的程序。
/opt:在某些系统,用于存放第三方厂商开发的程序,所以取名为option,意为“选装”

如果你对你的linux水平还不满意?想深入了解linux?那么跟随专家来学习吧!今天推荐书小编给大家推荐一本关于深入探索linux的一本专业技能书籍《Linux就是这个范儿》!

Linux 内核

  Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

  如果你一直都在关注Linux世界,肯定听说过Linus
Torvalds。Linus还在赫尔辛基大学上学时就开发了第一版Linux内核。起初他只是想仿造一款Unix系统而已,因为当时Unix操作系统在很多大学都很流行。

  Linus完成了开发工作后,将Linux内核发布到了互联网社区,并征求改进意见。这个简单的举动引发了计算机操作系统领域内的一场革命。很快,Linus就收到了来自世界各地的学生和专业程序员的各种建议。

  如果谁都可以修改内核程序代码,那么随之而来的将是彻底的混乱。为了简单起见,Linus担当起了所有改进建议的把关员。能否将建议代码并入内核完全取决于Linus。时至今日,这种概念依然在Linux内核代码开发过程中沿用,不同的是,现在是由一组开发人员来做这件事,而不再是Linus一个人。

Linux目录结构:

1、目录层次标准FHS

FHS全称(Filessystem Hierarchy
Standard),中文意思是目录层次标准,是linux的目录规范标准。
FHS定义了两层规范:第一层是“/”目录下的各个目录应该放什么文件数据,例如:/etc目录下应该放置系统的配置文件,/bin和/sbin应该放置程序命令等。第二层是针对/usr和/var这两个目录的子目录来定义。例如:/var/log下放置系统日志文件等。

2、根目录结构:
对于每一个Linux学习者来说,有必要了解一下Linux文件系统的目录结构。
当使用Linux的时候,如果执行ls -l /
命令就会发现,在/下包含很多的目录,比如etc、usr、var、bin等目录,而在这些目录中,我们发现也有很多的目录或文件,他们就像一个树状的结构。
Linux
目录结构的最顶端是“/”,我们称/为linux的根目录。根(/)目录是所有目录的起始点,所有的目录、文件、设备都在/之下,根(/)下的目录是一个层次(或树状结构),可以说,/就是linux文件系统的组织者、领导者。

tree -L 1 /     #/下第一层

编辑推荐

阿里巴巴Linux技术大拿赵鑫磊、支付宝高级专家Jie
Zhang带你深入探索linux。王小川(搜狗公司CEO、前搜狐高级副总裁、首席技术官)钱振宇博士(Windows
Live中国首席科学家、德国不来梅大学教授、博士生导师)金尊和博士(VMware首席科学家、前IBM公司资深工程师、Sun公司Java
JDO专家组成员)联袂推荐既然选择用它,为何不用得深入。在高手的领地,学习亲切的知识,了解古朴而自由的世界,看到更多的可能性与非绝对。在寻常的背后,发现惊人的思想,在不寻常的背后,见证缜密的逻辑。

内核主要负责以下四种功能:

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

目录及说明(*号多少表示重要程度)

/bin
:常用的二进制命令目录。比如ls、cp、mkdir、cut等命令见附录一;和/usr/bin类似。

/boot:Linux的内核及引导系统程序所需的文件目录。安装系统分区的时候一般要分一个boot分区。常见分区:/boot
128M swap分区内存的1.5倍 /全给。

/dev:设备文件目录,比如声卡、磁盘、光驱等。***

/etc :常用系统及二进制安装包配置文件默认安装路径和服务
启动命令目录。*****

/home:普通用户的家目录默认数据存放目录**

/lib:库文件存放目录。

/lost+found:在ext3文件系统中当系统意外崩溃或意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当
系统发生问题,可能会有文件被移到这个目录中,可能需要手工的方式来修复,或移到文件的原来位置上。

/mnt:一般是用于临时挂载存储设备的挂载目录的,比如有cdrom,U盘等目录。直接插入光驱无法使用,要先挂载后使用。

/opt
:表示的是可选的意思,有些软件包也会被安装在这里,也就是自定义软件包,我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过./configure
–prefix=/opt/目录,飞必须这样,视习惯或规定而定。

/proc:操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见
/etc/fstab *****

/root:Linux超级权限用户root的家目录;win32管理员为:administrator

/sbin:大多是设计系统管理的命令的存放,是超级权限用户root的可执行命令存放位置,这个目录和/usr/sbin、/usr/X11R6/sbin或/usr/local/sbin目录是相似的。

/tmp:临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的,权限比较特殊。/var/tmp目录和这个目录相似。***

/usr
:这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个linux发行版官方提供的软件包时,大多数安装在这里。如果有涉及服务配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts,帮助目录/usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin或/usr/local/bin或/usr/X11R6/bin,比如/usr/sbin或/usr/X11R6/sbin或/usr/local/sbin等;还有程序的头文件存放目录/usr/include。

/var:这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log这是用来存放系统日志的目录,系统日志的路径/var/log/messages。/var/www目录是定义apache服务器站点存放目录;/var/lib用来存放一些库文件,比如MySQL的,以及MySQL数据库的存放位置。***

内容简介

《linux就是这个范儿》内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家jie
zhang共同著写。
两位作者用轻松、诙谐的语言讲解了高深的linux特性。通俗易懂、深入浅出,从linux设计思想的角度出发,授人以渔。同时,又密切结合应用案例,透彻展示出linux的系统架构设计是如何在实际中贯穿的,从而让读者真正掌握linux的强大之处。书中不含较为复杂的技术理论问题,一切从实际出发。
全书共分为三个部分:基础篇、进阶篇和扩展篇。通过对linux的版本选择与安装、基本使用与系统结构、设计哲学与思想、脚本编程与软件开发、内核编译、网络与认证,以及多媒体等几个方面的精彩讲解,将linux操作系统的灵魂与运用教授给读者。

系统内存管理

  操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。

  内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap
space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存

图片 4

  内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。

  内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping
out)——即使还有可用内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内存页面。显然,这个过程要花费时间,拖慢运行中的进程。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。

一些重要子目录的说明:

例举一些常见的重要目录,这些是大家必须要熟记的

目录及说明(*号多少表示重要程度)

/etc/system/network-scripts/ifcfg-eth0:配置网络地址及GW等。*****

/etc/resolv.conf:设置本机的客户端DNS。*****,DNS可以实现域名和IP的互相解析

/etc/hosts:设定用户IP与名字(或域名)的对应表,相当于本地LAN内DNS。****
类似windows中的C:\WINDOWS\system32\drivers\etc\hosts,LAN内IP域名解析文件。开发、测试时常用,hosts的解析在机房的服务器互相调用中也会常用,如门户网站的解析

/etc/sysconfig/network:可以修改机器名及网卡启动等配置。

/etc/fstab:记录开机要mount的文件系统。*****

/etc/exports:设定NFS系统用的配置文件的路径

/etc/inittab:设定系统启动是init进程将把系统
设置成什么样的runlevel及加载相关的启动文件配置。****

/etc/init.d:这个目录是用来存放系统或服务器以及System
V模式启动的脚本,这在以System
V模式启动或初始化的系统中常见。比如Cetos/Redhat;*****

/etc/xinit.d:如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat/Fedora中比较新的版本中存在。

/etc/profile:系统全部环境变量配置路径。*****

/etc:目录下的重要目录和文件

/etc/issue:记录用户登入前显示的信息

/etc/motd:显示登入时的信息

/etc/group:设定用户的组名与相关信息。***

/etc/passwd:账号信息。*****

/etc/shadow:密码信息。

/etc/sudoers:可以sudo命令的配置文件。****

/etc/securetty:设定那些终端可以让root登入。

/etc/login.defs:所有用户登入是的缺省配置。

/etc/modprobe.conf:内核模块额外参数设定。

/etc/syslog.conf:日志设置文件。***

作译者

赵鑫磊阿里巴巴集团资深Linux系统专家。自1998年开始使用Linux,曾参与国内著名的Linux社区发行版MagicLinux的开发工作,是一个土生土长的东北人。工作经历丰富,开过小网吧、大学讲过课、发过小广告、干过铁路工(开发铁路车载电视系统)、当过副总裁,但始终没有放弃对Linux的探索与研究,并将这份经历凝聚在了本书之中。电子邮箱:jagen.zhao@gmail.com来往账号:飞芃微信账号:567867Jie
Zhang阿里巴巴集团支付宝网络技术有限公司高级专家。曾在美国、日本、加拿大和中国的多家高科技企业担任过技术总监等职。参与研发的Jack
of Spades Combo卡于1999年3月获得北美权威的PC Magazine杂志的Editors’
Choice奖,并赢得PC Computing MVP Finalist
Award奖。自1998年开始从事Linux开发,研发基于Linux平台的网络、多媒体、通讯和电子商务等多领域的高科技产品与项目,获中国国家科技进步三等奖,并拥有多项国家发明专利。电子邮箱:jie_joy_zhang@yahoo.com来往账号:方如微信账号:fangru-jiezhang

软件程序管理

  Linux操作系统将运行中的程序称为进程。进程可以在前台运行,将输出显示在屏幕上,也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。

  内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。

  一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中。

  另外一些系统(比如现在流行的Ubuntu
Linux发行版)则采用/etc/init.d目录,将开机时启动或停止某个应用的脚本放在这个目录下。这些脚本通过/etc/rcX.d目录下的入口(entry)
启动,这里的X代表运行级(run level)。

  Linux操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的某些特定类型的进程。Linux操作系统有5个启动运行级

  运行级为1时,只启动基本的系统进程以及一个控制台终端进程。我们称之为单用户模式。

  单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据。

  标准的启动运行级是3。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。另一个Linux中常见的运行级是5。在这个运行级上系统会启动图形化的X
Window系统,允许用户通过图形化桌面窗口登录系统。

  Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从3调整成5,系统就可以从基于控制台的系统变成更先进的图形化X
Window系统。

其他目录文件

/lib:系统会使用到的函数库。

/lib/modules:Kernel的相关模块。

/var/lib/rpm:rpm套件安装处。

/usr/bin:这个目录是可执行程序的目录;当我们从系统自带的软件包安装一个程序时,它的可执行文件大多会放在这个目录。类似的目录是。/usr/local/bin

/usr/sbin:这个目录也是可执行程序的目录,但大多存放设计系统管理的命令;相似的目录是。/sbin或/usr/local/sbin或/usr/X11R6/sbin等。

/usr/local:这个目录一般是用来存放用户自编译安装的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。

/usr/local/bin:用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号链接。

/usr/local/sbin:系统全局环境目录,可防止一些不需要加路径执行的脚本等。

/usr/share:系统公用的东西存放位置,比如/usr/share/doc和/usr/share/man帮助文件。

/usr/src:内核源码存放目录,比如下面有内核源码目录,比如linux、linux-2xxx目录等。

/usr/bin:使用者可执行的binary file 的目录。

/usr/local/bin:使用者可执行的binary file 的目录。

/usr/lib:系统会使用到的库函数。

/usr/local/lib:系统会使用到的函数库

/var:目录下的路径知识点

/var:日志目录。

/var/log:各种系统日志存放位置。

/var/log/messages:系统信息默认日志文件,非常重要。按周自动轮循。*****

/var/log/secure:记录登入系统存取信息的文件,按周自动轮循,例如pop3,ssh,telnet。ftp等都会记录在此处。****

/var/log/wtmp:记录登入者信息的文件,last

/var/spool/cron/root:定时任务crontab默认目录,按用户名命名的文件。*****

/var/spool/clientmqueue:临时邮件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等。工作中偶尔会因为该目录文件太多,导致/var所在的分区inode数量被消耗尽,无法写入文件的情况。

/proc目录下的重要路径知识

/proc:虚拟目录,是内存的映射。

/proc/version:内核版本。

/proc/sys/kernel:系统内核功能。

/proc/cpuinfo:关于处理器的信息,如类型、厂家、型号和性能等。****

/proc/meminfo:系统内存信息。

/proc/devices:当前运行内核所配置的所有设备清单。

/proc/dma:当前正在使用的DMA通道。

/proc/filesystems:当前运行内核所配置的文件系统。

/proc/interrupts:正在使用的中断,和曾经有多少个中断。*****

/proc/ioports:当前正在使用的I/O端口。

/proc/loadavg:系统负载信息,uptime的结果。*****

前言

有个OS名叫Linux,它的故事耐人追寻。
小小系统,众人追寻,相识相恋,从不伤心……
赵鑫磊:Hi,Jie,有人找我出书了,不过我觉得我在网络这方面有些欠缺。我知道你在Linux平台上做过不少项目,特别是网络这方面。你能来帮我一下,我们一起来完成这本书好吗?
Jie
Zhang:真的吗?那太棒了,虽然现在有关Linux的书不少,但是我相信经过这么多年的风风雨雨我一定能写出另一种味道。很乐意跟你合作。
赵鑫磊:太好了,有了你的参与,我们这本书的技术性会更强! Jie
Zhang:Linux无毒、免费和稳定是它备受推崇的原因。 赵鑫磊
:无毒、免费和稳定还不够给力啊!我觉得知识的保值性才是最主要的。在Linux中有些知识几十年都没过时。
Jie
Zhang:对,这样的知识的投资回报率很高。学好Linux,面对如FreeBSD、Solaris等系统,就不犯愁了。
赵鑫磊:看完我们这本书,其他书都是小儿科了。哈哈。 Jie
Zhang:你的口气也太大了吧……
赵鑫磊:哈哈,你得抱有这个希望,我们试着在这么做。 Jie
Zhang:好吧。不想当厨师的女程序员不是好媳妇儿! Jie
Zhang:那这本书就不是一本工具书了,它是我们多年工作经验积累下的感悟。不管读者喜欢与否,这种感觉就在那里,不多不少,不离不弃。
赵鑫磊:对,我们这本书不是用于入门,不是工具书。它是传道、授业、解惑的。
Jie Zhang:我觉得还是初中级比较好。曲高和寡,不一定好。初级最好。 赵鑫磊
:我们的角度已经决定了无法定位在初级。我们并不曲高,但我们也不是初级。我们是传道的!
Jie Zhang:这点我同意。我们要讲述Linux的精髓,而不是简单的入门。
赵鑫磊:读者需要反复地推敲书中的内容。就像很多很牛的大师写科普读物,简单几句话里却有透彻的大道理。我们分为三大部分写,基础篇、进阶篇和扩展篇。基础篇能了解Linux的基本特点,进阶篇则从文件系统、进程通讯和网络等更深层次去挖掘Linux的思想内涵,扩展篇则要给读者打开Linux图形和多媒体的缤纷世界。不同层次和需求的读者都可以从中找到自己感兴趣的东西。最重要的是,我们所讲述的每一章,都在谈论机制。
Jie Zhang:你说的机制是指什么?
赵鑫磊:机制就是很难改变的、必须要做的事情。

硬件设备管理

  内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

  以前,插入设备驱动代码的唯一途径是重新编译内核。每次给系统添加新设备,都要重新编译一遍内核代码。随着Linux内核支持的硬件设备越来越多,这个过程变得越来越低效。不过好在Linux开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法。

  开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内核。同时,当设备不再使用时也可将内核模块从内核中移走。这种方式极大地简化和扩展了硬件设备在Linux上的使用。

  Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3种分类:

  • 字符型设备文件
  • 块设备文件
  • 网络设备文件

  字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。块设备文件是指处理数据时每次能处理大块数据的设备,比如硬盘。

  网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用常见的网络编程协议同自身通信。

  Linux为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。

其他路径知识 (了解)

/etc/DIR_COLORS:设定颜色。

/etc/host.conf:文件说明用户的系统如何查询节点名,默认 order
hosts,bind

/etc/hosts.allow:设置允许使用inetd的机器使用。

/etc/hosts.deny:设置不允许使用inetd的机器使用

/etc/protocols:系统支持的协议文件。

/etc/X11:X Window 的配置文件

序言

序一
Linux已有20多年历史,大部头著作一摞一摞。听到作者要写Linux,我真怀疑他们怎么能写出新意来,直到读过初稿以后……
过去的Linux著作,大多只专注于说清技术细节,文字难免平淡,角度也常常是从上往下地灌输。这种书作为工具书还好,但要读者从头读到尾,则相当单调,有点压抑。特别是,自从IT技术已发展到自由、民主、开放和共享的互联网时代的今天,以前的积累已经使新码农觉得自己很卑微渺小,再加上现实生活又很累,能在读书中加强自我意识,再搞点轻松诙谐,已成为一种必要的调剂。
作为资深码农的本书作者,清楚地感受到社会的改变和码农的需要。他们以不吝权威的态度,采取和读者平等的姿态,借用当代一些大众文学作品的语言风格,把技术明珠Linux,从神坛上拉下来,作为普世和开放的知识与智慧,用大白话表述,以日常例子比喻,不时夹杂文艺调侃,既讲明了技术细节,又娱乐了大众诉求。
往大了说,本书作者的人文态度反映我们的时代,具有自由、民主、开放和共享精神,是一种互联网时代的人文态度。从具体处看,本书的风格旨在提高读者兴趣,何乐不为?
Linux的产生和发展,特别是随之成熟的自由软件(Free
Software)和开源软件(Open-source
Software)运动,既依赖于互联网技术的发展,又是互联网自由、民主、开放、透明和共享精神的体现。正是这种精神,犹如一个最基本的价值基座,支撑着互联网发展到了今天,宛如一个核心,将互联网的全部价值凝聚起来。采取互联网时代的人文态度来传播Linux,是一种传播方法与传播内容的共鸣。
互联网时代才刚刚开头。虽然存在犹豫和彷徨,但码农一定是改变时代的推动力量,帮助码农成长就是促进时代发展。这本书,正是帮助码农积攒正能量,以应对未来,因此值得推荐。另外,现存的大部头技术书还少有采用这种人文态度的,我为作者的勇气鼓掌。
钱振宇 Windows Live首席科学家 德国不来梅大学教授、博士生导师
2014年2月12日于北京 序二
选择了IT为业,就选择了紧张而劳碌的生活方式,因为快速变化就是这个行业的基因。
当你刚刚熟悉视窗,又要去学习Linux
;刚刚适应了客户服务器计算模式,又要去学习万维网应用;刚刚开发了Java程序,又要去学习.NET编程;刚刚用惯了Subversion做版本控制,又要去学习GIT;刚刚推出桌面方案,又要学习智能手机的开发;刚刚掌握企业私有数据中心,又要去学习云计算、虚拟化……总之,在你驾轻就熟某项技术之时或之前,新的技术就又出现了。为了保持职业的竞争力,你还得轻装上阵、奋勇学习,直到退休之时(我相信很多人的惯性还会一直延续下去)。在劳顿的同时,也有学习新知的乐趣,这正是IT行业的魅力所在。
虽然Linux已经有22岁的“高龄”,
本身不再是什么新技术,但其重要性始终未减,而且新的相关技术不断涌现,如KVM虚拟化软件。在当今云计算年代,因为Linux是开源软件,其重要性更不断上升。据不完全统计,在公有云端的服务器有80%之多运行Linux。掌握了Linux,也就掌握了通向云端的入场券。Linux的重要性毋须赘言。
同为学习,可以一本正经地学,也可以轻松愉快地学。本人读过若干本有关Linux的书,基本是一本正经地学,趣味不足,权当是工具书在需要的时候去查一下。听说两位作者要写Linux,也没有期望有所不同。收到初稿后,看着目录眼前便一亮,循着章节一一读完。这本书可以轻松愉快地学。
在轻松愉快的同时,并不影响这本书的结构的全面性、技术的准确性和内容的实时性。学习Linux并不仅仅是Linux本身,还包括建构在Linux之上和周边的相关技术和工具。有了这些软件,才能够把Linux变成解决方案,并解决实际中的各种问题。这才是最重要的学习,也是最难的学习。这本书不仅涵盖了各个基本技术点,如文件系统、Shell命令等,还系统介绍了许多工具和软件来建构电子邮件、Web应用等方案。即使对Linux有所了解,也会在这本书中得到新的内容和新的视角。
基于本书的趣味性和技术性,当然还有Linux的重要性,相信其他读者和我一样会喜欢这本书,并在紧张忙碌的生活空隙中精神愉快地读完它,助力于自我的技术提高和职业发展。
金尊和 博士 IBM公司资深工程师. Sun公司Java JDO专家组成员

文件系统管理

  不同于其他一些操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。除了自有的诸多文件系统外,Linux还支持从其他操作系统(比如Microsoft
Windows)采用的文件系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。

Linux文件系统

文件系统 描 述
ext Linux扩展文件系统,最早的Linux文件系统
ext2 第二扩展文件系统,在ext的基础上提供了更多的功能
ext3 第三扩展文件系统,支持日志功能
ext4 第四扩展文件系统,支持高级日志功能
hpfs OS/2高性能文件系统
jfs IBM日志文件系统
iso9660 ISO 9660文件系统(CD-ROM)
minix MINIX文件系统
msdos 微软的FAT16
ncp Netware文件系统
nfs 网络文件系统
ntfs 支持Microsoft NT文件系统
proc 访问系统信息
ReiserFS 高级Linux文件系统,能提供更好的性能和硬盘恢复功能
smb 支持网络访问的Samba SMB文件系统
sysv 较早期的Unix文件系统
ufs BSD文件系统
umsdos 建立在msdos上的类Unix文件系统
vfat Windows 95文件系统(FAT32)
XFS 高性能64位日志文件系统

  Linux服务器所访问的所有硬盘都必须格式化成上表所列文件系统类型中的一种。

  Linux内核采用虚拟文件系统(Virtual File
System,VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS将信息都缓存在内存中。

Linux的文件结构

  • /:根目录,所有的目录、文件、设备都在/之下,/就是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数据库的的存放地。

小结:

目录

《linux就是这个范儿》 第一部分 基础篇 第1章 第一次亲密接触2 1.1
让linux入驻我们的电脑2 1.1.1 我们用linux的理由3 1.1.2 选择哪个发行版4
1.1.3 安装系统6 1.1.4 登录系统15 1.2 不一样的图形操作15 1.2.1
没有图形的图形15 1.2.2 架构设计17 1.3 主流桌面环境18 1.3.1
kde初学者的首选18 1.3.2 gnome不可磨灭的经典20 1.3.3
xfce——轻量、简单、高效21 1.3.4 lxde——更轻,同样精悍21 1.4
返璞归真的命令行22 1.4.1 开始执行命令22 1.4.2 文本和图形的切换23 1.4.3
基础命令的操作23 1.4.4 快捷键26 1.4.5 错误信息28 1.4.6
联机帮助——man很靠谱30 1.4.7 致命的linux命令31 1.5 结束语32 第2章
融于心而表于行33 2.1 多用户多任务分时操作系统33 2.2 用户的身份35 2.2.1
澡堂子模型35 2.2.2 理解用户角色36 2.2.3 /etc/passwd文件查看用户37 2.2.4
/etc/group文件查看组38 2.2.5 管理用户和组39 2.2.6
夺面双雄——利用sudo假借身份41 2.2.7 我是谁?44 2.3 文件和它与权限的关系45
2.3.1 目录与文件46 2.3.2 文件属性和权限47 2.3.3 文件连接到底是什么49
2.3.4 修改文件的属性和权限51 2.3.5 深入文件权限52 2.3.6 文件的基本操作54
2.3.7 搜索文件55 2.3.8 对文件打包压缩57 2.4 程序的执行问题58 2.4.1
执行程序的方法,以及多任务协调机制58 2.4.2 计划任务62 2.4.3
守护进程及其作用64 2.4.4 全面了解程序信息66 2.5 软件的安装方式71 2.5.1
从源代码安装软件71 2.5.2 利用软件管理工具rpm和dpkg72 2.5.3
更酷的线上升级73 2.6 磁盘的管理方式76 2.6.1
linux的文件系统——甩windows几条街76 2.6.2 磁盘的基本操作78 2.6.3
/etc/fstab文件——决定分区的连接83 2.6.4 弹性调整容量——逻辑卷85 2.7
解决上网问题90 2.7.1 了解ip地址90 2.7.2 相关配置文件91 2.7.3 安装网卡92
2.7.4 手工设定ip地址92 2.7.5 自动获取ip地址93 2.7.6 固定ip上网方式93
2.7.7 adsl拨号上网方式94 2.8 不能割舍的shell96 2.8.1 勤勤恳恳的bash96
2.8.2 环境变量98 2.8.3 bash的配置文件98 2.9 文本处理101 2.9.1
查看文本内容101 2.9.2 正则表达式101 2.9.3 搜索文本的grep104 2.9.4
排序和去重105 2.9.5 文件对比命令——diff105 2.10 结束语107 第3章
一棵“树”的奥秘108 3.1 linux的文件组织结构109 3.2 基本组织原则110 3.3
根文件系统111 3.3.1 原则与特性111 3.3.2 必备的内容112 3.3.3
可选的内容113 3.4 子目录113 3.4.1 /bin目录——shell命令113 3.4.2
/boot目录——启动过程所需内容115 3.4.3 /dev目录——设置文件116 3.4.4
/etc目录——配置文件116 3.4.5 /home目录——用户专有118 3.4.6
/lib目录——共享库和内核模块119 3.4.7 /media目录——可移动设备119 3.4.8
/mnt目录——临时挂接120 3.4.9 /opt目录——附加软件包120 3.4.10
/root目录——root专有120 3.4.11 /sbin目录——必备的系统软件121 3.4.12
/srv目录——服务进程所需数据121 3.4.13 /tmp目录——临时文件122 3.5
/usr目录组织结构122 3.5.1 /usr/bin目录123 3.5.2 /usr/include目录123
3.5.3 /usr/lib目录123 3.5.4 /usr/local目录123 3.5.5 /usr/sbin目录124
3.5.6 /usr/share目录124 3.5.7 /usr/share/man目录125 3.5.8
/usr/share/misc目录126 3.6 /var目录组织结构127 3.6.1 /var/account目录128
3.6.2 /var/cache目录128 3.6.3 /var/lib目录128 3.6.4 /var/lock目录128
3.6.5 /var/log目录129 3.6.6 /var/mail目录129 3.6.7 /var/opt目录129 3.6.8
/var/run目录129 3.6.9 /var/spool目录130 3.6.10 /var/tmp目录130 3.7
结束语130 第4章 “笨”出来的文化和哲学131 4.1 unix的文化和哲学133 4.2
“四大笨”之一:万般皆文本134 4.2.1 二进制的烦恼135 4.2.2 文本的快乐135
4.2.3 文本之于配置文件136 4.2.4 文本之于程序组合137 4.2.5
文本之于通信协议138 4.2.6 硬件也文本138 4.3 “四大笨”之二:四处用脚本139
4.3.1 富饶的脚本语言139 4.3.2 为什么不是c140 4.3.3
脚本的不足和混合编程141 4.3.4 强力胶水141 4.3.5 极端的例子143 4.3.6
软件的适度规模143 4.4 “四大笨”之三:规律无处寻144 4.4.1 机制与策略145
4.4.2 接口与引擎145 4.4.3 不用重新造轮子146 4.4.4 内在的支持146 4.4.5
沉默是金,吝啬是银147 4.5 “四大笨”之四:配置乱生根148 4.5.1
什么是不可配的148 4.5.2 配置三元素149 4.5.3 配置文件150 4.5.4
环境变量151 4.5.5 命令行选项152 4.6 什么样的文化154 4.6.1 “傻x”的精明154
4.6.2 “简单”不简单155 4.7 这一切的基础大师的阐释156 第5章
shell脚本编程159 5.1 第一个shell脚本程序159 5.2 编程的基本要素160 5.2.1
变量162 5.2.2 运算164 5.2.3 流程控制165 5.2.4 自定义函数169 5.3
输入和输出172 5.3.1 基本的输出172 5.3.2 命令行参数172 5.3.3
使用read读取文本行173 5.3.4 文件描述符174 5.3.5 格式化输出175 5.4
调试跟踪175 5.4.1 空变量问题175 5.4.2 缺引号问题176 5.4.3 隔离问题176
5.4.4 echo普通中见“伟大”177 5.4.5 “-x”跟踪问题本领高177 5.4.6
assert函数177 5.4.7 caller命令178 5.4.8 trap命令178 5.5 高级特性180
5.5.1 波浪号“~”180 5.5.2 通配符180 5.5.3 元字符181 5.5.4 转义符182 5.5.5
命令替换183 5.5.6 运算优先级183 5.5.7 文件包含184 5.5.8 eval语句185
5.5.9 内建命令186 5.6 shell脚本编程实战187 5.6.1 守护进程的启动脚本187
5.6.2 读取数据文件和平滑启动nginx188 第6章 微型语言194 6.1
什么是微型语言194 6.2 软件管理的rpm196 6.2.1 构建你的第一个rpm包197
6.2.2 工作原理——分析spec文件199 6.2.3 依赖关系203 6.2.4 个软件多个包204
6.2.5 小结206 6.3 制作联机帮助文档的groff206 6.3.1 groff简介207 6.3.2
groff的工作方式208 6.3.3 如何制作一份联机帮助文档213 6.3.4
导出联机帮助文档219 6.3.5 小结220 6.4 把文本当数据库的awk221 6.4.1
使用方法221 6.4.2 基本概念222 6.4.3 注释与空白223 6.4.4 字符串223 6.4.5
数值225 6.4.6 变量228 6.4.7 模式与行为229 6.4.8 行为语句231 6.4.9
小结237 6.5 神奇的计算器dc和bc238 6.5.1 历史渊源——最古老的unix语言dc238
6.5.2 dc简介239 6.5.3 更为常用的bc244 6.5.4 小结250 6.6 不为人知的m4250
6.6.1 m4的历史251 6.6.2 m4的特性252 6.6.3 从hello world开始253 6.6.4
工作方式255 6.6.5 小结257 6.7 结束语258 第7章 编辑器的纷争259 7.1
独步青云的vi260 7.1.1 我为vi狂260 7.1.2 vi的使用261 7.1.3
vi的高级功能264 7.1.4 跟我一起打造一个ide266 7.2 横刀立马的emacs274
7.2.1 emacs的来历274 7.2.2 emacs的基本使用275 7.2.3 使用emacs必知必会278
7.2.4 lisp语言279 7.2.5 处理中文问题283 7.2.6 跟我一起打造一个ide283 7.3
结束语285 第8章 我是makefile286 8.1 gnu make及其基本用法288 8.2
基本概念289 8.2.1 第一个makefile例子290 8.2.2 目标、条件和命令291 8.2.3
依赖292 8.2.4 工作方式292 8.2.5 基本语法293 8.3 认识规则294 8.3.1
标准规则294 8.3.2 隐式规则294 8.3.3 变量295 8.3.4 自动变量297 8.3.5
模式规则299 8.3.6 假目标300 8.3.7 路径搜索302 8.4 高级特性303 8.4.1
文件包含303 8.4.2 命令305 8.4.3 深入变量307 8.4.4 宏与函数310 8.4.5
条件指令311 8.5 makefile实战312 8.5.1 自动产生依赖312 8.5.2
递归式的makefile315 8.5.3 自动产生makefile317 8.6 结束语323 第二部分
进阶篇 第9章 特种文件系统326 9.1 日志和reiserfs326 9.1.1 理解日志327
9.1.2 reiserfs——卓越的小文件性能与渺茫的未来328 9.1.3 应用实战331 9.1.4
小结331 9.2 进程文件系统procfs331 9.2.1 神秘的9号计划332 9.2.2
/proc目录333 9.2.3 procfs实战335 9.2.4 小结339 9.3
tmpfs——满足你对“时空”的双重渴望339 9.3.1 背景340 9.3.2 tmpfs文件系统341
9.3.3 tmpfs实战341 9.4 devfs和sysfs345 9.4.1 devfs的由来345 9.4.2
进入devfs346 9.4.3 sysfs的由来347 9.4.4 小结348 9.5 其他特种文件系统348
9.5.1 relayfs348 9.5.2 debugfs349 9.6 结束语349 第10章
生死与共的“兄弟”351 10.1 死心眼儿的bios352 10.2 小肚鸡肠的mbr353 10.2.1
mbr的结构353 10.2.2 磁盘分区表353 10.2.3 mbr的功能355 10.3
和事佬grub(牛b的统一引导加载器)355 10.3.1 bootloader355 10.3.2
grub的功能356 10.3.3 grub的工作流程357 10.4 唇齿相依的内核启动参数358
10.4.1 什么是内核启动参数358 10.4.2 内核启动参数的格式359 10.4.3
常用的内核启动参数359 10.5 自力更生的linux内核360 10.5.1 内核引导协议360
10.5.2 内核为什么要压缩360 10.5.3 startup_32361 10.5.4 start_kernel362
10.5.5 kernel_init362 10.6 及时雨initramfs363 10.6.1 寻找init的问题363
10.6.2 较早的initrd363 10.6.3 为什么选择initramfs364 10.7
“生”、“死”永相伴的init进程364 10.7.1 名不副实364 10.7.2 运行级别365
10.7.3 进入运行级别之前368 10.7.4 进入运行级别369 10.7.5 转换运行级别371
10.8 幕后英雄们371 10.8.1 终端372 10.8.2 getty系列命令372 10.8.3 display
manager373 10.8.4 伪终端374 10.8.5 配置文件374 10.9 结束语375 第11章
独霸网络的“蜘蛛神功”376 11.1 功夫理论:网络知识376 11.2
“蜘蛛神功”第一层:网络工具378 11.2.1 马步:ifconfig378 11.2.2
掌法:route380 11.2.3 腿功:netstat381 11.2.4 眼力:dns二把刀383 11.2.5
身法:tcpdump385 11.3 “蜘蛛神功”第二层:套接字387 11.4
内功心法:tcp/ip协议栈初探388 11.4.1 枯树盘根:系统调用388 11.4.2
凝神静态:sockfs文件系统390 11.4.3 气沉丹田:sk_buff392 11.5
临战杂谈397 11.5.1 对udp的错误的认识398 11.5.2 事半功倍,调节内核参数399
第12章 一个网络一个世界402 12.1 you’ve got a mail402 12.1.1
email服务模式402 12.1.2 架设postfix服务器405 12.1.3 email故事的结局409
12.2 联接世界的web应用409 12.2.1 web服务器410 12.2.2 数据库412 12.2.3
解释型语言413 12.2.4 架设web服务器414 12.3
铜墙铁壁真功夫——linux内核集成的ip信息包过滤系统419 12.3.1 iptables420
12.3.2 netfilter423 12.3.3 实践出真知426 12.3.4 小盒子的秘密427 12.4
分享文件的乐趣434 12.4.1 nfs438 12.4.2 samba442 12.5
在虚拟与现实之间穿梭——实现安全的连接446 12.5.1 vpn实现方式447 12.5.2
ipsec vpn448 12.5.3 ssl vpn452 第13章 打通任督二脉455 13.1
了解网络驱动455 13.1.1 网络设备闲谈455 13.1.2 ioctl这把刷子456 13.1.3
设备驱动的秘密459 13.2 无线风光在险峰461 13.2.1 wlan461 13.2.2
bluetooth466 13.2.3 nfc——近距无线通信469 13.2.4 谜底474 13.3
奇迹是执着创造出来的474 13.3.1 从2.4到2.6474 13.3.2 从2.6到3.0477 第14章
身在江湖479 14.1 c2级安全认证479 14.2 linux的安全问题480 14.2.1
黑客入侵480 14.2.2 “病毒泛滥”482 14.2.3 拒绝服务攻击483 14.2.4 小结484
14.3 pam用户认证机制485 14.3.1 什么是pam485 14.3.2 pam的体系结构485
14.3.3 配置pam487 14.3.4 密码映射494 14.4 应用pam api495 14.4.1
开发概述495 14.4.2 pam事务496 14.4.3 事务属性498 14.4.4 用户认证499
14.4.5 认证凭证500 14.4.6 pam会话501 14.4.7 用户认证流程502 14.4.8
模块开发507 14.4.9 密码的保存508 14.5 安全增强系统509 14.5.1
主动访问控制dac509 14.5.2 强制访问控制mac510 14.5.3
selinux——linux的mac实现511 14.6 结束语515 第15章 七种武器516 15.1
长生剑:fork516 15.1.1 从线程说起516 15.1.2 古老而充满活力的进程520
15.1.3 多进程程序开发523 15.1.4 进程间通信的实现531 15.2 离别钩:vfs537
15.2.1 一切都是文件538 15.2.2 一棵有生命的“树”538 15.2.3 vfs简介539
15.2.4 基本数据结构540 15.2.5 sockfs541 15.3 孔雀翎:mmap543 15.3.1
理解mmap543 15.3.2 虚拟内存技术544 15.3.3 应用mmap548 15.4
碧玉刀:epoll553 15.4.1 c10k问题553 15.4.2 epoll的优点554 15.4.3
epoll的工作模式555 15.4.4 正确使用epoll556 15.4.5
用epoll解决c100k问题561 15.5 多情环:udev564 15.5.1 设计理念564 15.5.2
基本构成565 15.5.3 配置文件566 15.5.4 规则566 15.6 霸王枪:lvs567 15.6.1
负载均衡567 15.6.2 一个中国人的勇气569 15.6.3 lvs的特点570 15.6.4
lvs的工作模式571 15.6.5 lvs的负载均衡调度算法576 15.7 拳头:module578
15.7.1 内核中的web服务578 15.7.2 编写你的第一个module579 15.7.3
module与普通程序的不同582 15.7.4 module与用户通信584 15.7.5
内核加载module的原理590 15.8 结束语592 第16章
谁都可以从头再来——从头开始编译一套linux系统593 16.1
初识工具链——准备环境的必备工具594 16.1.1 编译器594 16.1.2 连接器594
16.1.3 程序库595 16.1.4 工具链——破解奇特的四角恋595 16.2 准备环境596
16.2.1 宿主系统环境597 16.2.2 生成工具链的binutils598 16.2.3
生成工具链的gcc599 16.2.4 生成工具链的glibc600 16.2.5
解决工具链的一些问题603 16.2.6 第二次生成工具链的binutils604 16.2.7
第二次生成工具链的gcc605 16.2.8 丰富工具链的功能608 16.2.9 整理工具链610
16.2.10 小结610 16.3 生成目标系统的运行环境611 16.3.1 准备工作611 16.3.2
安装glibc614 16.3.3 调整工具链617 16.3.4 安装binutils617 16.3.5
安装gcc618 16.3.6 安装其他基础设施620 16.3.7 系统启动脚本622 16.3.8
结束语623 16.4 定制linux内核623 16.4.1 内核的make参数624 16.4.2
定制界面625 16.4.3 编译与安装626 16.5 独立运行627 16.5.1
/etc/fstab文件627 16.5.2 使用grub配置启动过程627 16.6 结束语628 第三部分
扩展篇 第17章 窈窕淑女君子好逑630 17.1 女人心事难捉摸——linux图形环境630
17.1.1 x window630 17.1.2 桌面系统638 17.1.3 xorg639 17.2
云想衣裳花想容——qt与gtk644 17.2.1 发展历史644 17.2.2 gtk与qt的比较646
17.2.3 大家闺秀qt648 17.2.4 小鸟依人gtk657 第18章 这里也是鼓乐笙箫667
18.1 与多媒体的第一次握手667 18.1.1 听声668 18.1.2 看影669 18.1.3
多媒体工作室674 18.2 鼓——ffmpeg676 18.2.1 羞辱柱与软件许可676 18.2.2
多媒体的来龙去脉678 18.2.3 家庭成员684 18.3 乐——mplayer与vlc685 18.3.1
绿色的mplayer685 18.3.2 浪漫的vlc687 18.4 笙——framebuffer690 18.4.1
原理691 18.4.2 设置framebuffer691 18.4.3 文字倒置滚动692 18.5
箫——v4l2与alsa697 18.5.1 v4l2698 18.5.2 alsa703 18.6 结束语707 第19章
团结就是力量708 19.1 标准的前世今生708 19.1.1 一场拆分引发的标准708
19.1.2 站在posix肩膀上的lsb709 19.1.3 工作组711 19.1.4 标准化流程712
19.2 认证713 19.3 工具714 19.3.1 lsb sdk715 19.3.2 app checker716 19.3.3
distribution checker718 19.3.4 lsb navigator720 19.3.5
lsb_release的规范定义和实现720 19.4 lsb的前世今生721 19.4.1
吃一堑,长一智722 19.4.2 “哥只是个传说”723 19.4.3 意气风发的lsb5.0724
19.5 结束语724 附录 我的linux,我做主725

GNU 工具

gnu计划,又称革奴计划,是由richard
stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。richard
stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《gnu宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。

  GNU组织(GNU是GNU’s Not
Unix的缩写)开发了一套完整的Unix工具,但没有可以运行它们的内核系统。这些工具是在名为开源软件(open
source
software,OSS)的软件理念下开发的。由于gnu软件的质量比之前unix的软件还要好,无需支付任何授权费用。将Linus的Linux内核和GNU操作系统工具整合起来,就产生了一款完整的、功能丰富的免费操作系统。

核心GNU工具

  gun为Linux系统提供了很多命令行工具,这些核心工具被称为coreutils(coreutilities)软件包。
 GNU coreutils软件包由三部分构成

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

shell

  GNU/Linux
shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。

  shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显示和终止系统中正运行的程序等操作。shell也允许你在命令行提示符中输入程序的名称,它会将程序名传递给内核以启动它。

  你也可以将多个shell命令放入文件中作为程序执行。这些文件被称作shell脚本。你在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行。这为创建那种需要把几个命令放在一起来工作的工具提供了便利。

  在Linux系统上,通常有好几种Linux
shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有Linux发行版默认的

  shell都是bash shell。bash shell由GNU项目开发,被当作标准Unix
shell——Bourne shell(以创建者的名字命名)的替代品。bash
shell的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne
again shell。

shell 描 述
ash 一种运行在内存受限环境中简单的轻量级shell,但与bash shell完全兼容
korn 一种与Bourne shell兼容的编程shell,但支持如关联数组和浮点运算等一些高级的编程特性
tcsh 一种将C语言中的一些元素引入到shell脚本中的shell
zsh 一种结合了bash、tcsh和korn的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级shell

Linux 桌面环境

  在Linux的早期(20世纪90年代初期),能用的只有一个简单的Linux操作系统文本界面。这个文本界面允许系统管理员运行程序,控制程序的执行,以及在系统中移动文件。

  随着Microsoft
Windows的普及,电脑用户已经不再满足于对着老式的文本界面工作了。这推动了OSS社区的更多开发活动,Linux图形化桌面环境应运而生。

  现今主流的桌面环境有KDE,gnome,Xfce,LXDE等,除此之外还有Ambient,EDE,IRIX
Interactive Desktop,Mezzo,Sugar,CDE等。

  • gnome

  即GNU网络对象模型环境 (The GNU Network Object Model
Environment),GNU计划的一部分,开放源码运动的一个重要组成部分。是一种让使用者容易操作和设定电脑环境的工具。

  目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境,他是GNU计划的正式桌面。

  • Xfce
      即XForms Common
    Environment,创建于2007年7月,类似于商业图形环境CDE,是一个运行在各类Unix下的轻量级桌面环境。原作者Olivier
    Fourdan最先设计XFce是基于XForms三维图形库。Xfce设计目的是用来提高系统的效率,在节省系统资源的同时,能够快速加载和执行应用程序。

  • Fluxbox
      是一个基于GNU/Linux的轻量级图形操作界面,它虽然没有GNOME和KDE那样精致
    ,但由于它的运行对系统资源和配置要求极低,所以它被安装到很多较旧的或是对性能要求较高的机器上,其菜单和有关
    配置被保存于用户根目录下的.fluxbox目录里,这样使得它的配置极为便利。

  • Enlightenment
      是一个功能强大的窗口管理器,它的目标是运用
    户轻而易举地配置所见即所得的桌面图形界面。现在Enlightenment的界面已经相当豪华,它拥有像AfterStep一样的可视化时钟以及其它浮华的界面效果,用户不仅可以任意选择边框和动感的声音效果,最有吸引力的是由于它开放的设计思想,每一个用户可以根据自己的爱好,任意地配置窗口的边框、菜单以及屏幕上其它各个部分,而不须要
    接触源代码,也不须要 编译任何程序。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图