搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
精通UNIX shell脚本编程
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302218951
  • 作      者:
    (美)Randal K. Michael著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2010
收藏
作者简介
    米歇尔(Randal K.MiChael)是UNIX系统管理工作组的高级顾问。他讲授UNI义shell脚本,在企业设置方面编写了大量的shell脚本以解决从系统监控到复制大型数据库等问题和任务。另外,他在该行业有30余年的工作经验,其中15年的时间一直担任UNIX系统管理员,主要解决与AlX、HP-UX、Linux、OpenBSD和Solaris相关的实际问题。
展开
内容介绍
    本书意欲作为学习工具和研究向导,旨在告诉读者怎样一开始就目标清晰地编写shell脚本来解决各种问题。本书大部分shell脚本技术都将7次涉及。每次都从不同角度触及主题,解决不同的问题。我发现这个技巧对于掌握材料是非常有好处的。<br>    每一章的结尾都有练习,让读者编写一个新的脚本,或修改该章中出现的shell脚本。本书不是一本描述解决方案而是描述解决方案怎样实现的书籍。我力劝读者完整地学习完本书,你会受益匪浅。本书涵盖的shell脚本包括Bash、Bourne,但不包括Korn.C shell脚本。更高级的主题包括使用rsync复制数据,利用Dirvish生成快速备份,用记录文件解析数据等。<br>    本书从一些细小的任务解决方案到一些相当高级的概念都有涉及,这使得从高中生和大学生到系统管理员都能从中获益。本书每一部分包含若干章。本书中的shell脚本是完整的shen脚本,这一点有别于市场上其他的shell脚本书。本书对各种解决方案,甚至shell脚本每一部分的微小细节都进行了完整的解释,这都是作者的哲理和心态的真正表达。
