新書推薦:
《
超越百岁看这本就够了
》
售價:HK$
55.8
《
亚洲戏剧史·南亚卷
》
售價:HK$
143.4
《
中国历代竹器图谱与数字活化
》
售價:HK$
557.8
《
EDA技术与设计(第2版)
》
售價:HK$
85.0
《
揉碎浪漫(全两册)
》
售價:HK$
70.3
《
古籍善本
》
售價:HK$
537.6
《
人民币国际化报告2024:可持续全球供应链体系与国际货币金融变革
》
售價:HK$
87.4
《
道德经新注 81幅作者亲绘哲理中国画,图文解读道德经
》
售價:HK$
143.4
|
編輯推薦: |
采用理论联系实际的方式,从系统管理出发,深入剖析Linux系统的运行原理,介绍Linux系统中的常用命令,理清Bash Shell编程的脉络。
结合作者多年的运维诊断经验,提供了大量实用性极强的脚本案例,对于广大Linux服务器运维人员来说,可谓“一书在手,运维不愁”。
|
內容簡介: |
本书由浅入深、全面、系统地介绍了Linux系统的基础命令和Shell脚本的开发。作为一本面向Linux入门用户的书籍,本书力求语言通俗易懂,用例简单明了,便于读者阅读领会。同时,全书穿插了不少要求读者动手实践的内容,不但可加深读者对内容的理解和消化,同时也可通过动手实践激发读者对Linux系统和Shell编程的兴趣,从而更好地驱动读者学习。
全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了Linux的基础知识和常用命令;第二部分为第9章和第10章,主要是Linux下交互和非交互编辑器的使用;第三部分为第11~18章,主要是Shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。
本书根据作者多年来Linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解,非常适合Linux初学者和基于Linux平台的软件开发者学习或查阅。从内容结构上来看,本书摒弃了各章独立的写作风格,而是采取了各章有机结合的方式,自上而下自成一体,既加深了读者对单个知识点的理解,也有利于从全局把控Linux系统和Shell编程的精髓。
|
關於作者: |
王军
拥有近8年系统工程师、网络工程师工作经验。2006年年初开始从事信息技术相关工作,先后参与过校园交换网、公司办公网以及大中型互联网公司的高可用网络架构设计,有丰富的网络实战经验。2008年进入Linux系统运维领域,并相继在国内多家著名企业(易趣、51JOB、阿里云)就职,从事网络工程师、系统工程师工作,工作内容涉及大规模商用云计算虚拟化平台运维、系统架构、企业网络设计。自行设计和部署过国内多家大型网站的高可用集群。对系统、网络、数据库都有深刻的理解,多次在国内一些技术论坛和博客中发表技术文档,颇受关注。现任国家电网某子公司资深技术顾问。
|
目錄:
|
目录
推荐序1
推荐序2
前 言
第1章 Linux简介 1
1.1 Linux的发展历史 1
1.2 Linux的特点 2
1.3 系统安装 3
1.3.1 安装前的规划 3
1.3.2 安装RedHat 4
1.3.3 安装CentOS 11
1.4 系统登录 16
1.4.1 第一次登录系统的设置 16
1.4.2 使用图形模式登录 21
1.4.3 使用终端模式登录 23
1.4.4 开始学习使用Linux的命令 24
1.5 系统启动流程 25
1.5.1 系统引导概述 25
1.5.2 系统运行级别 26
1.5.3 服务启动脚本 27
1.5.4 Grub介绍 29
1.6 获得帮助 31
1.6.1 使用man page 31
1.6.2 使用info page 32
1.6.3 其他获得帮助的方式 32
第2章 Linux用户管理 33
2.1 Linux用户和用户组 33
2.1.1 UID和GID 33
2.1.2 etcpasswd和etcshadow 34
2.2 Linux账号管理 36
2.2.1 新增和删除用户 36
2.2.2 新增和删除用户组 39
2.2.3 检查用户信息 39
2.3 切换用户 40
2.3.1 切换成其他用户 40
2.3.2 用其他用户的身份执行命令:sudo 41
2.4 例行任务管理 43
2.4.1 单一时刻执行一次任务:at 43
2.4.2 周期性执行任务:cron 44
2.4.3 etccrontab的管理 45
第3章 Linux文件管理 46
3.1 文件和目录管理 46
3.1.1 绝对路径和相对路径 47
3.1.2 文件的相关操作 48
3.1.3 目录的相关操作 51
3.1.4 文件时间戳 53
3.2 文件和目录的权限 54
3.2.1 查看文件或目录的权限:ls -al 54
3.2.2 文件隐藏属性 55
3.2.3 改变文件权限:chmod 56
3.2.4 改变文件的拥有者:chown 56
3.2.5 改变文件的拥有组:chgrp 57
3.2.6 文件特殊属性:SUIDSGIDSticky 57
3.2.7 默认权限和umask 58
3.2.8 查看文件类型:file 60
3.3 查找文件 60
3.3.1 一般查找:find 61
3.3.2 数据库查找:locate 61
3.3.3 查找执行文件:whichwhereis 62
3.4 文件压缩和打包 63
3.4.1 gzipgunzip 63
3.4.2 tar 63
3.4.3 bzip2 63
3.4.4 cpio 64
第4章 Linux文件系统 65
4.1 文件系统 65
4.1.1 什么是文件系统 65
4.1.2 ext2文件系统简介 65
4.1.3 ext3文件系统简介 66
4.2 磁盘分区、创建文件系统、挂载 66
4.2.1 创建文件系统:fdisk 66
4.2.2 磁盘挂载:mount 69
4.2.3 设置启动自动挂载:etcfstab 70
4.2.4 磁盘检验:fsck、badblocks 70
4.3 Linux逻辑卷 71
4.3.1 什么是逻辑卷 71
4.3.2 如何制作逻辑卷 72
4.4 硬链接和软链接 76
4.4.1 什么是硬链接 76
4.4.2 什么是软链接 77
第5章 字符处理 79
5.1 管道 79
5.2 使用grep搜索文本 79
5.3 使用sort排序 80
5.4 使用uniq删除重复内容 82
5.5 使用cut截取文本 82
5.6 使用tr做文本转换 83
5.7 使用paste做文本合并 84
5.8 使用split分割大文件 84
第6章 网络管理 86
6.1 网络接口配置 86
6.1.1 使用ifconfig检查和配置网卡 86
6.1.2 将IP配置信息写入配置文件 87
6.2 路由和网关设置 88
6.3 DNS客户端配置 89
6.3.1 etchosts 89
6.3.2 etcresolv.conf 90
6.4 网络测试工具 90
6.4.1 ping 90
6.4.2 host 91
6.4.3 traceroute 91
6.4.4 常见网络故障排查 92
第7章 进程管理 94
7.1 什么是进程 94
7.2 进程和程序的区别 95
7.3 进程的观察:ps、top 95
7.4 进程的终止:kill、killall 98
7.5 查询进程打开的文件:lsof 99
7.6 进程优先级调整:nice、renice 101
第8章 Linux下的软件安装 103
8.1 源码包编译安装 103
8.1.1 编译、安装、打印HelloWorld程序 103
8.1.2 使用源码包编译安装Apache 106
8.2 RPM安装软件 108
8.2.1 什么是RPM 108
8.2.2 RPM包管理命令:rpm 109
8.2.3 包依赖关系 110
8.2.4 使用RPM包安装gcc 110
8.2.5 使用RPM包安装Apache 112
8.3 yum安装软件 114
8.3.1 yum命令的基本用法 114
8.3.2 使用yum安装Apache 115
8.3.3 RedHat使用yum的问题 115
8.3.4 自建本地yum源 118
8.3.5 自建网络yum源 121
8.4 三种安装方法的比较 123
8.5 重建RPM包 124
8.5.1 创建重建环境 124
8.5.2 快速重建RPM包 124
8.5.3 以spec文件重建RPM包 125
8.5.4 spec文件简介 126
第9章 vi和vim编辑器 129
9.1 vi和vim编辑器简介 129
9.2 vi编辑器 129
9.2.1 模式介绍 129
9.2.2 案例练习 130
9.3 vim编辑器 134
9.3.1 多行编辑 134
9.3.2 多文件编辑 134
9.3.3 使用vimtutor深入学习vim 136
9.4 gedit编辑器 137
9.4.1 gedit编辑器简介 137
9.4.2 启动gedit编辑器 138
第10章 正则表达式 139
10.1 正则表达式基础 139
10.1.1 什么是正则表达式 139
10.1.2 基础的正则表达式 140
10.1.3 扩展的正则表达式 143
10.1.4 通配符 144
10.2 正则表达式示例 146
10.3 文本处理工具sed 150
10.3.1 sed介绍 150
10.3.2 删除 151
10.3.3 查找替换 152
10.3.4 字符转换 153
10.3.5 插入文本 153
10.3.6 读入文本 154
10.3.7 打印 154
10.3.8 写文件 154
10.3.9 sed脚本 155
10.3.10 高级替换 155
10.3.11 sed总结 156
10.4 文本处理工具awk 157
10.4.1 打印指定域 158
10.4.2 指定打印分隔符 158
10.4.3 内部变量NF 159
10.4.4 打印固定域 159
10.4.5 截取字符串 159
10.4.6 确定字符串的长度 160
10.4.7 使用awk求列和 160
第11章 Shell编程概述 161
11.1 Shell简介 161
11.1.1 Shell是什么 161
11.1.2 Shell的历史 163
11.1.3 Shell的功能 164
11.1.4 Shell编程的优势 164
11.2 第一个Shell脚本 164
11.2.1 编辑第一个Shell脚本 164
11.2.2 运行脚本 165
11.2.3 Shell脚本的排错 166
11.3 Shell的内建命令 169
第12章 Bash Shell的安装 184
12.1 确定你的Shell版本 184
12.2 安装bash 184
12.3 使用新版本的Bash Shell 186
12.4 在Windows中安装bash 187
第13章 Shell编程基础 191
13.1 变量 191
13.1.1 局部变量 191
13.1.2 环境变量 191
13.1.3 变量命名 197
13.1.4 变量赋值和取值 198
13.1.5 取消变量 199
13.1.6 特殊变量 199
13.1.7 数组 200
13.1.8 只读变量 202
13.1.9 变量的作用域 203
13.2 转义和引用 205
13.2.1 转义 205
13.2.2 引用 206
13.2.3 命令替换 207
13.3 运算符 208
13.3.1 算术运算符 209
13.3.2 位运算符 209
13.3.3 自增自减 211
13.4 其他算术运算 211
13.4.1 使用$[]做运算 211
13.4.2 使用expr做运算 212
13.4.3 内建运算命令declare 212
13.4.4 算术扩展 213
13.4.5 使用bc做运算 213
13.5 特殊字符 215
13.5.1 通配符 215
13.5.2 引号 215
13.5.3 注释符 215
13.5.4 大括号 216
13.5.5 控制字符 217
13.5.6 杂项 217
第14章 测试和判断 218
14.1 测试 218
14.1.1 测试结构 218
14.1.2 文件测试 219
14.1.3 字符串测试 220
14.1.4 整数比较 222
14.1.5 逻辑测试符和逻辑运算符 223
14.2 判断 224
14.2.1 if判断结构 224
14.2.2 ifelse判断结构 225
14.2.3 ifelifelse判断结构 226
14.2.4 case判断结构 227
第15章 循环 229
15.1 for循环 229
15.1.1 带列表的for循环 229
15.1.2 不带列表的for循环 231
15.1.3 类C的for循环 232
15.1.4 for的无限循环 233
15.2 while循环 234
15.2.1 while循环的语法 234
15.2.2 使用while按行读取
文件 235
15.2.3 while的无限循环 236
15.3 until循环 237
15.3.1 until循环的语法 237
15.3.2 until的无限循环 238
15.4 select循环 238
15.5 嵌套循环 239
15.6 循环控制 241
15.6.1 break语句 241
15.6.2 continue语句 241
第16章 函数 243
16.1 函数的基本知识 243
16.1.1 函数的定义和调用 243
16.1.2 函数的返回值 244
16.2 带参数的函数 246
16.2.1 位置参数 246
16.2.2 指定位置参数值 247
16.2.3 移动位置参数 248
16.3 函数库 249
16.3.1 自定义函数库 249
16.3.2 函数库etcinit.dfunctions简介 249
16.4 递归函数 251
第17章 重定向 255
17.1 重定向简介 255
17.1.1 重定向的基本概念 255
17.1.2 文件标识符和标准输入输出 255
17.2 IO重定向 255
17.2.1 IO重定向符号和用法 255
17.2.2 使用exec 260
17.2.3 Here Document 262
第18章 脚本范例 263
18.1 批量添加用户脚本 263
18.2 检测服务器存活 266
18.3 使用expect实现自动化输入 268
18.4 自动登录ftp备份 270
18.5 文件安全检测脚本 272
18.6 ssh自动登录备份 273
18.7 使用rsync备份 275
18.8 使用netcat备份 277
18.9 使用iptables建立防火墙 279
18.10 自定义开机启动项的init脚本 282
18.11 使用脚本操作MySQL数据库 286
18.12 基于LVM快照的MySQL数据库备份 288
18.13 页面自动化安装LAMP环境 291
|
內容試閱:
|
第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正式成为真正的服务器操作系统并继续成长。
|
|