具体描述
编辑推荐
《国外计算机科学经典教材:UNIX/Linux应用、编程与系统管理(第3版)》特色:
·vi/vim章节中的编辑程序宏指令被精简并移到了附录中,使得vi部分对于初学者来说更容易。第3章着重介绍pico编辑器
·增加了单独的C语言编程一章。这样是为了更好地理解接下来的两章系统编程的部分
·第15章收入了流行的并发版本系统(CVS),所有的Linux系统中都有它
·增加了GNU调试器,因为其性能优于dbx
内容简介
UNIX是计算机发展历史上成功的操作系统家族。它诞生于贝尔实验室,尔后迅速成为世界上操作系统的主流并延续至今。Linux派生于UNIX,并且在小型机和桌面计算机领域成为和微软的Windows并驾齐驱的操作系统家族。
《国外计算机科学经典教材:UNIX/Linux应用、编程与系统管理(第3版)》兼顾用户和程序员的思路来编写,是的UNIX/Linux教材。《国外计算机科学经典教材:UNIX/Linux应用、编程与系统管理(第3版)》既有教学工具又有详尽的参考资料,非常适合于任何UNIX或Linux相关课程。与类似教材不同的是,《国外计算机科学经典教材:UNIX/Linux应用、编程与系统管理(第3版)》设置了一个强大的教学框架,能够使入门级的学生牢固地掌握基本概念,而高级主题章节能激发更有经验的读者跨越基础知识。书中提供了近千道练习和自测题,用于让学生测试和巩固他们对知识的理解。
作者简介
达斯(Sumitabha Das),获电子工程学位。他在国防部任职时开始对UNIX感兴趣并深入该领域研究。Sumitabha在UNIX实际应用方面积累了丰富的经验,对UNIX有着独到的见解。目前,他致力于讲授UNIX系统和系统开发课程。
内页插图
目录
第1部分 UNIX之用户篇
第1章 UNIX简介
1.1 操作系统
1.2 UNIX操作系统
1.3 了解你的计算机
1.4 系统管理员
1.5 登录和注销
1.5.1 登录
1.5.2 注销
1.6 实践练习
1.6.1 用date和who查看系统信息
1.6.2 用ps查看进程
1.6.3 处理文件
1.6.4 处理目录
1.7 UNIX的成功之路
1.7.1 伯克利:第二学派
1.7.2 UNIX的分化
1.7.3 互联网
1.7.4 Windows的威胁
1.8 POSIX和单一UNIX规范
1.9 Linux和GNU
1.10 UNIX体系结构
1.10.1 分工:Kernel和shell
1.10.2 文件和进程
1.10.3 系统调用
1.11 UNIX的功能
1.11.1 多用户系统
1.11.2 多任务系统
1.11.3 应用程序库
1.11.4 构建基块方法
1.11.5 模式匹配
1.11.6 程序设计实用工具
1.11.7 文档
1.12 小结
1.13 自测题
1.14 习题
第2章 熟悉UNIX命令
2.1 命令基础
2.1.1 PATH:定位命令
2.1.2 命令的存放位置
2.2 命令结构
2.3 命令应用的灵活性
2.4 man:联机帮助
2.4.1 导航与查找
2.4.2 用man-k和man-f获取更多帮助
2.5 man文档
2.5.1 了解man页
2.5.2 用man来理解man
2.6 echo:显示消息
2.7 printf:echo的替代命令
2.8 script:记录会话
2.9 以mailx命令使用电子邮件
2.9.1 发送邮件
2.9.2 接收邮件
2.9.3 mailx内部命令
2.10 passwd:改变密码
2.11 uname:显示计算机名和操作系统
2.12 who:了解用户
2.13 date:显示系统日期
2.14 stty:在出错时
2.15 X Window系统
2.15.1 终端模拟器
2.15.2 文件管理器
2.16 小结
2.17 自测题
2.18 习题
第3章 文件系统
3.1 文件
3.1.1 普通(常规)文件
3.1.2 目录文件
3.1.3 设备文件
3.2 文件名中有什么
3.3 文件系统的层次结构
3.4 UNIX文件系统
3.5 随命令一起使用绝对路径名
3.6 HOME变量和~:主目录
3.7 pwd和cd:在文件系统中导航
3.8 相对路径名(.和..)
3.9 mkdir:创建目录
3.10 rmdir:删除目录
3.11 ls:列出文件
3.12 cp:复制文件
3.13 mv:重命名文件
3.14 rm:删除文件
3.15 cat:显示和串联文件
3.16 more:UNIX分页器
3.17 pico:基本文本编辑
3.17.1 导航
3.17.2 文本编辑
3.18 wc:计算行数、字数和字符数
3.19 lp:打印文件
3.20 pd:查看不可打印字符
3.21 dos2unix、unix2dos和Tofrodos:在DOS和UNIX之间转换
3.22 tar:存档程序
3.23 gzip:压缩程序
3.24 zip:压缩和存档程序
3.25 使用这些命令的其他方式
3.26 小结
3.27 自测题
3.28 习题
第4章 文件属性
4.1 重温ls(-1):列出文件属性
4.2 文件权限
4.3 chmod:改变文件权限
4.3.1 相对权限
4.3.2 绝对赋予权限
4.3.3 递推操作(-R)
4.4 目录
4.4.1 读权限
4.4.2 写权限
4.4.3 执行权限
4.5 umask:默认的文件与目录权限
4.6 文件系统和inode
4.7 In:创建硬链接
4.8 再论In:创建符号链接
4.9 文件所有权
4.9.1 chown:改变文件所有权
4.9.2 chgrp:改变用户组所有者
4.9.3 如何处理入侵者
4.10 修改时间与访问时间
4.11 find:定位文件
4.11.1 选择准则
4.11.2 find操作符(!,-o和-a)
4.11.3 操作部分的操作符
4.12 小结
4.13 自测题
……
第2部分 UNIX之程序员篇
第3部分 系统管理
深入探索计算的基石:UNIX/Linux的强大力量与灵活实践 在信息技术飞速发展的今天,理解和掌握操作系统如同理解摩天大楼的建筑原理。而作为现代计算领域最核心、最具影响力的操作系统家族之一,UNIX和Linux以其开放性、稳定性、高效性和强大的命令行接口,深深地塑造了我们今天所处的数字世界。从庞大的服务器集群到嵌入式设备,从科学研究到互联网基础设施,UNIX/Linux无处不在,其影响力之广,技术之深,已成为计算机科学领域不可或缺的基石。 本书并非一本简单的操作指南,而是一次深入探究UNIX/Linux精髓的旅程。它将带领读者超越表面的使用技巧,直抵操作系统的核心,理解其设计哲学,掌握其强大的内在机制,并最终学会如何充分利用其灵活性来解决现实世界的复杂问题。无论您是初涉计算机科学的学生,渴望建立扎实的操作系统知识体系;还是经验丰富的开发者,希望优化程序性能、提升系统管理效率;抑或是对底层技术充满好奇的技术爱好者,都将在这本书中找到宝贵的启示和实用的工具。 第一部分:UNIX/Linux的世界:理念、历史与核心概念 在进入技术细节之前,我们首先需要理解UNIX/Linux之所以如此成功的原因。本部分将追溯UNIX的起源,从贝尔实验室的传奇故事到Linux的自由开源运动,让读者领略其发展脉络和核心价值观。我们将深入探讨UNIX哲学,即“一切皆文件”的设计理念,以及其对系统设计的深远影响。通过理解文件系统、进程管理、内存管理、I/O模型等基本概念,读者将建立起对操作系统运作方式的宏观认知。 UNIX的历史与演进: 从Multics的尝试到Ken Thompson和Dennis Ritchie的创造,UNIX如何诞生并逐渐壮大,成为操作系统的标杆。 Linux的诞生与开源精神: Linus Torvalds如何受到MINIX的启发,创建出Linux内核,以及开源模式如何推动了Linux的快速发展和广泛应用。 核心设计哲学: “小而精”的工具、管道(Pipes)和重定向(Redirection)的强大组合,以及其如何实现模块化和灵活性。 文件系统: 理解文件系统的层次结构,inode的概念,以及文件权限和属性的含义。 进程管理: 进程是什么?如何创建、销毁和管理进程?理解PID、PPID、信号等概念。 内存管理: 虚拟内存、分页、分段等机制如何让程序运行得更高效、更安全。 I/O系统: 标准输入、标准输出、标准错误,以及缓冲I/O和非缓冲I/O的区别。 第二部分:命令行与Shell:UNIX/Linux的灵魂 命令行界面(CLI)是UNIX/Linux最具代表性的交互方式,它强大、高效且充满弹性。本部分将带领读者深入掌握Shell的强大功能,从基本的命令使用到复杂的脚本编程。我们将学习如何利用各种核心命令来操作文件、管理进程、搜索信息,并了解Shell脚本的魅力,如何通过自动化来极大地提高工作效率。 Shell入门: 理解Shell的角色,掌握Bash等主流Shell的语法和常用命令。 文件与目录操作: `ls`, `cd`, `pwd`, `cp`, `mv`, `rm`, `mkdir`, `rmdir` 等命令的熟练运用。 文本处理工具: `grep`, `sed`, `awk`, `cut`, `sort`, `uniq` 等强大的文本处理利器,解决日常数据处理的难题。 进程控制: `ps`, `top`, `kill`, `bg`, `fg` 等命令,理解进程的生命周期和管理。 重定向与管道: 掌握输入输出重定向 (`<`, `>`, `>>`) 和管道 (`|`),构建强大的命令链。 Shell脚本编程: 学习变量、条件语句 (`if`, `case`)、循环 (`for`, `while`)、函数等,编写自动化脚本,提升工作效率。 正则表达式: 掌握正则表达式的强大匹配能力,将其应用于文本搜索和处理。 第三部分:系统编程:构建高效稳定的应用程序 掌握了命令行和Shell的强大功能后,我们将深入到UNIX/Linux的系统编程层面。本部分将介绍如何利用C语言和POSIX API来编写能够与操作系统底层进行交互的程序。通过学习系统调用、进程间通信(IPC)、线程、文件I/O、网络编程等核心概念,读者将能够构建出更复杂、更高效、更具弹性的应用程序。 系统调用: 理解系统调用是用户程序与内核交互的接口,掌握常用的系统调用,如`open`, `read`, `write`, `close`, `fork`, `exec`, `wait`等。 进程与线程: 深入理解进程模型,学习如何创建和管理进程,并掌握线程的概念和多线程编程技术。 进程间通信(IPC): 管道(Pipes)、消息队列(Message Queues)、共享内存(Shared Memory)、信号量(Semaphores)等多种IPC机制,实现进程间的数据交换与同步。 文件I/O的底层细节: 深入理解文件描述符,以及`read`, `write`等系统调用的工作原理。 信号处理: 理解信号的概念,以及如何捕获和处理信号,增强程序的健壮性。 网络编程基础: 掌握Socket编程的基本概念,以及如何使用TCP/IP协议进行客户端和服务器端的通信。 内存管理: 深入理解`malloc`, `free`, `mmap`等内存管理函数,以及其背后的系统机制。 第四部分:系统管理与维护:保障系统的稳定与安全 一个稳定、高效且安全的系统是任何IT基础设施的基石。本部分将聚焦于UNIX/Linux的系统管理方面,从用户和权限管理到服务配置,从性能监控到安全加固,为读者提供全面的系统管理知识和实践技巧。 用户与权限管理: 理解用户、组、UID、GID的概念,以及`chmod`, `chown`, `sudo`等命令的使用。 软件包管理: 掌握`apt`, `yum`, `dnf`等主流包管理工具,高效地安装、更新和卸载软件。 服务管理: 学习`systemd`等现代系统管理工具,管理各种系统服务(如SSH, Web服务器等)的启动、停止和状态。 日志管理: 理解系统日志的作用,掌握查找和分析日志信息,定位系统故障。 磁盘管理与文件系统维护: 理解文件系统的挂载、卸载,以及`fsck`等维护工具的使用。 网络配置与故障排除: 配置网络接口,理解DNS、DHCP等协议,并掌握基本的网络故障排除方法。 性能监控与优化: 使用`top`, `htop`, `iostat`, `vmstat`等工具监控系统资源,并学习常见的性能优化技巧。 系统安全基础: 了解防火墙、SSH安全配置、用户账户锁定等基础安全措施。 第五部分:深入探索与高级主题 在掌握了基础知识之后,本部分将带领读者探索更高级和更专业的UNIX/Linux主题,为进一步的学习和应用打下基础。 Linux内核: 简要介绍Linux内核的结构和工作原理,了解模块化设计。 虚拟化与容器化: 介绍Docker, Kubernetes等技术,以及它们如何基于UNIX/Linux生态系统实现。 系统性能调优: 更深入地探讨CPU、内存、I/O、网络等方面的性能调优策略。 嵌入式Linux: 了解嵌入式Linux系统的开发和部署。 安全加固与审计: 深入探讨系统安全策略,以及安全审计的重要性。 通过对本书内容的系统学习,读者将不仅能够熟练地使用UNIX/Linux操作系统,更能深入理解其背后的原理和机制,从而成为一名真正掌握UNIX/Linux核心技术的开发者和系统管理员。本书旨在培养读者解决问题的能力,激发读者对底层技术的好奇心,并为他们在不断发展的计算领域奠定坚实的基础。无论您追求的是成为一名优秀的软件工程师,还是精通系统架构的专家,亦或是对开源技术充满热情的探索者,UNIX/Linux都将是您不可或缺的强大工具和智慧宝库。