展开
目录
第Ⅰ部分 shell脚本基础<br>第1章 脚本编程快速入门和概述 3<br>1.1 区分大小写 3<br>1.2 UNIX特殊字符 3<br>1.3 shell 4<br>1.4 shell脚本 4<br>1.5 函数 4<br>1.6 运行shell脚本 5<br>1.7 shell脚本中的注释和风格 6<br>1.8 控制结构 7<br>1.9 使用break、continue、exit和 return语句 10<br>1.10 here文档 10<br>1.11 shell脚本命令 11<br>1.12 符号命令 13<br>1.13 变量 13<br>1.14 命令行参数 14<br>1.15 shift命令 14<br>1.16 特殊参数$*和$@ 15<br>1.17 双引号"、符号和` 16<br>1.18 在Solaris中使用awk 16<br>1.19 正确使用echo命令 17<br>1.20 shell脚本中的数学 17<br>1.21 内置的数学函数 18<br>1.22 文件权限、suid和sgid程序 19<br>1.23 在远程主机上运行命令 20<br>1.24 设置陷阱 21<br>1.25 用户信息命令 22<br>1.25.1 who命令 22<br>1.25.2 w命令 22<br>1.25.3 last命令 23<br>1.26 ps命令 23<br>1.27 与用户通信 24<br>1.28 统一大写或小写文本以方便测试 24<br>1.29 检测返回代码 25<br>1.30 基于时间的脚本执行 26<br>1.30.1 cron表 26<br>1.30.2 at命令 27<br>1.31 输出控制 28<br>1.31.1 静默运行 28<br>1.31.2 使用getopts解析命令行参数 29<br>1.31.3 使用后台函数创建一个协作进程 30<br>1.32 捕获延迟命令输出 31<br>1.33 逐行处理文件的最快方式 32<br>1.34 循环中使用命令输出 35<br>1.35 邮件通知技术 36<br>1.35.1 使用mail 和mailx 命令 36<br>1.35.2 使用sendmail 命令来发送外发邮件 36<br>1.36 创建一个进度指示器 37<br>1.36.1 一系列圆点 37<br>1.36.2 一条旋转线 38<br>1.36.3 运行时间 39<br>1.37 使用记录文件 39<br>1.38 创建伪随机数 41<br>1.39 检查AlX中的失效磁盘分区 42<br>1.40 自动主机ping 42<br>1.41 高亮显示文件中的特定文本 43<br>1.42 使打印机一直打印 44<br>1.42.1 AIX 的“传统”打印机子系统 44<br>1.42.2 System V和CUPS打印 44<br>1.43 自动进行FTP 文件传输 44<br>1.44 使用rsync复制数据 44<br>1.45 捕获大于$MEG 的文件列表 46<br>1.46 捕获用户的按键操作 46<br>1.47 使用bc实用工具来进行浮点数学运算 47<br>1.48 数基转换 48<br>1.48.1 使用typeset命令 48<br>1.48.2 使用printf 命令 48<br>1.49 使用select 命令创建菜单 49<br>1.50 删除文件中的重复行 51<br>1.51 删除文件中的空白行 51<br>1.52 测试NULL 变量 51<br>1.53 直接访问上一个位置参数$#的值 52<br>1.54 删除命令输出中的列标题 52<br>1.55 数组 53<br>1.56 测试字符串 53<br>1.57 小结 57<br><br>第2章 逐行处理文件的24种方法 59<br>2.1 命令语句 59<br>2.1.1 使用文件描述符 60<br>2.1.2 创建一个在时间测试中使用的大文件 60<br>2.2 逐行处理文件的24种方法 65<br>2.2.1 方法1:cat_while_read_Line 65<br>2.2.2 方法2:while_read_LINE_bottom 66<br>2.2.3 方法3:cat_while_LINE_line 67<br>2.2.4 方法4:while_LINE_line_bottom 68<br>2.2.5 方法5:cat_while_LINE_line_cmdsub2 69<br>2.2.6 方法6:while_LINE_line_bottom_cmdsub2 69<br>2.2.7 方法7:for_LINE_cat_FILE 70<br>2.2.8 方法8:for_LINE_cat_FILE_cmdsub2 70<br>2.2.9 方法9:while_line_outfile 71<br>2.2.10 方法10:while_read_LINE_FD_IN 72<br>2.2.11 方法11:cat_while_read_LINE_FD_OUT 73<br>2.2.12 方法12:while_read_LINE_bottom_FD_OUT 74<br>2.2.13 方法13:while_LINE_line_bottom_FD_OUT 75<br>2.2.14 方法14:while_LINE_line_bottom_cmdsub2_FD_OUT 76<br>2.2.15 方法15:for_LINE_cat_FILE_FD_OUT 77<br>2.2.16 方法16:for_LINE_cat_FILE_cmdsub2_FD_OUT 78<br>2.2.17 方法17:while_line_outfile_FD_IN 78<br>2.2.18 方法18:while_line_outfile_FD_OUT 79<br>2.2.19 方法19:while_line_outfile_FD_IN_AND_OUT 80<br>2.2.20 方法20:while_LINE_line_FD_IN 81<br>2.2.21 方法21:while_LINE_line_cmdsub2_FD_IN 82<br>2.2.22 方法22:while_read_LINE_FD_ IN _AND_OUT 83<br>2.2.23 方法23:while_LINE_line_FD_IN_AND_OUT 84<br>2.2.24 方法24:while_LINE_line_cmdsub2_FD_IN_AND_OUT 86<br>2.3 计时测试各种方法 87<br>2.3.1 计时脚本 87<br>2.3.2 每个方法的计时数据 105<br>2.3.3 计时命令替代方法 113<br>2.4 使用命令输入和使用文件输入的区别 115<br>2.5 小结 115<br>2.6 作业 116<br><br>第3章 自动事件通知 117<br>3.1 自动事件通知的基础 117<br>3.1.1 使用mail和mailx命令 117<br>3.1.2 设置邮件别名 119<br>3.2 外发邮件的问题 120<br>3.2.1 使用.forward文件创建一个“Bounce”账户 122<br>3.2.2 使用sendmail命令发送外发邮件 123<br>3.3 拨号调制解调器软件 124<br>3.4 SNMP 陷阱 124<br>3.5 小结 125<br>3.6 作业 125<br><br>第4章 进度指示器 127<br>4.1 使用一系列圆点来指示进度 127<br>4.2 使用一条旋转线来指示进度 129<br>4.3 使用运行时间来指示进度 131<br>4.4 联合反馈方法 133<br>4.5 其他要考虑的选项 136<br>4.6 小结 136<br>4.7 作业 136<br><br>第Ⅱ部分 程序员、测试员和分析员脚本<br>第5章 使用记录文件 139<br>5.1 记录的概念 139<br>5.1.1 定长记录文件 139<br>5.1.2 变长记录文件 140<br>5.2 处理记录文件 141<br>5.3 记录的任务和记录文件 145<br>5.3.1 定长记录文件的任务 146<br>5.3.2 变长记录文件的任务 147<br>5.4 合并进程 149<br>5.5 合并记录生成shell脚本 152<br>5.6 其他需要考虑的问题 162<br>5.7 小结 162<br>5.8 作业 163<br><br>第6章 自动FTP处理 165<br>6.1 语法 165<br>6.2 自动文件传输和远程目录列表 168<br>6.2.1 使用FTP获得远程计算机上的目录列表 168<br>6.2.2 从远程计算机上获得一个或多个文件 169<br>6.2.3 将一个或多个文件传输到远程计算机 173<br>6.2.4 用变量代替硬编码的密码 176<br>6.2.5 将FTP脚本修改为使用密码 179<br>6.3 加密怎么样 185<br>6.3.1 创建加密密钥 185<br>6.3.2 创建不需要密码的安全shell访问 186<br>6.3.3 安全FTP和安全复制语法 186<br>6.3.4 用autoexpect和expect脚本实现自动FTP 188<br>6.4 其他要考虑的问题 191<br>6.4.1 使用命令行开关项控制执行 191<br>6.4.2 对活动进行记录 192<br>6.4.3 对脚本增加调试模式 192<br>6.4.4 把密码读入shell脚本 192<br>6.5 小结 192<br>6.6 作业 193<br><br>第7章 使用rsync有效复制数据 195<br>7.1 语法 195<br>7.2 普通rsync shell脚本 196<br>7.3 用rsync命令复制多目录文件 197<br>7.4 用rsync复制多文件系统 212<br>7.5 用rsync复制Oracle数据库 224<br>7.6 用rsync复制shell脚本 226<br>7.7 小结 259<br>7.8 作业 260<br><br>第8章 用Expect和autoexpect实现自动交互 261<br>8.1 下载和安装Expect 261<br>8.2 交互脚本或程序会话的基础 263<br>8.3 用autoexpect自动创建Expect脚本 266<br>8.4 使用变量 272<br>8.5 条件测试 274<br>8.5.1 Expect中的case语句 274<br>8.5.2 Expect中的if…then…else循环 280<br>8.5.3 Expect中的while循环 281<br>8.5.4 Expect中的for循环 282<br>8.5.5 Expect中的函数 284<br>8.6 在Sun Blade Chassis和JumpStart中使用Expect脚本 285<br>8.7 小结 290<br>8.8 作业 290<br><br>第9章 查找大文件和特定类型的文件 291<br>9.1 语法 291<br>9.2 记住文件和目录的许可权限 292<br>9.3 别因文件的大小而吃惊 292<br>9.4 创建脚本 293<br>9.5 其他要考虑的问题 298<br>9.6 小结 298<br>9.7 作业 298<br><br>第10章 进程监视与进程启动前、启动时和进程停止后事件 301<br>10.1 语法 301<br>10.2 监视进程的启动 302<br>10.3 监视进程的结束 303<br>10.4 当进程启动或停止时进行监视和记录 308<br>10.5 进程监视的定时执行、显示每个进程的PID、为事件打上时间戳和定时功能 312<br>10.6 其他要考虑的问题 330<br>10.6.1 一般性用途 330<br>10.6.2 要考虑的修改事项 330<br>10.7 小结 330<br>10.8 作业 331<br><br>第11章 伪随机数和数据的生成 333<br>11.1 随机数的产生 333<br>11.2 方法 334<br>11.2.1 方法1:利用PID和RANDOM shell变量产生一个伪随机数 334<br>11.2.2 方法2:产生一个在0到32767之间的随机数 335<br>11.2.3 方法3:产生1到用户定义的最大值之间的数字 335<br>11.2.4 方法4:产生位于1和用户定义的最大数之间的固定长度的数 336<br>11.2.5 方法5:使用/dev/random和/dev/urandom字符专用文件 338<br>11.3 创建伪随机数的shell脚本 341<br>11.4 创建唯一的文件名 346<br>11.5 创建一个由随机字符组成的文件 353<br>11.6 其他要考虑的问题 359<br>11.7 小结 360<br>11.8 作业 360<br><br>第12章 创建伪随机密码 361<br>12.1 随机性 361<br>12.2 创建伪随机密码 362<br>12.3 语法 362<br>12.4 建立密码创建脚本 363<br>12.4.1 出现顺序 364<br>12.4.2 脚本主体的开始 375<br>12.5 其他需要考虑的问题 387<br>12.5.1 密码报表 387<br>12.5.2 选用哪个密码 387<br>12.5.3 其他用途 387<br>12.6 小结 388<br>12.7 作业 388<br><br>第13章 浮点数学运算和bc工具程序 389<br>13.1 语法 389<br>13.2 使用bc创建shell脚本 390<br>13.2.1 创建float_add.ksh shell脚本 390<br>13.2.2 整数和浮点数的测试 395<br>13.2.3 用bc命令创建一个数学运算语句 397<br>13.2.4 使用here文档 398<br>13.2.5 创建float_subtract.ksh shell脚本 398<br>13.2.6 使用getopts解析命令行 403<br>13.2.7 为bc工具创建数学运算语句 405<br>13.2.8 here文档和提交结果 406<br>13.2.9 创建float_multiply.ksh shell脚本 407<br>13.2.10 解析命令行以获取有效数字 412<br>13.2.11 创建float_divide.ksh shell 脚本 413<br>13.2.12 创建float_average.ksh shell 脚本 420<br>13.3 其他需要考虑的问题 424<br>13.4 小结 425<br>13.5 作业 425<br><br>第14章 数制转换 427<br>14.1 语法 427<br>14.1.1 例1:将十进制转换为十六进制 428<br>14.1.2 例2:将八进制转换为十六进制 428<br>14.1.3 例3:十进制数转换为八进制 429<br>14.1.4 例4:将十进制转换为十六进制 429<br>14.2 利用脚本解决问题 429<br>14.2.1 二进制转换为十六进制的shell脚本 429<br>14.2.2 十进制转换为十六进制的脚本 432<br>14.2.3 基于十六进制IP地址产生软件授权码的脚本 436<br>14.2.4 在任何数制之间进行转换的脚本 440<br>14.2.5 利用getopts分析命令行 445<br>14.2.6 继续完善脚本 446<br>14.2.7 主程序的开始 448<br>14.3 转换数制的简单、可交互的脚本 449<br>14.4 利用bc工具进行数制转换 454<br>14.5 其他需要考虑的问题 460<br>14.6 小结 460<br>14.7 作业 460<br><br>第15章 hgrep:高亮显示的grep脚本 461<br>15.1 反白显示控制 461<br>15.2 创建hgrep.Bash shell脚本 463<br>15.3 其他需要考虑的问题 469<br>15.4 小结 470<br>15.5 作业 470<br><br>第16章 监视进程和应用程序 471<br>16.1 监视本地进程 471<br>16.2 利用安全shell和远程shell进行远程监控 473<br>16.2.1 检查活动的Oracle数据库 479<br>16.2.2 使用autoexpect产生一个expect脚本 482<br>16.2.3 检查HTTP服务器/应用程序是否运行 487<br>16.3 等待进程执行完毕 488<br>16.4 其他需要考虑的问题 489<br>16.4.1 echo的正确用法 489<br>16.4.2 应用程序API和SNMP陷阱 490<br>16.5 小结 490<br>16.6 作业 491<br><br>第Ⅲ部分 系统管理员脚本<br>第17章 文件系统的监视 495<br>17.1 语法 495<br>17.2 为监视添加异常功能 500<br>17.3 剩余空间方法 506<br>17.4 使用带异常功能的MB剩余空间方法 509<br>17.5 已用百分比——MB剩余空间和大型文件系统 513<br>17.6 在AIX、Linux、HP-UX、OpenBSD和Solaris上运行文件系统脚本 522<br>17.6.1 不同操作系统命令语法和输出之间的差异 523<br>17.6.2 编写中性shell(shell-neutral)脚本 528<br>17.7 其他应考虑的问题 537<br>17.7.1 事件通知 537<br>17.7.2 自动执行 538<br>17.7.3 修改egrep语句 538<br>17.8 小结 538<br>17.9 作业 539<br><br>第18章 监视页面调度和交换空间 541<br>18.1 语法 542<br>18.1.1 AIX 的lsps命令 542<br>18.1.2 HP-UX下的swapinfo命令 543<br>18.1.3 Linux下的free命令 543<br>18.1.4 OpenBSD下的swapctl命令 544<br>18.1.5 Solaris下的swap命令 544<br>18.2 编写shell脚本 544<br>18.2.1 AIX分页监视器 544<br>18.2.2 HP-UX交换空间监视器 549<br>18.2.3 Linux交换空间监视器 554<br>18.2.4 OpenBSD交换空间监视器 557<br>18.2.5 Solaris交换空间监视器 560<br>18.2.6 5合1分页和交换空间监视器 564<br>18.3 其他需要考虑的问题 572<br>18.3.1 事件通知 572<br>18.3.2 日志文件 572<br>18.3.3 预约监视 572<br>18.4 小结 572<br>18.5 作业 573<br><br>第19章 系统负荷监视 575<br>19.1 在Linux上安装系统统计程序 576<br>19.2 语法 577<br>19.2.1 uptime命令的语法 578<br>19.2.2 iostat语法 579<br>19.2.3 sar的命令语法 582<br>19.2.4 vmstat命令的语法 584<br>19.3 利用脚本解决问题 587<br>19.3.1 使用uptime命令测量系统负荷 587<br>19.3.2 使用sar命令测量系统负荷 591<br>19.3.3 使用iostat命令测量系统负荷 596<br>19.3.4 使用vmstat测量系统负荷 601<br>19.4 其他需要考虑的问题 604<br>19.4.1 尝试为用户检测任何可能的问题 605<br>19.4.2 向用户显示CPU占用程序列表 605<br>19.4.3 收集用于描绘曲线的大量数据 605<br>19.5 小结 605<br>19.6 作业 606<br><br>第20章 对陈旧磁盘分区的监视(AIX特有) 607<br>20.1 AIX逻辑卷标管理器 607<br>20.2 命令和方法 608<br>20.2.1 磁盘子系统命令 608<br>20.2.2 方法1:在LV级监视陈旧PP 608<br>20.2.3 方法2:在PV级监视陈旧分区 613<br>20.2.4 方法3:带重新同步功能的VG、LV和PV监视 616<br>20.3 其他需要考虑的问题 622<br>20.3.1 SSA磁盘 622<br>20.3.2 日志文件 623<br>20.3.3 自动执行 623<br>20.3.4 事件通知 623<br>20.4 小结 623<br>20.5 作业 624<br><br>第21章 打开/关闭SSA磁盘识别指示灯 625<br>21.1 语法 625<br>21.1.1 hdisk转换为pdisk 626<br>21.1.2 标识一个SSA磁盘 626<br>21.2 脚本编写过程 626<br>21.2.1 用法函数和用户反馈函数 627<br>21.2.2 控制函数 630<br>21.2.3 完整的shell脚本 635<br>21.3 其他需要考虑的问题 646<br>21.3.1 错误日志 646<br>21.3.2 交叉引用 646<br>21.3.3 Root访问和sudo 646<br>21.4 小结 647<br>21.5 作业 647<br><br>第22章 带失败通知的自动主机ping测试 649<br>第23章 制作系统配置镜像 665<br>第24章 sudo的编译、安装、配置和使用 697<br>第25章 脱离打印队列地狱:保持打印机持续工作 727<br>第26章 那些讨厌的SOX审计 765<br>第27章 使用Dirvish和rsync创建快照类型的备份 779<br>第28章 对用户按键进行监视和审计 841<br>附录A Web站点上的内容 859
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证