译者序2012-08-1613:31武海峰译人民邮电出版社我要评论(0)字号:T|T《Linux命令行与shell脚本编程大全(第2版)》本书是一本关于Linux命令行与shell脚本编程的全面教程。全书分为四部分:第一部分介绍Linuxshell命令行;第二部分介绍shell脚本编程基础;第三部分深入探讨shell脚本编程的高级内容;第四部分介绍如何在现实环境中使用shell脚本。本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。本节为译者序。AD:译者序欢迎来到命令行和shell脚本编程的世界!看到这篇序言,说明你已经翻开这本超过600页的书,愿意花时间去了解命令行和shell脚本编程的细节。在Linux世界中,这种精神非常重要,我们将这种不满足于现状、愿意潜心了解其中细节而作出进一步改进的精神称为黑客精神。正是这种黑客精神激励着成百上千人一起协作、不断改进着Linux内核,使其支持更多的硬件、具备更多有趣的功能。越来越多的硬件厂商成立了Linux开发团队,向Linux内核贡献代码,使其能够运行在他们的硬件平台上或顺利地使用他们的硬件。也正是这种黑客精神和GNU的开放性,才使得Linux在服务器操作系统领域和移动设备操作系统领域获得了迅捷而长足的发展。今天,移动互联网应用的流行使得每周都有成百上千的应用部署在云平台上,而背后支撑这些云的正是Linux。这些应用大多分成两部分:作为移动应用的一部分会部署在用户的手持设备上,实现用户交互、数据的采集和传送;作为Web应用的另一部分部署在远端Linux服务器上,存储数据并进行一些定期的数据处理。这时,要进行Linux服务器上大量的数据处理和管理工作,以及Web应用的部署和监测,你就需要命令行和shell脚本的帮助。在Linux系统中,大部分的系统配置和管理都是通过shell脚本来完成,而Linux对shell脚本的良好支持又使其成为系统配置和管理自动化的首选。加之几乎所有Linux主机都支持通过SSH远程访问来进行系统配置,大多数时候你都是在命令行下完成这些配置和管理工作。当然,伴随着便利性的还有巨大的破坏性。稍不留神,你可能就会将整个根目录全部干掉,或者错误处理重要的配置文件。这时,了解命令行和shell脚本编程细节、遵循Linux使用规范就显得格外重要了。本书面向系统管理员、配置管理人员、系统开发人员,以及所有想有效使用Linux系统的黑客。除了Linux外,本书内容还适用于提供了命令行界面和shell脚本编程支持的其他类Unix系统(我们称之为*nix系统),其中包括BSD和MacOSX。读过本书后,如果想继续了解shell脚本编程,你可以接着看WickedCoolShellScripts。这本书提供了大量的例子和解释供你学习。如果有意扩展Linux系统管理方面的知识,可以参考IBM的LinuxPerformanceandTuningGuidelines和LinuxAdministrationHandbook(SecondEdition)。如果对shell如何工作感到好奇,Usethesource,Luke!最简单的shell--yash只有一百来行。这里要特别感谢图灵公司的傅志红和罗词亮两位老师。他们的细致工作使得这本译作中的诸多术语都得以一一推敲,他们的耐心等待使我得以在旅行中完成本书的翻译工作。尽管我在翻译过程中小心翼翼,尽力排查原书中的错误、尽量避免中文表达上的问题,但囿于经验和疏忽,译作中难免有疏漏和问题。还请读者朋友给予反馈,我们会在图灵社区维护一份勘误表(),并尽量为您在阅读本书中遇到的问题提供力所能及的帮助。1.1什么是Linux2012-08-1613:33武海峰译人民邮电出版社我要评论(0)字号:T|T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linuxshell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。本节为大家介绍什么是Linux。AD:第1章初识Linuxshell本章内容什么是LinuxLinux内核的组成部分探索Linux桌面了解Linux发行版在深入研究如何使用Linux命令行和shell之前,最好先了解一下什么是Linux、它的历史及运作方式。本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。1.1什么是Linux如果以前从未接触过Linux,你可能会对为什么会存在这么多不同的Linux发行版有些困惑。在看Linux软件包时,你肯定听过发行版、LiveCD和GNU之类的术语,也肯定被搞晕过。第一次接触Linux的人理解这些会有些困难。本章将在你了解命令和脚本之前,揭示Linux系统内部结构的一些信息。首先,Linux可划分为以下四部分:Linux内核;GNU工具组件;图形化桌面环境;应用软件。在Linux系统里,这四部分中的每一部分都扮演着一个特别的角色。如果将它们分开来,每一部分都没太大的作用。图1-1是Linux系统的基本结构框图,说明了各部分是如何协作起来构成整个Linux系统的。本节将会详细介绍这四部分,然后将概述它们是如何一起协作构成一个完整的Linux系统的。图1-1Linux系统【责任编辑:bookTEL:(010)68476606】1.1.1深入探究Linux内核(1)2012-08-1613:33武海峰译人民邮电出版社我要评论(0)字号:T|T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linuxshell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。本节为大家介绍深入探究Linux内核。AD:1.1.1深入探究Linux内核(1)Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件:必要时分配硬件,有需要时执行软件。如果你一直都在关注Linux世界,那么毫无疑问,你肯定听说过LinusTorvalds。Linus还在赫尔辛基大学上学时就开发了第一版Linux内核。起初他只是希望Linux成为Unix操作系统的一份副本,因为当时Unix操作系统在很多大学都很流行。当Linus完成了开发工作后,他将Linux内核发布到了互联网社区并征求改进意见。这个简单的动作引发了计算机操作系统领域内的一场革命。很快,Linus就收到了来自世界各地的学生和专业程序员的各种建议。如果Linux内核允许任何人修改内核程序代码,那么随之而来的将是完全的混乱。简单起见,Linus担当起了所有改进建议的把关员。能否将建议代码放进内核完全取决于Linus的决定。时至今日,这种概念依然在Linux内核代码开发过程中继续使用,所不同的是,现在是由一组开发人员来做这件事,而不再是Linus一个人了。内核基本负责以下四项主要功能:系统内存管理;软件程序管理;硬件设备管理;文件系统管理。后面几节将会进一步探究其中的每一项功能。1.系统内存管理操作系统内核的基本功能之一是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即并不实际存在的内存)。内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swapspace)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存存储单元中的内容。这使得系统以为它拥有比物理内存更多的可用内存(如图1-2所示)。内存存储单元会被按组分成很多块,这些块称作页面(page)。内核会将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,来指明哪能些页面位于物理内存内,哪些页面被换到磁盘上。内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称之为换出,swappingout)--即使还有可用内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面来给它让出空间,然后从交换空间换入(swappingin)请求的内存页面。显然,这个过程要花费时间,并使得运行中的进程变慢。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。图1-2Linux系统内存映射你可以查看专门的/proc/meminfo文件来观察Linux系统上虚拟内存的当前状态。下面是/proc/meminfo文件的一个样例。1.rich@rich-desktop:~$cat/proc/meminfo2.MemTotal:1026084kB3.MemFree:666356kB4.Buffers:49900kB5.Cached:152272kB6.SwapCached:0kB7.Active:171468kB8.Inactive:154196kB9.Active(anon):131056kB10.Inactive(anon):32kB11.Active(file):40412kB12.Inactive(file):154164kB13.Unevictable:12kB14.Mlocked:12kB15.HighTotal:139208kB16.HighFree:252kB17.LowTotal:886876kB18.LowFree:666104kB19.SwapTotal:2781176kB20.SwapFree:2781176kB21.Dirty:588kB22.Writeback:0kB23.AnonPages:123500kB24.Mapped:52232kB25.Shmem:7600kB26.Slab:17676kB27.SReclaimable:9788kB28.SUnreclaim:7888kB29.KernelStack:2656kB30.PageTables:5072kB31.NFS_Unstable:0kB32.Bounce:0kB33.WritebackTmp:0kB34.CommitLimit:3294216kB35.Committed_AS:1234480kB36.VmallocTotal:122880kB37.VmallocUsed:7520kB38.VmallocChunk:110672kB39.HardwareCorrupted:0kB40.HugePages_Total:041.HugePages_Free:042.HugePages_Rsvd:043.HugePages_Surp:044.Hugepagesize:4096kB45.DirectMap4k:12280kB46.DirectMap4M:897024kB47.rich@rich-desktop:~$1.1.1深入探究Linux内核(2)2012-08-1613:33武海峰译人民邮电出版社我要评论(0)字号:T|T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linuxshell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。本节为大家介绍深入探究Linux内核。AD:1.1.1深入探究Linux内核(2)MemTotal:行表明这个Linux服务器有1GB的内存,该文件还表明大约有660MB的空闲空间(MemFree)。输出表明这个系统上大约有2.5GB的交换空间(SwapTotal)。默认情况下,运行在Linux系统上的每个进程都有各自的内存页面。进程不能访问其他进程正在使用的内存页面。内核维护着它自己的内存区域。出于安全考虑,用户进程不能访问内核进程使用的内存。为了方便共享数据,你可以创建一些共享内存页面。多个进程可在同一块共用内存区域进行读取和写入操作。内核负责维护和管