LINUX系统分析与高级编程技术


内容简介 -------------------------------------------------------------------------------- 本书介绍Linux环境下的编程方法,内容包括Linux系统命令、Shell脚本、编程语言、系统内核、安全体系、X Windows 等,内容丰富、论述全面,涵盖了Linux 系统的方方面面。本书附带光盘包括了Redhat Linux系统的最新版本,及安装方法,还包括了较全面的参考。 目录 -------------------------------------------------------------------------------- 第一部分 Linux系统介绍 第一章 Linux简介 1.1 Linux的起源 1.2 自由软件基金会的计划 1.3 Linux的发音 1.4 Linux的特点 1.5 基本硬件要求 1.6 如何获得Linux 1.6.1 从风上下载Linux 1.6.2 从不光盘获得Linux 1.7 涉及Linux的Web网址和新闻讨论组 1.8 Linux的不足之处 第二章 外壳及常用命令 2.1 登录和退出 2.2 Linux系统的外壳 2.3 外壳的常用命令 2.3.1 更改帐号密码 · · · · · · 第一部分 Linux系统介绍 第一章 Linux简介 1.1 Linux的起源 1.2 自由软件基金会的计划 1.3 Linux的发音 1.4 Linux的特点 1.5 基本硬件要求 1.6 如何获得Linux 1.6.1 从风上下载Linux 1.6.2 从不光盘获得Linux 1.7 涉及Linux的Web网址和新闻讨论组 1.8 Linux的不足之处 第二章 外壳及常用命令 2.1 登录和退出 2.2 Linux系统的外壳 2.3 外壳的常用命令 2.3.1 更改帐号密码 2.3.2 联机帮助 2.3.3 远程登录 2.3.4 文件或目录处理 2.3.5 改变工作目录 2.3.6 复制文件 2.3.7 移动或改文件、目录名称 2.3.8 建立新目录 2.3.9 删除目录 2.3.10 删除文件 2.3.11 列出当前所在的目录位置 2.3.12 查看文件内容 2.3.13 分页查看文件内容 2.3.14 查看目录所占磁盘容量 2.3.15 文件传输 2.3.16 文件权限的设定 2.3.17 查看自己所属工作组名称 2.3.18 改变文件或目录工作组所有权 2.3.19 改变文件或目录的最后修改时间 2.3.20 文件的链接 2.3.21 文件中字符串的查寻 2.3.22 查寻文件或命令的路径 2.3.23 比较文件或目录的内容 2.3.24 文件打印输出 2.3.25 一般文件的打印 2.3.26 troff文件的打印 2.3.27 打印机控制命令 2.3.28 进程控制 2.3.29 外壳变量 2.3.30 环境变量 2.3.31 别名 2.3.32 历史命令 2.3.33 文件的压缩 2.3.34 管理命令的使用 2.3.35 输入/输出控制 2.3.36 查看系统中的用户 2.3.37 改变用户名 2.3.38 查看用户名 2.3.39 查看当前系统上所有工作站的用户 2.3.40 与基本工作站上的用户交谈 2.3.41 检查远程系统是否正常 2.3.42 电子邮件的使用简介 第三章 Linux系统的网络功能 3.1 Linux支持的网络协议 3.1.1 TCP/IP 3.1.2 TCP/IP版本6 3.1.3 IPX/SPX 3.1.4 AppleTalk协议集 3.1.5 广域网 3.1.6 ISDN 3.1.7 PPP、SLIP及PLIP 3.1.8 业余无线电 3.1.9 ATM 3.2 Linux系统下的文件共享和打印共享 3.2.1 Machintosh环境 3.2.2 Windows 环境 3.2.3 Novell环境 3.2.4 UNIX环境 3.3 Linux 系统中的Interet/Intranet功能 3.3.1 邮件 3.3.2 Web服务器 3.3.3 Web浏览器 3.3.4 FTP服务器和客户机 3.3.5 新闻服务 3.3.6 域名系统 3.3.7 DHCP和bootp 3.3.8 NIS 3.4 Linux系统下应用程序的远程执行 3.4.1 Telnet 3.4.2 远程命令 3.4.3 X Window 3.5 Linux系统的网络互连功能 3.5.1 路由器 3.5.2 网桥 3.5.3 IP伪装 3.5.4 IP统计 3.5.5 IP别名 3.5.6 流量限制器 3.5.7 防火墙 3.5.8 端口下传 3.5.9 负载平衡 3.5.10 EQL 3.5.11 代理服务器 3.5.12 按需拨号 3.5.13 管道、移动IP和虚拟个人网络 3.6 Linux系统中的网络管理 3.6.1 Linux系统下的网络管理应用程序 3.6.2 SNMP 3.7 企业级Linux网络 3.7.1 高可用性 3.7.2 RAID 3.7.3 冗余网络 第四章 Linux系统管理简介 4.1 root帐号 4.2 启动和关闭系统 4.2.1 从软盘启动 4.2.2 使用LILO启动 4.2.3 关闭Linux系统 4.3 挂接文件系统 4.3.1 挂接软盘 4.3.2 创建新的文件系统 4.3.3 卸载文件系统 4.4 检查文件系统 4.5 使用文件作为交换区 4.6 系统和文件的备份 4.7 设置系统 4.7.1 设置系统名 4.7.2 使用维护磁盘 4.7.3 重新设置root帐号口令 4.7.4 设置登录信息 第二部分 Linux语言及管理编程 第二章 外壳编程 5.1 创建和运行外壳程序 5.1.1 创建外壳程序 5.1.2 运行外壳程序 5.2 使用外壳变量 5.2.1 给变量赋值 5.2.2 读取变量的值 5.2.3 位置变量和其他系统变量 5.2.4 引号的作用 5.3 数值运算命令 5.4 条件表达式 5.4.1 if表达式 5.4.2 Case表达式 5.5 循环语句 5.5.1 for语句 5.5.2 while语句 5.5.3 until语句 5.6 shift语句 5.7 select语句 5.8 repeat语句 5.9 子函数 第六章 gawk语言编程 6.1 gawk的主要功能 6.2 如何执行gawk程序 6.3 文件、记录和字段 6.4 模式和动作 6.5 比较运算和数值运算 6.6 内部函数 6.6.1 随机数和数学函数 6.6.2 字符串的内部函数 6.6.3 输入输出的内部函数 6.7 字符串和数字 6.8 格式化输出 6.9 改变字段分隔符 6.10 元字符 6.11 调用gawk程序 6.12 BEGIN和END 6.13 变量 6.14 内置变量 6.15 控制结构 6.15.1 if表达式 6.15.2 while循环 6.15.3 for 循环 6.15.4 next和exit 6.16 数组 6.17 用户自定义函数 6.18 几个实例 第七章 Perl语言编程 7.1 什么是Perl 7.2 Perl的现状 7.3 初试Perl 7.4 Perl变量 7.4.1 标题 7.4.2 数组 7.4.3 相关数组 7.5 文件句柄和文件操作 7.6 循环结构 7.6.1 foreach循环 7.6.2 判断运算 7.6.3 for 循环 7.6.4 while和until循环 7.7 条件结构 7.8 字符匹配 7.9 替换和翻译 7.9.1 替换 7.9.2 翻译 7.10 子过程 7.10.1 子过程的定义 7.10.2 参数 7.10.3 返回值 7.11 Perl程序的完整例子 第三部分 Linux系统内核分析 第八章 Linux内核简介 8.1 系统初始化 8.2 系统运行 8.3 内核提供的各种系统调用 8.3.1 进程的基本要领和系统的基本数据结构 8.3.2 创建和撤消进程 8.3.3 执行程序 8.4 存取文件系统 第九章 系统进程 9.1 什么是进程 9.2 进程的结构 9.3 进程调度 9.4 进程使用的文件 9.5 进程使用的虚拟内存 9.6 创建进程 9.7 进程的时间和计时器 9.7.1 实时时钟 9.7.2 虚拟时钟 9.7.3 形象时钟 9.8 程序的执行 9.8.1 ELF文件 9.8.2 脚本文件 第十章 内存管理 10.1 内存管理的作用 10.2 虚拟内存的抽象模型 10.3 按需装入页面 10.4 交换 10.5 共享虚拟内存 10.6 存取控制 10.7 高速缓存 10.7.1 缓冲区高速缓存 10.7.2 页面高速缓存 10.7.3 交换高速缓存 10.7.4 硬件高速缓存 10.8 系统页表 10.9 页面的分配和释放 10.9.1 页的分配 10.9.2 页的释放 10.10 内存映射 10.11 请示调页 10.12 页面高速缓存 10.13 内核交换守护进程 第十一章 进程间通信 11.1 信号机制 11.2 管理机制 11.3 System V IPC机制 11.3.1 信息队列 11.3.2 信号量 11.3.3 共享内存 第十二章 PCI 12.1 PCI系统 12.2 PCI地址空间 12.3 PCI设置头 12.4 PCI/I/O和PCI内存地址 12.5 PCI-ISA桥 12.6 PCI-PCI桥 12.7 PCI初始化 12.7.1 Linyux系统内核有关PCI的数据结构 12.7.2 PCI设备驱动程序 12.7.3 PCI BIOS函数 12.7.4 PCI Fixup 第十三章 中断和中断处理 13.1 中断 13.2 可编程中断控制器 13.3 实始化中断处理的数据结构 13.4 中断处理 第十四章 设备驱动程序 14.1 硬件设备的管理 14.2 轮询和中断 14.3 直接内存存取 14.4 内存 14.5 设备驱动程序和内核之间的接口 14.5.1 字符设备 14.5.2 块设备 14.6 硬盘 14.6.1 IDE硬盘 14.6.2 初始化IDE硬盘子系统 14.6.3 SCSI硬盘 14.6.4 初始化SCSI磁盘子系统 14.6.5 传递块设备请求 14.7 网络设备 14.7.1 网络设备文件名 14.7.2 总线信息 14.7.3 网络接口标记 14.7.4 协议信息 14.7.5 初始化网络设置 第十五章 文件系统 15.1 Linux文件系统概述 15.2 ext2文件系统 15.2.1 ext2的索引节点 15.2.2 ext2超级块 15.2.3 ext2数据块组描述符 15.2.4 ext2中的目录 15.2.5 在ext2文件系统中查找文件 15.2.6 改变ext2文件系统中文件的大小 15.3 VFS 15.3.1 VFS超级块 15.3.2 VFS索引节点 15.3.3 登记文件系统 15.3.4 挂接文件系统 15.3.5 在VFS中查找文件 15.3.6 撤消文件系统 15.3.7 VFS索引节点缓存 15.3.8 VFS目录缓存 15.4 缓冲区缓存 15.5 /proc文件系统 第十六章 网络系统 16.1 TCP/IP网络简介 16.2 TCP/IP网络的分层 16.3 BSD套接口 16.4 INET套接口层 16.4.1 创建BSD套接口 16.4.2 给INET BSD套接口指定地址 16.4.3 在INET BSD套接口上创建连接 16.4.4 监听INET BSD套接口 16.4.5 接收连接请求 16.5 IP层 16.5.1 套接口缓冲区 16.5.2 接收IP数据包 16.5.3 发送IP数据包 16.5.4 数据碎片 16.6 地址解析协议 第十七章 系统内核机制 17.1 Bottom Half处理 17.2 任务队列 17.3 计时器 17.4 等待队列 17.5 信号量 第四部分 Linux系统高级编程 第十八章 Linux内核模块编程 18.1 一个简单程序Hello World 18.2 设备文件 18.3 /proc文件系统 18.4 使用/proc输入 18.5 与设备文件通信 18.6 启动参数 18.7 系统调用 18.8 阻塞进程 18.9 替换printk 18.10 调度任务 第十九章 有关进程通信的编程 19.1 进程间的通信简介 19.2 半双工UNIX管道 19.2.1 基本概念 19.2.2 使用C语言创建管道 19.2.3 创建管道的简单方法 19.2.4 使用管道的自动操作 19.2.5 使用关双工管道时的注意事项 19.3 命名管道 19.3.1 基本概念 19.3.2 创建FIFO 19.3.3 FIFO操作 19.3.4 FIFO的阻塞 19.3.5 SIGPIPE信号 19.4 System V IPC 19.4.1 基本概念 19.4.2 消息2队列基本概念 19.4.3 系统调用msgget() 19.4.4 系统调用msgsnd() 19.4.5 系统调用msgctl() 19.4.6 一个msgtool的实例 19.5 使用信号量编号 19.5.1 基本概念 19.5.2 系统调用semget() 19.5.3 系统调用semop() 19.5.4 系统调用semctl() 19.5.5 使用信号量集的实例:Semtool 19.6 共享内存 19.6.1 基本概念 19.6.2 系统内部用户数据结构shmid_ds 19.6.3 系统调用shmget() 19.6.4 系统调用shmat() 19.6.5 系统调用shmctl() 19.6.6 系统调用shmdt() 19.6.7 使用共享内存的实例:shmtool 第二十章 高级线程编程 20.1 线程的概念和思想 20.2 一个简单的例子 20.3 线程同步 20.4 使用信号量协调程序 20.5 信号量的实现 20.5.1 Semaphore.h 20.5.2Semaphore.c 第二十一章 Linux系统网络编程 21.1 什么是套接口 21.2 两种类型的Internet套接口 21.3 网络协议分层 21.4 数据结构 21.5 IP地址和如何使用IP地址 21.5.1 socket() 21.5.2 bind() 21.5.3 connect() 21.5.4 listen() 21.5.5 accept() 21.5.6 send()和recv() 21.5.7 sendto()和recvfrom() 21.5.8 clse()和shutdown() 21.5.9 getpeername() 21.5.10 gethostname() 21.6 DNS 21.7 客户机/服务器模式 21.8 简单的数据流服务器程序 21.9 简单的数据流客户机程序 21.10 数据报套接口 21.11阻塞 第二十二章 Linux I/O端口编程 22.1 如何在C语言下使用I/O端口 22.1.1 一般的方法 22.1.2 另一个替代方法:/dev/prot 22.2 硬件中断与DMA存取 22.3 高精确的时间 22.3.1 延迟时间 22.3.2 时间的测量 22.4 使用其他程序语言 22.5 一些有用的I/O端口 22.5.1 并行端口 22.5.2 游戏端口 22.5.3 串行端口 第五部分 Linux系统安全分析 第二十三章 系统管理员安全 23.1 安装管理 23.2 超级用户 23.3 文件系统安全 23.3.1 Linux文件系统概述 23.3.2 设备文件 23.3.3 /etc/mknod命令 23.3.4 安全考虑 23.3.5 find命令 23.3.6 secure程序 23.3.7 ncheck命令 23.3.8 安装和拆卸文件系统 23.3.9 系统目录和文件 23.4 作为root运行的程序 23.4.1 启动系统 23.4.2 init进程 23.4.3 进入多用户 23.4.4 shutdown命令 23.4.5 系统V的cron程序 23.4.6 系统V版的2之后的cron程序 23.5 /etc/profile 23.5.1 /etc/passwd文件 23.5.2 口令时效 23.6 /etc/group文件 23.7 增加\删除和移走用户 23.7.1 增加用户 23.7.2 删除用户 23.7.3 将用户移到另一个系统 23.8 安全检查 23.8.1 记帐 23.8.2 其他检查命令 23.8.3 安全检查程序的问题 23.8.4 系统泄密衙怎么办 23.9 加限制的环境 23.9.1 加限制的外壳 23.9.2 用chroot()限制用户 23.10 小系统安全 23.11 物理安全 23.12 用户意识 23.13 系统管理员意识 23.13.1 保持系统管理员个人的登录安全 23.13.2 保持系统安全 第二十四章 系统程序员安全 24.1 系统子程序 24.1.1 I/O子程序 24.1.2 进程控制 24.1.3 文件属性 24.1.4 UID和GID的处理 24.2 标准C程序库 24.2.1 标准I/O 24.2.2 /etc/passwd的处理 24.2.3 .etc/group的处理 24.2.4 加密子程序 24.2.5 运行外壳 24.3 编写安全的C程序 24.3.1 需要考虑的安全问题 24.3.2 SUID/SGID程序指导准则 24.3.3 编译\安装SUID/SGID程序的方法 24.4 root用户程序的设计 第二十五章 Linux系统的网络安全 25.1 UUCP系统概述 25.1.1 UUCP命令 25.1.2 uux命令 25.1.3 uucico命令 25.1.4 uuxqt命令 25.2 UUCP的安全问题 25.2.1 USERFILE文件 25.2.2 L.cmds文件 25.2.3 uucp登录 25.2.4 uucp使用的文件和目录 25.3 HONEYDANBER UUCP 25.3.1 HONEYDANBER UUCP与老UUCP的差别 25.3.2 登录名规则 25.3.3 MACHINE规则 25.3.4 组合MACHINE和LOGNAME规则 25.3.5 uucheck命令 25.3.6 网关 25.3.7 登录文件检查 25.4 其他网络 25.4.1 远程作业登录 25.4.2 NSC网络系统 25.5 通信安全 25.5.1 物理安全 25.5.2 加密 25.5.3 用户身份鉴别 25.6 SUN OS系统的网络安全 25.6.1 确保NFS的安全 25.6.2 NFS安全性方面的缺陷 25.6.3 远程过程调用鉴别 25.6.4 Linux鉴别机制 25.6.5 DES鉴别系统 25.6.6 公共关键字的编码 25.6.7 网络实体的命名 25.6.8 DES鉴别系统的应用 25.6.9 遗留的安全问题 25.6.10 性能 25.6.11 启动和setuid程序引起的问题 25.6.12 小结 第二十六章 Linux系统的用户安全性 26.1 口令安全 26.2 文件许可权 26.3 目录许可 26.4 umask命令 26.5 设置用户ID和同组用户ID许可 26.6 cp mv ln和cpio命令 26.7 su和newgrp命令 26.7.1 su命令 26.7.2 newgrp命令 26.8 文件加密 26.9 其他安全问题 26.9.1 用户的profile文件 26.9.2 ls-a 26.9.3 .exrc文件 26.9.4 暂存文件和目录 26.9.5 UUCP和其他网络 26.9.6 特洛伊木马 26.9.7 诱骗 26.9.8 计算机病毒 26.9.9 要离开自己的登录的终端 26.9.10 智能终端 26.9.11 断开与系统的连接 26.9.12 cu命令 26.10 保持帐户安全的要点 第六部分 X Windows 系统的内部结构和使用 第二十七章 X Windows 系统的基本知识 27.1 X Windows 系统介绍 27.1.1 X的特点 27.1.2 什么是窗口系统 27.1.3 X发展的历史 27.1.4 X的产品 27.1.5 MIT发行的X 27.2 X的基本结构 27.2.1 X的基本元素 27.2.2 服务程序和客户程序如何交互通信 27.2.3 X的网络概况 27.3 从用户界面的角度概观X 27.3.1 管理界面:窗口管理器 27.3.2 应用程序界面和工具箱 27.3.3 其他系统角度 27.4 术语和符号 27.4.1 术语 27.4.2 符号 27.5 启动和关闭X 27.5.1 启动X 27.5.2 执行X程序的方式 27.5.3 关闭X 27.6 窗口管理器基础——uwm 27.6.1 什么是窗口管理器 27.6.2 启动uwm 27.6.3 基本窗口操作——uwm的菜单 27.6.4 移动窗口 27.6.5 重定窗口大小 27.6.6 建立新窗口 27.6.7 管理屏幕空间 27.6.8 中止应用程序窗口 27.6.9 激活uwm菜单的其他方式 27.7 使用X的网络设备 27.7.1 指定远程终端机——display选项 27.7.2 实际使用远程的显示器 27.7.3 控制存取显示器——xhost 27.8 终端机模拟器——详细介绍xterm 27.8.1 选择xterm功能——菜单与命令行选项 27.8.2 滚动xterm屏幕 27.8.3 记录与终端机的交互过程——写记录 27.8.4 剪贴文本 27.8.5 使用Tektronix模拟功能 27.8.6 使用不同的字体 27.8.7 使用颜色 27.8.8 其他xterm 选项 27.8.9 设定终端机键盘 第二十八章 实用程序和工具 28.1 实用程序 28.2 保存、显示和打印屏幕图像 28.3 使用X的应用程序 28.3.1 文字编辑器——Xedit 28.3.2 邮件/信息处理系统——xmh 28.4 示例和游戏程序 28.4.1 找出通过随机迷宫的路径——maze 28.4.2 担任鼠标指针的大眼睛xeyes 28.4.3 智慧盘游戏——puzzle 28.4.4 打印一个大X标志——xlogo 28.4.5 跳动的多页体——ico 28.4.6 动态几何图案——muncher与plaid 28.5 显示信息和状态的程序 28.5.1 列出X服务程序的特征——xdpyinfo 28.5.2 获取有关窗口的信息 28.5.3 观察X的事件——xev 第二十八章 定制X Windows 系统 29.1 使用X的字体和颜色 29.1.1 字体初步 29.1.2 字体命名 29.1.3 观察特定字体的内容——xfd 29.1.4 保存字体和位置 29.1.5 例子:在你的服务程序中增加新字体 29.1.6 使用X的颜色 29.2 定义和使用图形 29.2.1 系统图形程序库 29.2.2 交互编辑图形——bitmap 29.2.3 编辑图形的其他方法 29.2.4 定制根窗口——xsetroot 29.3 定义应用程序的缺省选项——Resources 29.3.1 什么是资源 29.3.2 XToolkit 29.3.3 管理资源——资源管理器 29.3.4 资源的类型——如何指定值 29.4 实际使用资源 29.4.1 在何处保存资源的缺省值 29.4.2 在服务程序上保存缺省值——xrdb 29.4.3 常见的错误和修正 29.5 定制键盘和鼠标 29.5.1 实际使用转换 29.5.2 转换——格式和规则 29.5.3 转换规范中常见的问题 29.6 键盘和鼠标——对应和参数 29.6.1 键盘和鼠标映射——xmodmap 29.6.2 键盘和鼠标参数设定——xset 29.7 进一步介绍和定制uwm 29.7.1 uwm的新特征 29.7.2 定制uwm 29.8 显示器管理器——xdm 29.8.1 需要做些什么 29.8.2 xdm 29.8.3 xdm的更多信息 29.8.4 uwm配置 附录A GCC命令介绍 附录B 安装X Windows 窗口系统 << 隐藏目录详情

















































- 1
- 2
- 3
- 4
- 5
- 6
- 7

- kelvinjo2012-05-01内容写得有点太精简,理解有点费劲。
- philipyyh2012-03-24就是太老了。。。讲的很清晰
- myproject_12012-03-22内容全面,但是独立PDF不好阅读,总的还是非常感谢
- Robinweihua2012-03-21很好,内同很全面,独立的PDf不影响阅读。
- fengbingchun2012-02-09内容不错,只是每章一个独立的PDF文档。
- 粉丝: 164
- 资源: 370

我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
已下载
下载帮助



