基本信息
编辑推荐
课本上学不到的十年不过时的技术
清华计算机系副系主任陈文光、北航计算机学院院长吕卫锋作序推荐
内容简介
作译者
就职于著名的Linux发行商Red Hat,主要致力于推动Linux/OSS在企业系统中的应用。从使用Linux/OSS的企业应用开发,到10000余台Linux服务器的运维、私有云的设计和构建,通过各种各样的项目掌握了丰富的Linux编程经验,并积极地将自己的经验传授给年轻的程序员们。著有《Linux系统网络管理技术》等。
李睿
北京航空航天大学软件开发环境国家重点实验室在读博士研究生。参与过863计划、国家科技支撑计划等多项重大课题,在国内国际会议及期刊上发表论文数篇,申报多项专利及软件著作权。2013年受资助前往英国伯明翰大学计算机学院访学。曾任第12届中国计算机学会青年科技论坛(CCF YOCSEF)研究生分论坛主席。
马世龙
北京航空航天大学计算机学院教授、博士生导师。获2012年度国防科学技术进步奖二等奖、2012年度北京市科学技术奖三等奖。在国内外学术刊物和国际学术会议上发表研究论文一百余篇。现任中国人工智能学会常务理事,中国人工智能学会基础理论专业委员会主任。国家新闻出版总署重大科技工程项目专家咨询委员会委员。
目录
第1章 你必须知道的!Linux内部结构1
1.1 Linux的三大基础:磁盘、进程、内存2
1.2 磁盘和文件3
1.2.1 磁盘的3D参数3
1.2.2 新旧分区表7
UEFI和GPT8
4KB扇区的磁盘11
1.2.3 文件系统和I/O子系统12
文件系统的块大小12
I/O子系统的概貌15
理解I/O调度器17
1.3 控制进程就等于控制Linux22
1.3.1 fork和exec分别是进程的分身和变身22
1.3.2 作业控制中的各项任务处理28
1.3.3 快速的数据处理管道33
1.4 至关重要的内存管理41
1.4.1 物理内存的分配42
用户内存的分类43
内核内存的分类47
译者序
本书内容丰富,结构清晰,深入浅出,具有较强的实践性,适合具有一定基础的Linux开发人员和爱好者学习。译者希望该书中文版的面世,能够进一步推动国内Linux的学习和实践。
本书有如下特点:
(1)通过搭建虚拟化基础设施,给读者提供了方便实用的Linux系统的学习和实践环境;
(2)设计了10个可操作的脚本实验,以尽可能覆盖Linux操作系统的关键应用技术,包括进程监控、远程登录、文本处理等;
(3)提出了Linux内核源代码的走读方法,在阅读源代码前,先了解内核的整体结构,然后进一步了解各组成部分,最后深入到内核源代码,并通过创建简单原始内核的示例,加深对内核源代码的理解。
致谢:
感谢毕业后一直任职于日本企业的北京航空航天大学计算机学院99级师兄王新宇先生,以及在日本开会期间相识的就读于关西大学研究生院综合信息学研究科的杜逆索先生,二位一直不厌其烦地为本书的翻译工作提供帮助!
感谢本书的文字编辑,一字一句地校对书中的每一个细节,尽可能地降低了译文的不准确性,也纠正了译文中很多疏忽的地方!
感谢人民邮电出版社图灵公司很好地推动了该书的引进、翻译和出版工作!
译者虽力求忠实准确地传达原著者的思想,但由于时间关系及水平所限,译文中难免存在疏漏或不当之处,恳请广大读者批评指正。
李睿马世龙
于北京航空航天大学
序言
本书主要面向企业中的Linux系统工程师或Linux初学者。虽然迄今为止笔者已出版了两本以Linux系统架构为主题的书籍,但是本书的风格略有不同。之前的两本书,虽有幸得到了“内容充实易懂”之类的评价,但是为了兼顾系统性和连贯性,不得已略去了现场的实践内容以及紧急状况的应对措施这两部分内容。而本书则避免了之前教科书式的写法,尽量用笔者自己的口吻,向初中级Linux工程师传授各种Linux系统架构和运用的技巧。
过去的工程师通常向同行前辈们学习系统架构和运用技能。然而如今受到社会形势的变化,乃至企业培训方针变化的影响,很多时候往往来不及向前辈们请教,而是一上来就要独自负责Linux服务器的构建和运维工作。如此一来,那些有前途的年轻工程师们,不仅没有机会体验这份工作带来的喜悦,反而为了适应工作而每天都疲惫不堪,着实令人可惜。笔者希望看到更多的工程师,能在每天的工作中体验到感动和喜悦的同时,支撑起Linux这一当代企业系统的支柱。在书里公开这样的想法固然有些难为情,说不定还会被熟人嘲笑,但笔者还是坦率地写了出来。我们所说的“十年不过时的技术”也许稍嫌夸张A,但是笔者相信,书中的内容一定会是长期支持诸位读者们的工程师生涯的“基础中的基础”。
在阅读本书的过程中,请各位初出茅庐的工程师们时不时地想象一下前辈们指点江山的得意身影。要知道工程师前辈们也是人,有时也可能会说些没有根据的话。然而Linux的精妙之处就在于,一旦有不确定的地方,立即就能亲自进行确认。与昂贵的商用Unix服务器不同,只要你愿意,随时都可以用家用PC建立一个测试环境。当今的IT系统新技术正以前所未有的速度发展着,这种能够亲自动手进行确认的行动力,对工程师来说是比知识和经验更加宝贵的财富。虽然本书记载的只是笔者自身的知识和经验,但若每一位读者都能发挥自身的行动力,将其价值成倍扩大的话,对笔者而言将是无上的喜悦。
中井悦司
谢辞
谨在此向对本书的执笔和出版提供过帮助的各位表示感谢。
本书的构思来自于技术评论社的池本公平先生的建议。笔者之所以深感把技术发展趋势的根本,即“工程师的基础知识”传达给大众的重要性,全仰赖池本先生的大力推动,在此表示感谢。另外,向试读本书的中山健次郎先生也表示感谢。
本书的主要内容取材于笔者自身和Linux、开源相关的工作经验。在这期间,笔者有幸遇到了诸多对Linux、开源充满喜爱和探究精神的伙伴们,在此也向他们表示感谢。
最后要感谢我的妻子真理,面对只顾埋头执笔而忽略家庭的丈夫依然笑颜以对,还有将满3岁的活泼的爱女步実,整日嘟囔着“爸爸真喜欢工作啊”,再一次对你们母女表示最真挚的感谢。
感谢大家一直以来的支持,今后也请多多指教!
本书的阅读对象
本书涉及与业务系统相关的Linux服务器的构建与运用,适合想要进一步深入了解Linux相关技术,或者想要提高Linux操作技能的工程师读者。
从Linux的内部结构,到脚本编写技术或是内核源码的阅读方法,本书所传授的技术是在一般教科书中看不到的。希望各位工程师读者能以本书为起点,找到进一步提升技术的方法。
本书的阅读方法
本书的各章节内容都是相互独立的,既可以从第1章开始按部就班地阅读,也可以从吸引你的那一章开始阅读。
至于每一章的预备知识及难易度则略有不同。若有感觉难以理解的部分,请结合参考文献里介绍的同类书籍进行配套阅读。从不同的角度来审视同一个问题,是在学习技术的过程中打破瓶颈的最佳方式。
第2章、第3章、第5章的主要配置文件和脚本,可以从技术评论社的网站上下载。下载链接如下:
书摘
10轮决胜!在自编的脚本中
灵活使用命令
L i n u x
122??第 3 章10 轮决胜!在自编的脚本中灵活使用命令
3.1简单有效的Shell脚本
Linux 服务器管理员经常使用的脚本语言有 Shell 脚本和 Perl 等。由于它们能将日常的
重复工作程序化,因此最适合用于提高服务器管理的效率。笔者常用的脚本语言有 Shell 脚
本(bash)、Perl 以及 Python 这三种。一般来说,Shell 脚本主要用于简单归纳经常执行的
命令,Perl 主要用于创建普遍被广泛使用的工具,创建 GUI 工具的时候则专门使用 Python。
笔者常用的笔记本电脑上安装了 Linux(Fedora),经常运行的是如图 3.1 所示的两个 Shell 脚本。 Kakinoha.sh 是笔者最喜欢的通过 SSH 登录到“操作用服务器”的方式 A。用 于公共密钥验证的私有秘钥的文件名称输入起来很麻烦,于是便写成了脚本。 backup. sh 用于通过 rsync 命令将笔记本电脑上的文件备份到远程服务器上。结束一天的工作后运 行它,便可以安枕无忧了 B。
kakinoha.sh
#!/bin/sh
ssh -X -i ~/.ssh/enakai.key enakai@kakinoha.XXX.XXX.XXX
backup.sh
#!/bin/sh
FROM=/home/enakai/Documents/Private/
COPYTO=enakai@kakinoha.XXX.XXX.XXX:~/data/Private/ rsync "$@" -av --delete $FROM $COPYTO
图 3.1Shell 脚本的简单示例
虽然它们都是很简单的东西,但通过一遍又一遍地重复运行,能够有效提高日常工作 的效率。如果能理解 Shell 脚本的基本规则和典型模式,即便是稍微复杂一些的处理也能轻 松编写。希望大家务必掌握它们,以此来提高服务器管理的效率。