描述
开 本: 16开纸 张: 铜版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111445036丛书名: Linux/Unix技术丛书
推荐序
推荐序
前 言
第1章 Linux简介
1.1 Linux的发展历史
1.2 Linux的特点
1.3 系统安装
1.3.1 安装前的规划
1.3.2 安装RedHat
1.3.3 安装CentOS
1.4 系统登录
1.4.1 第一次登录系统的设置
1.4.2 使用图形模式登录
1.4.3 使用终端模式登录
1.4.4 开始学习使用Linux的命令
1.5 系统启动流程
1.5.1 系统引导概述
1.5.2 系统运行级别
1.5.3 服务启动脚本
1.5.4 Grub介绍
1.6 获得帮助
1.6.1 使用man page
1.6.2 使用info page
1.6.3 其他获得帮助的方式
第2章 Linux用户管理
2.1 Linux用户和用户组
2.1.1 UID和GID
2.1.2 /etc/passwd和/etc/shadow
2.2 Linux账号管理
2.2.1 新增和删除用户
2.2.2 新增和删除用户组
2.2.3 检查用户信息
2.3 切换用户
2.3.1 切换成其他用户
2.3.2 用其他用户的身份执行命令:sudo
2.4 例行任务管理
2.4.1 单一时刻执行一次任务:at
2.4.2 周期性执行任务:cron
2.4.3 /etc/crontab的管理
第3章 Linux文件管理
3.1 文件和目录管理
3.1.1 绝对路径和相对路径
3.1.2 文件的相关操作
3.1.3 目录的相关操作
3.1.4 文件时间戳
3.2 文件和目录的权限
3.2.1 查看文件或目录的权限:ls -al
3.2.2 文件隐藏属性
3.2.3 改变文件权限:chmod
3.2.4 改变文件的拥有者:chown
3.2.5 改变文件的拥有组:chgrp
3.2.6 文件特殊属性:SUID/SGID/Sticky
3.2.7 默认权限和umask
3.2.8 查看文件类型:file
3.3 查找文件
3.3.1 一般查找:find
3.3.2 数据库查找:locate
3.3.3 查找执行文件:which/whereis
3.4 文件压缩和打包
3.4.1 gzip/gunzip
3.4.2 tar
3.4.3 bzip2
3.4.4 cpio
第4章 Linux文件系统
4.1 文件系统
4.1.1 什么是文件系统
4.1.2 ext2文件系统简介
4.1.3 ext3文件系统简介
4.2 磁盘分区、创建文件系统、挂载
4.2.1 创建文件系统:fdisk
4.2.2 磁盘挂载:mount
4.2.3 设置启动自动挂载:/etc/fstab
4.2.4 磁盘检验:fsck、badblocks
4.3 Linux逻辑卷
4.3.1 什么是逻辑卷
4.3.2 如何制作逻辑卷
4.4 硬链接和软链接
4.4.1 什么是硬链接
4.4.2 什么是软链接
第5章 字符处理
5.1 管道
5.2 使用grep搜索文本
5.3 使用sort排序
5.4 使用uniq删除重复内容
5.5 使用cut截取文本
5.6 使用tr做文本转换
5.7 使用paste做文本合并
5.8 使用split分割大文件
第6章 网络管理
6.1 网络接口配置
6.1.1 使用ifconfig检查和配置网卡
6.1.2 将IP配置信息写入配置文件
6.2 路由和网关设置
6.3 DNS客户端配置
6.3.1 /etc/hosts
6.3.2 /etc/resolv.conf
6.4 网络测试工具
6.4.1 ping
6.4.2 host
6.4.3 traceroute
6.4.4 常见网络故障排查
第7章 进程管理
7.1 什么是进程
7.2 进程和程序的区别
7.3 进程的观察:ps、top
7.4 进程的终止:kill、killall
7.5 查询进程打开的文件:lsof
7.6 进程优先级调整:nice、renice
第8章 Linux下的软件安装
8.1 源码包编译安装
8.1.1 编译、安装、打印HelloWorld程序
8.1.2 使用源码包编译安装Apache
8.2 RPM安装软件
8.2.1 什么是RPM
8.2.2 RPM包管理命令:rpm
8.2.3 包依赖关系
8.2.4 使用RPM包安装gcc
8.2.5 使用RPM包安装Apache
8.3 yum安装软件
8.3.1 yum命令的基本用法
8.3.2 使用yum安装Apache
8.3.3 RedHat使用yum的问题
8.3.4 自建本地yum源
8.3.5 自建网络yum源
8.4 三种安装方法的比较
8.5 重建RPM包
8.5.1 创建重建环境
8.5.2 快速重建RPM包
8.5.3 以spec文件重建RPM包
8.5.4 spec文件简介
第9章 vi和vim编辑器
9.1 vi和vim编辑器简介
9.2 vi编辑器
9.2.1 模式介绍
9.2.2 案例练习
9.3 vim编辑器
9.3.1 多行编辑
9.3.2 多文件编辑
9.3.3 使用vimtutor深入学习vim
9.4 gedit编辑器
9.4.1 gedit编辑器简介
9.4.2 启动gedit编辑器
第10章 正则表达式
10.1 正则表达式基础
10.1.1 什么是正则表达式
10.1.2 基础的正则表达式
10.1.3 扩展的正则表达式
10.1.4 通配符
10.2 正则表达式示例
10.3 文本处理工具sed
10.3.1 sed介绍
10.3.2 删除
10.3.3 查找替换
10.3.4 字符转换
10.3.5 插入文本
10.3.6 读入文本
10.3.7 打印
10.3.8 写文件
10.3.9 sed脚本
10.3.10 高级替换
10.3.11 sed总结
10.4 文本处理工具awk
10.4.1 打印指定域
10.4.2 指定打印分隔符
10.4.3 内部变量NF
10.4.4 打印固定域
10.4.5 截取字符串
10.4.6 确定字符串的长度
10.4.7 使用awk求列和
第11章 Shell编程概述
11.1 Shell简介
11.1.1 Shell是什么
11.1.2 Shell的历史
11.1.3 Shell的功能
11.1.4 Shell编程的优势
11.2 第一个Shell脚本
11.2.1 编辑第一个Shell脚本
11.2.2 运行脚本
11.2.3 Shell脚本的排错
11.3 Shell的内建命令
第12章 Bash Shell的安装
12.1 确定你的Shell版本
12.2 安装bash
12.3 使用新版本的Bash Shell
12.4 在Windows中安装bash
第13章 Shell编程基础
13.1 变量
13.1.1 局部变量
13.1.2 环境变量
13.1.3 变量命名
13.1.4 变量赋值和取值
13.1.5 取消变量
13.1.6 特殊变量
13.1.7 数组
13.1.8 只读变量
13.1.9 变量的作用域
13.2 转义和引用
13.2.1 转义
13.2.2 引用
13.2.3 命令替换
13.3 运算符
13.3.1 算术运算符
13.3.2 位运算符
13.3.3 自增自减
13.4 其他算术运算
13.4.1 使用$[]做运算
13.4.2 使用expr做运算
13.4.3 内建运算命令declare
13.4.4 算术扩展
13.4.5 使用bc做运算
13.5 特殊字符
13.5.1 通配符
13.5.2 引号
13.5.3 注释符
13.5.4 大括号
13.5.5 控制字符
13.5.6 杂项
第14章 测试和判断
14.1 测试
14.1.1 测试结构
14.1.2 文件测试
14.1.3 字符串测试
14.1.4 整数比较
14.1.5 逻辑测试符和逻辑运算符
14.2 判断
14.2.1 if判断结构
14.2.2 if/else判断结构
14.2.3 if/elif/else判断结构
14.2.4 case判断结构
第15章 循环
15.1 for循环
15.1.1 带列表的for循环
15.1.2 不带列表的for循环
15.1.3 类C的for循环
15.1.4 for的无限循环
15.2 while循环
15.2.1 while循环的语法
15.2.2 使用while按行读取
文件
15.2.3 while的无限循环
15.3 until循环
15.3.1 until循环的语法
15.3.2 until的无限循环
15.4 select循环
15.5 嵌套循环
15.6 循环控制
15.6.1 break语句
15.6.2 continue语句
第16章 函数
16.1 函数的基本知识
16.1.1 函数的定义和调用
16.1.2 函数的返回值
16.2 带参数的函数
16.2.1 位置参数
16.2.2 指定位置参数值
16.2.3 移动位置参数
16.3 函数库
16.3.1 自定义函数库
16.3.2 函数库/etc/init.d/functions简介
16.4 递归函数
第17章 重定向
17.1 重定向简介
17.1.1 重定向的基本概念
17.1.2 文件标识符和标准输入输出
17.2 I/O重定向
17.2.1 I/O重定向符号和用法
17.2.2 使用exec
17.2.3 Here Document
第18章 脚本范例
18.1 批量添加用户脚本
18.2 检测服务器存活
18.3 使用expect实现自动化输入
18.4 自动登录ftp备份
18.5 文件安全检测脚本
18.6 ssh自动登录备份
18.7 使用rsync备份
18.8 使用netcat备份
18.9 使用iptables建立防火墙
18.10 自定义开机启动项的init脚本
18.11 使用脚本操作MySQL数据库
18.12 基于LVM快照的MySQL数据库备份
18.13 页面自动化安装LAMP环境
为什么要写这本书
早在我还在大学校园时就对Linux产生了极大的兴趣,期间我热衷于下载、安装、体验各种不同的Linux发行版,并尝试使用Linux作为我的桌面系统。但实际情况是,由于大学中使用群体极小,学校又没有开设直接的Linux系统课程,虽然我花了不少的课余时间去研究它,但始终感觉不得其法,难以入门。至今我依然记得当时使用鼠标双击好不容易才复制桌面上的rpm包,并抱怨为什么没有出现类似于Windows的“安装向导”。所以实际上有很长一段时间,面对Linux系统我能做的少之又少。
2006年大学毕业后,我有幸进入了一直梦寐以求的IT行业,并从此正式走上了技术之路。工作中能实际接触到Linux系统运维是我在该领域发展的很重要的外部因素,工作的驱使和个人的兴趣成为我每天坚持学习Linux的源动力。但当时很尴尬的一个现实是:一方面互联网行业的高速发展促进了Linux如火如荼的发展,另一方面又很难找到真正适合“新手”的入门级教材,得到一本简单明了的入门书籍是我当时迫切的愿望。于是在走了不少弯路并感觉自己已经“迷路”之后,我报名参加了Linux系统工程师社会培训班,利用工作之余系统并完整地学习了Linux。事实证明,当时的选择是正确的,这直接影响了我至今的职业发展乃至今后的职业规划。
经历了多年的工作后,我也非常希望能有机会与大家分享自己在IT领域的体会,所以也经常在一些技术网站发表技术文章,或是与志同道合的朋友一起举办免费的网络培训班。但是总体来说,所涉及的内容大多零碎、不成体系。筹划本书的初期,我想把重点放在Linux系统管理、高性能计算、高可用集群甚至云计算这些“够时髦”的主题上,但是反复思考后觉得,“时髦”的技术永远在变,而且限制了读者范围。但是对我、对很多梦想学习Linux的读者来说这更是一个机会:用最简单、最朴素、最基础的语言讲解和描述Linux系统以及如何使用它,给更多初学者以“可以学会”的希望和“努力前行”的力量。
出于这样的考虑,我在组织本书的内容时尽量安排书的各个章节以及每章节中的每个小节,甚至是每小节中的知识点的出现顺序符合新手的认知规律,做到从易到难,从基础到提高,以循序渐进的方式将各类知识点以人物出场、层次推进的方式呈现在读者面前,尽量避免将生僻的术语突然摆在读者面前,造成读者思维上的困扰,并且尽量使用简单明了的文字和浅显易懂的比喻帮助读者理解、消化。尽管如此,我还是希望读者能在此基础上展开阅读,并根据实际需要做必要的深入理解。
总之,这是一本讲解Linux系统和Shell编程的入门级书籍,内容主要涉及Linux的基础命令、编辑器的使用和Shell脚本的开发。
读者对象
本书适合以下读者阅读:
Linux爱好者
Linux初学者
希望学习Shell编程的读者
希望了解系统的网络工程师
网站前后台开发人员
如何阅读本书
本书从知识结构上分为三大部分,第一部分(第1~8章)为基础内容,详细地介绍了Linux的历史发展、安装使用、用户管理、文件管理、文件系统、字符处理、网络管理、进程管理和软件安装。第二部分(第9~10章)为编辑器部分,内容为Linux下常用编辑器vi和vim的用法和基于流处理的sed和awk工具,这是管理Linux系统的基本技能。第三部分(第11~18章)为Shell编程,内容包括Shell的安装、使用、语法,其中最后一章是本部分的重点,该章所有脚本在实际应用中有很高的使用率。
如果你是Linux的初学者,我建议从第1章开始阅读。第二部分的内容涉及vi和vim编辑器的操作细节,建议读者通读。如果读者已经有一定的基础,希望学习Shell脚本开发,可以直接跳至第三部分学习。
勘误和支持
由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。
致谢
首先,感谢伟大的Linux之父Linus Torvalds,他最初开发的这套Linux系统已经改变了整个世界的面貌,也影响了我个人的职业乃至人生发展。
感谢那些无数个为了解决问题而彻夜无眠的夜晚,感谢那些在寒冬凌晨的三四点接到报警电话后集体上阵的兄弟姐妹们,感谢那些年一起扛起24×7运维任务的战友们,这一切无疑是我人生中最宝贵的财富。
感谢机械工业出版社华章公司的编辑杨绣国(Lisa),感谢她在这一年多的时间里始终支持我的写作,她的鼓励和帮助引导我顺利完成全部书稿。
谨以此书,献给我最亲爱的家人,以及众多热爱Linux的朋友们。
王军
2013年10月于上海
高通中国高级测试经理王锋
本书是作者在系统管理领域多年实践的精彩总结,没有花哨的语言,不是大而全的砖头书。从头到尾,循序渐进,让你对Linux的基本操作及其原理有全面、系统的认识。作者使用很大一部分篇幅阐述Linux下的脚本编程,相信这也是他对系统管理领域的深刻理解,只有掌握了扎实的编程技能,才能让系统管理井井有条,避免一些人为的低级错误。本书一定能给Linux初学者及系统管理员带来帮助。
*技术专家陈波
如果你正想系统学习Linux,或者需要通过学习Shell编程从平日复杂的工作中解放出来,那你一定不能错过本书。读完此书我必须说,这是一本不可多得的精品。本书结合作者多年一线Linux运维管理经验,对Linux系统和Shell编程做了详细周到的讲解,内容翔实,描述细致。与很多同类书籍不同,本书并非知识点的简单堆积,也非枯燥的机械化陈述,而是做到了各章有机结合,剥丝抽茧、娓娓道来,作者功力可见一斑。该书既是一本极佳的Linux 教材,又可作为从事Linux运维工作人员的运维指导手册,值得推荐!
邮乐网技术总监徐立宁
第1章
Linux简介
1.1 Linux的发展历史
首先我们一起来了解一下应该怎么读Linux这个单词,根据Torvalds(Linux的发明者)在其多次公开场合中的说明,标准的读音应该是“哩呐科斯”,利用搜索引擎加关键字Linux pronunciation进行搜索,就可以看到具体的视频。
说到Linux就不得不提到UNIX,因为Linux是一种类UNIX的系统。早在1965年,贝尔实验室加入了一项由美国通用电气公司和麻省理工学院发起的合作计划,该计划要开发一个多用户、多进程、多层次的Multics操作系统。由于该计划实际进展太过缓慢,1969年便暂停了。不过该计划的参与者之一Ken Thompson已经从这项计划中获得了一些点子和收获,当时他有一个被称为“星际旅行”的程序在GE-635的机器上运行,因为该机器性能问题,运行“星际旅行”太慢,从而引发了他想将这个程序移植到一台性能更好的DPD-7上的想法,只是因为家中有小孩需要照顾而一直没有时间动手。巧合的是,在1969年8月左右,他的妻儿出门探亲了一个月,就在这一个月的时间里,Thompson编写了一个操作系统,并成功地将“星际旅行”移植到了DPD-7上,而这个操作系统就是UNIX的原型。
UNIX由于具有优秀的移植性而得到了广泛的关注和支持,1974年12月伯克利大学获得UNIX的源码,并动手将其修改为适合自己机器的版本,最终命名为BSD,这也是UNIX很重要的一个分支。由于当时还没有足够的版权意识,很多商业公司都开始了基于UNIX操作系统的开发,比如AT&T的System V、IBM的AIX等,在这段时期中也形成了UNIX的两大分支:System V和BSD。
后来AT&T公司出于商业考虑(贝尔实验室是从属于AT&T公司的),1979年在发行第七版UNIX时开始严格限制对学生提供源码。这对大学教学影响非常大,因为在无法看到源码的情况下,教学工作便很难进行。当时有个叫Tanenbaum的教授为避免版权纠纷,在完全不看UNIX源码的情况下,自己动手写了一个类UNIX的系统,并命名为Minix,这项工作从1984年持续到1986年。由于开发这个系统的出发点在于教学,所以用户对Minix的新需求往往得不到开发支持,只能基于Minix的源码自己进行修改。
1984年,Richard Stallman创立了GNU项目,由自由软件基金支持,GNU项目的目标是“开发一个完全自由的UNIX操作系统”。
“Hello everybody out there using minix, I doing a free operation system”,1991年8月,网络上出现了以此开篇的帖子,这是一名芬兰的大学生为了写一个类Minix的系统而在寻找志同道合的伙伴,他就是著名的Linux之父Linus Torvalds。同年10月5日,他在网络上发布了大约有1万行代码的Linux 0.01版本,次年已经有约1000人在使用Linux了。1993年,大约有100名程序员参与了Linux内核开发工作,其中核心人员有5名,此时Linux 0.99版本的代码大约有10万行,用户约为10万人。1994年,Linux加入了GNU,成为GNU项目中的一员,同年Linux 1.0版本发布,代码量大约有17万行,最早按照完全自由免费的协议发布,用户可以随意下载、使用、修改,而不需要通知作者。随后采用了GPL协议,很多开发人员开始将自己的代码贡献给核心小组,这也就使得当时的Linux系统对不同硬件都有着极好的支持,大大提高了不同平台间的可移植性。1995年,Linux可以在Intel、Digital等主流处理器上运行,用户量超过50万。1996年,Linux 2.0版本发布,并支持多处理器,此时的Linux进入实用阶段,用户量已经达到350万。1998年,RedHat公司宣布商业支持计划,迅猛推进了Linux的发展,至此Linux正式成为真正的服务器操作系统并继续成长。
……
评论
还没有评论。