内容简介
本书由浅入深、全面、系统地介绍了Linux系统的基础命令和Shell脚本的开发。作为一本面向Linux入门用户的书籍,本书力求语言通俗易懂,用例简单明了,便于读者阅读领会。同时,全书穿插了不少要求读者动手实践的内容,不但可加深读者对内容的理解和消化,同时也可通过动手实践激发读者对Linux系统和Shell编程的兴趣,从而更好地驱动读者学习。
全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了Linux的基础知识和常用命令;第二部分为第9章和第10章,主要是Linux下交互和非交互编辑器的使用;第三部分为第11~18章,主要是Shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。
本书根据作者多年来Linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解,适合Linux初学者和基于Linux平台的软件开发者学习或查阅。从内容结构上来看,本书摒弃了各章独立的写作风格,而是采取了各章有机结合的方式,自上而下自成一体,既加深了读者对单个知识点的理解,也有利于从全局把控Linux系统和Shell编程的精髓。
目录
目录
序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 /etc/passwd和/etc/shadow 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 /etc/crontab的管理 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 文件特殊属性:SUID/SGID/Sticky 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 查找执行文件:which/whereis 62
3.4 文件压缩和打包 63
3.4.1 gzip/gunzip 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 设置启动自动挂载:/etc/fstab 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 /etc/hosts 89
6.3.2 /etc/resolv.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 查询进程打开的文件:lso
摘要与插图
第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正式成为真正的服务器操作系统并继续成长。