SlideShare a Scribd company logo
2010 年 12 月号 总第三期

本期主题:运维与开发   | 关键字:Shell, 脚本, 生产环境, Crontab
内容目录

人物——

专访资深系统管理员曹江华:从车间走入 Linux 世界.......................................................................3

交流——

系统学习 Linux 的 11 点建议................................................................................................................. 5       杂志策划:51CTO 系统频道
如何检测一台机器是否宕机?...............................................................................................................7                本期主编:杨赛
                                                                                                                                             Logo 制作:高鹏飞
                                                                                                                                             封面制作:徐泽琼
八卦,趣闻与数字 2010.11 - 2010.12................................................................................................9
                                                                                                                                             技术顾问:曹江华,黄琨,李洋
                                                                                                                                             特别顾问:王文文,杨文飞

本期专题:运维与开发——                                                                                                                                 交流圈子:
                                                                                                                                             http://g.51cto.com/linuxops
运维人员应该掌握哪些常用技术.........................................................................................................11
                                                                                                                                             邮件群组:
是否应该允许开发人员进入生产环境?............................................................................................13                              groups.google.com/group/linuxops-cn

Linux 计划任务:听酒哥分享 Crontab 使用心得............................................................................15                                  订阅方式:发送 Email 到
                                                                                                                                             linuxops-cn+subscribe@googlegroups.com
Shell 学习笔记——总括篇.................................................................................................................. 18
                                                                                                                                             专题页面:
25 个必须记住的 SSH 命令..................................................................................................................21         http://os.51cto.com/art/201011/233915.htm
                                                                                                                                             http://down.51cto.com/zt/71
工具——
                                                                                                                                             投稿信箱:
调查服务器响应时间的利器 tcprstat.................................................................................................24                     yangsai@51cto.com

最牛 B 的 Linux Shell 命令...................................................................................................................25
人物
                                                        People


   1999 年 在 计 算 机 世 界 报 刊 看 到 了 一 点 点 关 于 Linux 的 介 绍 , 我 被 其 中 “ 源 代 码 全 部 开     Linux 方面的学习)。
  放”所吸引。
                                                                                   51CTO:首先简单的介绍一下您自己吧。能
                                                                                  否简单的介绍一下您在运维领域的经历?比如
专访资深系统管理员曹江华:从车间走入 Linux 世界                                                       什么时候进入这行,现在在哪里工作等等。
                                                                                    曹江华:我毕业于工科大学机电一体化专业,
                                                                                  当时从事的是 CAD 设计。后来开始从事小型数
                                                                 采访、整理/杨赛
                                                                                  据 库 的 应 用 。 1999 年 开 始 从 事 构 建 网 络 、 管
                                                                                  理 维 护 、 数 据 库 管 理 工 作 , 1999 年 后 开 始 接
                                                                                  触 LINUX 成 为 Linux 系 统 管 理 员 。 目 前 关 注
                    人物简介
                                                                                  Linux 和 网 络 安 全 管 理 。 现 在 是
                        曹江华, 1999 年开始从事构建网络、管理维护、数据库管理工作 。                        linuxpilot(现在是唯一的中文 Linux 专业
                      1999 年后开始接触 LINUX ,将工作中的经验总结后已出版《 Linux 服                   纸媒体了)的专栏作家和自由撰稿人。
                      务器安全策略详解》,《 Linux 服务器安全策略详解》(第二版),                           51CTO:您最初接触系统管理员这方面的工
                      《Red Hat Enterprise Linux 5.0 服务器构建与故障排除》,《 Linux 系         作是怎样的情况?看您的一些介绍,好像您一
                      统最佳实践工具:命令行技术》四本堪称 Linux 系统管理员日常工具书                         开始是从事 CAD 设计的吧。能跟我们描述一下
                                                                                  当时您是如何进入运维这个领域的么?您当时
                      的热销图书,目前关注 Linux 和网络安全管理。
                                                                                  的工作环境是怎样的?如何学习一项新的技能
                                                                                  呢?


  随    着 IT 技术在上世纪 90 年代开始在中             是那时的人们都充满着对技术的热情,投入到                      曹江华:我进入计算机系统管理员非常偶然。
       国普 及, 这个 产业 也簇 生了 国内 第一           新技术的学习和使用当中。                             大学学的机电一体化专业计算机课程只有两门
批系统管理员、网络管理员的诞生。相对于现                                                              (for77 计算机语言和 CAD 绘图)。工作以后
                                           国 内 著 名 的 Linux 专 家 曹 江 华 老 师 , 就 是
在 无 所 不 在 的 以 Windows 为 基 础 的 企 业 网 络                                             到了北汽集团发动机工厂生产线,一干就是三
                                         1999 年 投 入 到 运 维 领 域 的 。 51CTO 系 统 频 道
和 奔 跑 在 无 数 Linux 服 务 器 上 的 网 站 , 90 年                                            年。第一年实习。后边两年是当班车间主任。
                                         近日对曹江华老师进行了邮件专访,请曹江华
代 的 IT 基 础 架 构 还 处 于 非 常 原 始 的 状 态 。 互                                            这三年的工作几乎和计算机没有任何关系。三
                                         老师谈了谈自己的职业发展经历。一方面让大
联网进入国内差不多是 1995 年左右,而 1999                                                        年后工厂发动机工厂生产线停产了,我进入北
                                         家了解一下那个时候的系统运维的工作状况,
年 正 是 IT 行 业 飞 速 发 展 的 一 个 转 折 点 。 那 个                                            汽的计算机中心。其实我当时也没什么关系,
                                         另一方面也给现在的系统运维们分享一些学习
                                                                                  那时国有企业效益太差了,分配来的计算机专
时候的技术人们,无论是开发者还是运维们,                     经验(这些经验之谈可能不仅仅影响到你在
                                                                                  业的大学生全走了,实在没有人可用了;因为
虽然可以获取的资讯和技术知识相对贫乏,但

                                                           3                                   http://g.51cto.com/linuxops/
                                                                                                 http://os.51cto.com/linux/
                                                                                                 投稿信箱:yangsai@51cto.com
人物
                                                       People


我工厂生产线三年,一直是劳模,领导说你去                      曹江华:在系统运维领域多年,感觉还是在                    曹江华:写过这么多文章和书籍,对自己收
干干吧,我就去了。刚开始是 CAD 绘图,这个                 北汽集团计算机中心的五年印象最深刻。当时                    获最大是理论知识的学习。我的专业不是学计
大学学过,当时几乎都忘了用三个月时间重新                    企业内已经建立了网络环境,可是那时国有企                    算机,刚开始就是使用 Linux、Solaris 等系
学 习 。 1997 年 开 始 使 用 dos 环 境 的          业效益太差了根本没有条件升级计算机。当时                    统,并没有理论基础。写过文章和书籍过程中
DbaseIII 数据库,后来是 Foxbase 数据库,           win 95 已经问世了,可是我们的计算机配置                 看了许多工具书,等于自学一遍计算机理论。
现在可能计算机专业同学可能都没人知道了。                    大多是 386-486 ,只有几台 586 还是领导办             当然,我所涉及的主要是类 Unix 操作系统。
  1999 年 在计 算机 世 界 报刊 看 到 了一 点点 关       公 打 字 用 。 我 在 386 上 运 行 windows 几 乎 跑
                                                                                  51CTO:您也是经历过很多技术变迁的老系
于 Linux 的 介 绍 , 我 被 其 中 “ 源 代 码 全 部 开   不起来,运行 linux 倒是没有什么影响。我就
                                                                                统 管 理 员 了 , 从 Netware , IBM 和 HP 的
放”所吸引。我有点不敢相信,因为当时正在                    是这样开始了 Linux 之路。
                                                                                Unix , Sun 的 Solaris , 到 Windows NT 和
学习编程,正苦于为找不到系统代码而发愁。                     51CTO : 您 对 Linux 和 Solaris 系 统 写 过    Linux,您都或多或少接触或了解过。您自己
从那以后,每一份杂志我都要浏览一下有没有                    不少文章,也出版过好几本书籍了。最初开始                    是如何看待并适应这种技术变迁的?有没有什
Linux 方面的消息。我在没有电脑、连 Win32              写这方面的文章,是有什么契机么?                        么建议提给现在一些年轻的系统管理员们?
操作都不熟练的的情况下,买了一本《 Linux
                                         曹江华:我开始写作是看到 2000 年《开放                   曹江 华: 其实 我学 习使 用的 主 要 是类 Unix
从入门到精通》,然后安装《微电脑世界》随
                                        系统世界》创刊号,我把自己写的两篇 Linux                 操作系统。要说建议,这里有一篇我发表在
书 赠 送 的 蓝 点 Linux ( 51CTO 编 辑 注 : 蓝
                                        配置总结的稿件发送给他们,马上他们的编辑                    2005 年 9 月 的 《 网 管 员 世 界 》 的 一 篇 文 章 ,
点 /BluePoint 是 那 个 时 候 红 极 一 时 的 中 国
                                        联系我文章也发表在第四期上。当时 Linux 用                感觉可以当作给现在一些年轻的系统管理员们
Linux 发行版,只用了半年就在纳斯达克上市,
                                        户很少,文章奇缺。现在看起来自己写的两篇                    经验。
市值 4 亿美元。不过后来由于种种原因而以出
                                        稿件是 ABC 之类扫盲文章。从此之后开始了和                   (接下篇)
售作为终结,所以现在的 Linux 用户们可能没
                                        《开放系统世界》长达七年的合作,我和国晓
听说过这个发行版)。我硬是把这本书从头到                                                            推荐文章:
                                        平编辑合作一共写了文章 147 篇共 80 多万字。
尾看了一遍,终于搞明白了什么是分区、什么
是 mount。因为我没有学习过 Windows,所以               后来又开始和网管员世界、 IT168、IBM 开
和其他用户相比,对命令行并不排斥。对于我                    发者频道、计算机世界、中国计算机报、
来 说 感 觉 Windows 系 统 和 Unix 、 Linux 是    51CTO、微电脑世界、天极网、IT 专家网等十
一样的,没有什么不同。                             多家媒体合作,加起来也有 200 多篇文章 100
                                        万字。
 51CTO:回顾您在系统运维领域这么多年的
经历,您觉得哪段时间是您成长最快的?那段                     51CTO:撰写过这么多文章和书籍,您觉得
时间有没有什么记忆深刻的人或事,或者什么                    对您自己收获最大的是什么?
特别的经历或机遇?

                                                          4                                   http://g.51cto.com/linuxops/
                                                                                                http://os.51cto.com/linux/
                                                                                                投稿信箱:yangsai@51cto.com
交流
                                                        Interact


    从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。                                               passwd , su, umask , chgrp, chmod, chown,
                                                                                     chattr, sudo, pswho
                                                                                    三、选择一本好的工具书
系统学习 Linux 的 11 点建议                                                                   工具书对于学习者而言是相当重要的。一本
                                                                                    错误观念的工具书却会让新手整个误入歧途。
                                                                        文/曹江华       目前国内关于 Linux 的书籍有很多不过精品的
                                                                                    不 多 , 笔 者 强 烈 建 议 阅 读 影 印 本 的
                                                                                    “O'Reilly 原版 Linux 图书”,而且出版社
                                                                                    还提供了一个非常好的路线图:
                                                                                      http://www.oreilly.com.cn/guide/guide_linux.php
一、从基础开始                                  不 同 版 本 的 Linux 命 令 数 量 不 一 样 , 这 里
                                                                                    四、选择一个适合你的 Linux 发行版本
  常 常 有 些 朋 友 在 Linux 论 坛 问 一 些 问 题 ,   笔者把它们中比较重要的和使用频率最多的命
                                        令,按照它们在系统中的作用分成几个部分介                          目 前 全 球 有 超 过 1 百 多 个 Linux 发 行 版 本,
不过,其中大多数的问题都是很基础的。例如
为什么我使用一个命令的时候,系统告诉我找                    绍给大家,通过这些基础命令的学习我们可以                        在国内也能找到十几个常见版本。如何选择请
不到该目录,我要如何限制使用者的权限等问                    进一步理解 Linux 系统:                             根 据 你 的 需 求 和 能 力 , Redhat Linux 和
题,这些问题其实都不是很难的,只要了解了                    安装和登录命令:                                    Debian Linux 是网络管理员的理想选择。
Linux 的 基 础 之 后 , 应 该 就 可 以 很 轻 易 的 解   login, shutdown, halt, reboot, mount,       五、养成在命令行下工作的习惯
决掉这方面的问题。而有些朋友们常常一接触                     umount, chsh
                                                                                      一定要养成在命令行下工作的习惯,要知道
Linux 就 是 希 望 构 架 网 站 , 根 本 没 有 想 到 要     文件处理命令:
                                                                                    X-window 只是运行在命令行模式下的一个应
先了解一下 Linux 的基础。这是相当困难的。                file, mkdir, grep, dd, find, mv , ls ,
                                         diff, cat, ln                              用程序。在命令行下学习虽然一开始进度较慢
二、Linux 命令是必须学习的                        系统管理相关命令:                                   但是熟悉后,您未来的学习之路将是以指数增
                                                                                    加的方式增长的。从网管员来说,命令行实际
  虽 然 Linux 桌 面 应 用 发 展 很 快 , 但 是 命 令   df, top, free, quota , at, lp, adduser,
                                        groupadd kill, crontab, tar, unzip,         上就是规则,它总是有效的,同时也是灵活的
在 Linux 中依然有很强的生命力。Linux 是一
                                        gunzip , last                               即使是通过一条缓慢的调制解调器线路,它也
个命令行组成的操作系统,精髓在命令行,无
                                        网络操作命令:                                     能操纵几千公里以外地远程系统。
论图形界面发展到什么水平这个原理是不会变
的,Linux 命令有许多强大的功能:从简单的                 ifconfig, ip , ping , netstat , telnet,     六、选择一个适合你的 Linux 社区
磁盘操作、文件存取、到进行复杂的多媒体图                     ftp, route, rlogin rcp , finger , mail ,
                                         nslookup                                     随 着 Linux 应 用 的 扩 展 , 出 现 了 不 少
象和流媒体文件的制作。
                                        系统安全相关命令:                                   Linux 社 区 。 其 中 有 一 些 非 常 优 秀 的 社 区 :

                                                            5                                         http://g.51cto.com/linuxops/
                                                                                                        http://os.51cto.com/linux/
                                                                                                        投稿信箱:yangsai@51cto.com
交流
                                                       Interact


www.linuxforum.net 、 http://www.chin     明的是你要有周全的思考,准备好你的问题,                      掌 握 vi,gcc,gdb 等 常 用 编 辑 器 , 编 译 器 ,
aunix.net/ , 但 是 这 几 个 论 坛 往 往 是 Linux   不要草率的发问,否则只会得到到草率的回答                     调试器 。
高手的舞台,如果在探讨高级技巧的论坛张贴                     或者根本得 不到任何答案。最好先搜寻一下                      理 解 shell 别 名 、 管 道 、 I/O 重 定 向 、 输
非常初级的问题经常会没有结果。                          论坛是否有您需要的文章。这样可以获得事半                     入和输出以及 shell 脚本编程。
                                         功倍的效果。
七、勤于实践                                                                               学习 Linux 环境下的组网。
  要增加自己 Linux 的技能,只有通过实践                 九.用 Unix 思维学习 Linux                      访谈原文:
来实现了。所以,赶快找一部计算机,赶快安                       Linux 是参照 Unix 思想设计的,理解掌握              http://os.51cto.com/art/201012/236245.htm
装 一 个 Linux 发 行 版 本 , 然 后 进 入 精 彩 的      Linux 必 须 按 照 Unix 思 维来 进行 。 思 想 性 的     《系统学习 Linux 的 11 点建议》一文最初刊于 2005
Linux 世界。对 Linux 命令熟悉后,可以开始              转变比暂时性的技术提高更有用,因为他能帮                     年 9 月的《网管员世界》。
搭建一个小的 Linux 网络,这是最好的实践方                 助你加快学习速度。
法。Linux 是网络的代名词,Linux 网络服务
                                         十.学习专业英文
功能非常强大,不论是邮件服务器、 Web 服务
器、DNS 服务器等都非常完善。当然你不需搭                     如果你想深入学习 Linux,看不懂因为文档
建所有服务,可以慢慢来。                             实在是太难了。写的最好的,最全面的文档都
                                         是英语写的,最先发布的技术信息也都是用英
八、如何得到联机帮助                               语 写 的 。 安 装 一 个 新 的 软 件 时 先 看 README ,
 主 流 Linux 发 行 版 都 自 带 非 常 详 细 的 文 档     再看 INSTALL,然后看 FAQ,最后才动手安装,
(包括手册页和 FAQ),从系统安装到系统安                   这样遇到问题就知道为什么。
全,针对不同层次的人的详尽文档,仔细阅读
                                         十一.最后是 Linux 学习的路线图
文档后 40%问题都可在此解决。
                                       掌握至少 50 个以上的常用命令。
  查 阅 经 典 工 具 书 和 Howto , 特 别 是 Howto
是 全 球 数 以 万 计 的 Linux 、 Unix 的 经 验 总 结 熟 悉 Gnome/KDE 等 X-windows 桌 面 环 境
非常有参考价值通常 40%的问题同样可以解决。 操作 。
  如果上面的措施没有解决问题,此时你就需                  掌握.tgz、.rpm 等软件包的常用安装方法
要 Linux 社区的帮助了。Linux 的使用者一般               学习添加外设,安装设备驱动程序(比如网
都是专业人士,他们有着很好的电脑背景且愿                     卡)
意协助他人,Linux 高手更具有鼓励新手的文                    熟悉 Grub/Lilo 引导器及简单的修复操作 。                         Linux 学习图书路线图
化精神。如何在 Linux 社区获得帮助,需要说
                                           熟悉 Linux 文件系统 和目录结构。

                                                          6                                         http://g.51cto.com/linuxops/
                                                                                                      http://os.51cto.com/linux/
                                                                                                      投稿信箱:yangsai@51cto.com
交流
                                                   Interact


    首先必须明确,理论上检测另外一台机器是否宕机是无法做到的。                                           工作机 Lease 失效,可以将工作机上的服务迁
                                                                            移到集群中的其它机器,这时因为工作机发现
                                                                            自己 Lease 失效会主动停止服务。当然,这里
如何检测一台机器是否宕机?                                                               需要注意,由于总控节点和工作机的时钟可能
                                                                            不一致且有网络延迟,总控节点上的 Lease 超
                                                                            时时间要长,也就是说,如果工作节点的
                                                                 文/日照
                                                                            Lease 超 时 时 间 是 12 秒 , 总 控 节 点 可 能 需 要
                                                                            13 秒后才能确认工作节点已经停止了服务,从
                                                                            而避免数据不一致问题。

  编 者按:本文来自淘宝核心系统运维团
    队博客,文中描述的宕机检测方式适
                                      Fischer 的论文。可以简单理解如下: A 机器
                                      往 B 机器发送心跳包,如果 B 机器不发送响应,
                                                                              同构节点之间的选主也有一个宕机检测问题。
                                                                            比如总控节点宕机,备份节点需要能够检测并
用于大规模集群环境,但原理仍是基于双节点                  A 无 法确定 B 机器是宕 机了还是 过于 繁忙 ,由          升级为主节点继续对外服务。 Mysql 数据库经
有需求的朋友们可以借鉴。                          于 A 和 B 两台 机器的时 钟可能不 同 步, B 机器        常 采 用 Heartbeat + DRBD + Mysql 的 高
  检测一台机器是否宕机的应用场景如下:                  也无法确定多久没有收到 A 机器的心跳包可以                可用性方案,据说能够达到 3 个 9 的高可用性,
                                      认为必须停止服务。因此, A 机器没有办法确                主 节 点 和 备 节 点 维 持 Heartbeat , 当 提 供 服
 1, 工作机器宕机,总控节点需要能够检测
                                      定 B 机器已经宕机或者采取措施强制 B 机器停              务 的 主 节 点 出 现 故 障 时 , 备 节 点 的
到并且将原有服务迁移到集群中的其它节点。
                                      止服务。                                  Heartbeat 检 测 到 主 节 点 没 有 心 跳 ( 例 如 ,
 2, 总 控 节 点 宕 机 , 总 控 节 点 的 备 份 节 点                                         Ping 不 通 主 节 点 ) , 备 节 点 自 动 接 管 虚 拟
                                        当然,工程实践中,由于机器之间会进行时
(一般称为 Slave)需要能够检测到并替换成                                                     IP,升级为主节点提供 Mysql 读写服务。
                                      钟同步,我们总是假设 A 和 B 两台机器的本地
主节点继续对外服务。
                                      时钟相差不大,比如相差不超过 0.5 秒。这样,                由 于 Heartbeat 检 测 机 器 主 节 点 宕 机 不 可
 检测一台机器是否宕机必须是可靠的。在大                  我 们 可 以 通 过 Lease 机 制 进 行 宕 机 检 测 。   靠,这个方案存在众所周知的脑裂问题,即集
规模集群中,机器可能出现各种异常,比如停                  Lease 机制就是带有超时时间的一种授权。假               群中可能同时存在多个主节点同时提供服务。
电,磁盘故障,过于繁忙导致假死等。对于机                                                        解决这个问题本质上还是需要引入仲裁节点,
                                      设总控节点需要检测工作节点是否宕机,总控
器假死,如果总控节点认为机器宕机并将服务                                                        比 如 Heartbeat + DRBD 方 案 中 引 入 Fence
                                      节点可以给工作节点发放 Lease 授权,工作节
迁移到其它节点,假死的机器又认为自己还可                                                        节点使出现问题的节点从集群中脱离,或者引
                                      点持有有效期内的 Lease 才允许提供服务,否
以提供服务,则会出现多个节点服务同一份数                                                        入 分 布 式 锁 服 务 , 比 如 Chubby 的 开 源 实 现
                                      则主动下线停止服务。工作节点的 Lease 快要
据而导致数据不一致的情况。
                                      到期的时候向总控节点重新申请 Lease(一般               Zookeeper 服 务 。 分 布 式 锁 服 务 实 现 主 节 点
 首先必须明确,理论上检测另外一台机器是                  称为 renewLease),总控节点定时检测所有             选举 大致 如下:主 节点和备节点到 Chubby 中
否宕机是无法做到的,有兴趣的同学可以参考                  工作机的 Lease 授权是否合法,如果发现某台              抢锁,抢到锁的节点在锁的有效期 (Lease 期)

                                                      7                                   http://g.51cto.com/linuxops/
                                                                                            http://os.51cto.com/linux/
                                                                                            投稿信箱:yangsai@51cto.com
交流
                                                      Interact


内提供服务,当主节点锁的 Lease 快要到期时,                                                       稳定更新中。
主节点申请延长锁的超时时间,正常情况下分 小阅读:谁在编写 Linux 内核?                                           正如最近五个内核版本提交的代码数量下降
布式锁服务总是优先满足主节点的请求,当主                                                            一样,为 Linux 内核贡献代码的企业数量也在
节点出现故障时,备节点能够抢到锁切换为主                  根 据 2010 年 “ 谁 在 写 Linux” 报 告 显 示 ,       下 降 。 2.6.30 内 核 已 知 的 代 码 贡 献 企 业 是
节点提供服务。                             提 交 给 2.6.35 内 核 的 代 码 量 比 去 年 发 布 的        245 家 ,但 到 2.6.35 版 本时 , 贡 献 代 码 的 企
  最 后 还 有 一 个 问 题 , 假 设 总 控 节 点 通 过 2.6.30 内 核 的 代 码 量 少 18% , 过 去 一 年 来 提      业数量就下降到 184 了。
Lease 机制检测工作节点是否宕机,这种方案 交的内核代码减少的原因很多,包括阶段代码
                                                                                 一 些 知 名 的 Linux 内 核 代 码 贡 献 企 业 也 发
是可靠的,不过当总控节点宕机时,如果不采 新的提交流程。
                                                                                生了细微的变化。
取任何措施,集群中的所有工作节点都将因为                     报告解释了从 2.6.28 内核开始的代码阶段
无法重新申请 Lease 而停止服务,这就是带有                                                         ◆贡献最 多的 仍然 要数 Red Hat ,2.6.30
                                        树。最初的状态树启动了一个进程,将大量树
总控节点的设计固有的脆弱性,某个设计或者                    外的代码合并到主 Linux 内核中。根据今年的                内核有 12%的代码变化都是 Red Hat 贡献的
编码的错误都有可能造成严重的影响。解决这                    报告 显示 ,从 2.6.31 开发 周期可以 看出 ,因              ◆英特尔次之,贡献了 7.8%
个问题一般会有一个叫做 Grace Period 的机             积压下来的大量代码需要处理,这一进程就放                       ◆Novell 贡献了 5%
制,工作节点 Lease 超时时将停止服务,但是                慢了。报告还指出,新的驱动程序经由阶段树
                                                                                   ◆IBM 贡献了 4.8%
工作节点并不一开始就重启或者下线,而是处                    源源不断进入主 Linux 内核。
于一种危险状态(称为 Jeopardy),这种状态                                                         ◆ 从 2.6.30 内 核 开 始 , 诺 基 亚 贡 献 了
                                          虽然新代码的提交步伐和去年相比不在同一
持 续 一 个 Grace Period , 比 如 45 秒 。 如 果                                           2.3% 的代 码 , 德 克 萨斯 仪 器 提 交了 1.5% 的代
                                        水平,但整体来看进展还是不错。报告指出,
在 Grace Period 内 总 控 节 点 重 启 , 工 作 节                                            码,无线厂商 Atheros 添加了 1.4% 的 Linux
                                        自 2.6.30 内 核 开 始 , 每 天 有 9058 行 代 码 添
点和总控节点重新联系上从而可以切换为正常                                                            内核代码。
                                        加到 Linux 内核,包括周末和节假日。
状态继续提供服务。                                                                         ◆ 相 反 , Ubuntu Linux 背 后 的
                                       过 去 五 年 半 以 来 , 从 2005 年 的 2.6.11 内
    如果需要较好地理解宕机及选举相关的问题, 核 到 2010 年 的 2.6.35 内 核 , 平 均 每 一 小 时                  Canonical 在 最 近 五 个 Linux 内 核 版 本 中 所
可 以 阅 读 并 思 考 Paxos 相 关 的 论 文 , 比 如                                             做的贡献却很少。
                                     就会有 4.02 个补丁应用到内核树上。
Paxos made simple, The Part-time                                                原文:
Parliament, Paxos made live, Paxos     内核发布后,就进入维护期,根据需要更新
                                                                                http://os.51cto.com/art/201012/236379.htm
made practical, Chubby 等。            补丁。有些版本的内核更新补丁会多一点,如
                                     2.6.32 内 核 是 过 去 五 年 来 更 新 补 丁 最 多 的 一     推荐阅读:
原文:
                                     个 版 本 ( 报 告 指 出 2.6.32 内 核 总 共 有 1793      Linux 内核入门,包教会
http://rdc.taobao.com/blog/cs/?p=708
                                     个 修 复 补 丁 ) 。 McPherson 指 出 , Linux        http://os.51cto.com/art/201007/213583.htm
                                     2.6.32 内 核 经 过 长 时 间 的 补 丁 修 复 , 现 在 正


                                                          8                                       http://g.51cto.com/linuxops/
                                                                                                    http://os.51cto.com/linux/
                                                                                                    投稿信箱:yangsai@51cto.com
八卦
                                                                    News


    在 2010 年 11 月 -12 月之间,发生了下面这些事……                                                                  【开源的商业模式】麦克尼利最近表示甲骨
                                                                                                    文 CEO 拉里埃里森是一个伟大的资本家,但并
                                                                                                    不是一个“好的”资本家。卖掉 SUN 之后麦克
八卦,趣闻与数字 2010.11 - 2010.12                                                                          尼利立场有了很大的转变,似乎不再看好开源
                                                                                                    的发展前景。
                                                                                                          http://os.51cto.com/art/201011/233627.htm
                                                                     收集整理/51CTO 系统频道
                                                                                                     【 Linux 病 毒 】 第 一 个 Linux 系 统 上 的 病
                                                                                                    毒可以追溯到 1996 年,而之后的 15 年间,一
                                                                                                    直有新的 Linux 病毒出现,尝试攻击互联网上
                                                                                                    的服务器们和用户们。
  【 Solaris 】 根 据 Oracle Solaris                   【OpenSSH】开源也是要钱的。没有钱,项
                                                                                                          http://os.51cto.com/art/201011/235491.htm
Express 11 的许可协议,这个发行版不可以                         目的开发成本、服务器的费用等等都无法支撑。
用于生产环境,只能用于开发和演示。                                       http://os.51cto.com/art/201011/233550.htm     【 RHEL 6 】 RHEL 6 的 防 火 墙 配 置 工 具 和
      http://os.51cto.com/art/201011/233519.htm                                                     Firestater 相比不相上下,但是比之另外一
                                                    【LibreOffice】现在看来,要 OOo 与 LO
                                                                                                    个 专 业 工 具 Firewall Builder 功 能 上 还 有
  【 超 级 计 算 机 】 Linux 依 然 是 超 级 计 算 机             复 合 已 无 希 望 ; 在 LO 前 进 道 路 上 充 满 着 很 多
                                                                                                    不足之处。
的绝对主力,对比 6 月份数据发现 Linux 总                         挑战,前景并不乐观。
                                                                                                          http://os.51cto.com/art/201011/235916.htm
体 上 升 5 台 , 牢 牢 占 有 82% 的 份 额 , 其 中                     http://os.51cto.com/art/201011/234193.htm
CentOS 上升 1 台,SLES 9 下降 1 台,SLES                                                                     【 Solaris 11 】 Solaris 11 将 在 几 秒 钟
                                                    【Novell】2010 年 11 月 22 日,IDG 传出
10 下 降 2 台 , SUSE/openSUSE/SLES 系 还                                                                 立即启动,而不是把启动时间控制在分钟之内
                                                  消 息 , Novell 已 经 在 周 一 同 意 了
在下降。                                                                                                它还将采用无风险的更新模式,广泛的解决故
                                                  Attachmate 公 司 以 22 亿 美 元 出 价 的 收 购 ,
      http://os.51cto.com/art/201011/233506.htm                                                     障问题,还可以迅速重启失败的应用和服务项
                                                  整个收购过程将在未来数月内完成。                                  目。
  【 Ubuntu 】 Ubuntu 11.04 Alpha 1 中                     http://os.51cto.com/art/201011/234526.htm
                                                                                                          http://os.51cto.com/art/201012/236785.htm
我们就见到了 Unity 界面首次在桌面版中的应
                                                    【 Linux 内 核 】 由 于 一 个 仅 有 200 余 行 代
用 , 你 可 以 使 用 Ubuntu Launcher 来 打 开
                                                  码 的 补 丁 , 未 来 的 Linux Kernel 2.6.38
Pin 在该栏中的应用程序,并且可以在当前运
                                                  或许会成为下一年度最受期待 Linux 内核版
行的应用程序间切换。
                                                  本。
      http://os.51cto.com/art/201012/236734.htm
                                                        http://os.51cto.com/art/201011/233692.htm


                                                                       9                                            http://g.51cto.com/linuxops/
                                                                                                                      http://os.51cto.com/linux/
                                                                                                                      投稿信箱:yangsai@51cto.com
专题
                                 Special



                                                调查报告:运维与开发的常用工具
         本期专题:运维与开发
                                                  在   Linux 平台上,运维与开发人员往往
                                                      是 密 切 相 关 的, 尤其 是对 于 Web 服务
                                                提供方而言更是如此。为了提高产品从开发到
                                                生产环境部署这个环节的效率,近年来有不少
                                                运维界的高手们开始提倡“敏捷运维”、
                                                “DevOps”等概念,主张运维与开发者之间更
                                                加紧密的在一起工作。
                                                  为 了 更 方 便 的 了 解 运 维 和 开 发 在 Linux 使
                                                用习惯上的异同, 51CTO 系统频道近日做了一
                                                些小调查。此次调查主要针对开发者与系统运
                                                维 , 收 集 到 有 效 回 复 50 余 份 , 下 面 选 取 较 有
                                                代 表 性 的 30 份 数 据 进 行 分 析 , 覆 盖 人 群 包 括
                                                Web 开 发 者 、 移 动 开 发 者 、 网 络 游 戏 开 发 / 运
                                                维、系统运维、网络工程师。
                                                  覆盖问题包括:
                                                  1、常用的 Linux 发行版
                                                     2、常用的编辑器
 运维与开发在 Linux 下使用的工具有相同的,也有不同的。比如 Terminal 往往是双方都
是用的,而他们是用的文本编辑器则往往不同。比如,开发者常用 emacs 和 Eclipse,而运     3、常用的语言
                 维则往往使用 Vi 或 Vim 即可。                 4、常用的浏览器
 上图是一个搞笑漫画,展示了常见编辑器的学习曲线。纵轴代表一个编辑器的使用熟练程度,           这份调查报告限于受访者范围,并不具备代
 横轴代表使用该编辑器的时间长度。曲线坡度越陡的,就是该编辑器越难学习的意思。             表性,目的仅在于反映在职开发者和运维的技
        图片来源:http://coolshell.cn/articles/3125.html 术关注点。
                                                  (下接第 12 页)



                                   10                         http://g.51cto.com/linuxops/
                                                                http://os.51cto.com/linux/
                                                                投稿信箱:yangsai@51cto.com
专题
                                                         Special


   Python 也是一个非常值得推荐的利器。这种语言具有非常简捷而清晰的语法特点,适合                                      效 让 人 印 象 深 刻 , 目 前 包 括 Yahoo 、 Sina 在
  完成各种高层任务,几乎可以在所有的操作系统中运行。                                                        内的很多公司都会用它来跑应用。这类系统熟
                                                                                   悉 之 后 , 以 后 从 事 Solaris 相 关 工 作 也 会 减
                                                                                   少难度(同样的 Unix 血统)。
运维人员应该掌握哪些常用技术
                                                                                     如果有中间件要求的,可以适当接触
                                                                                   Weblogic ( Oracle 系 ) 或 WebSphere (
                                                                       文/王文文       IBM 系)、Jboss(红帽系)。这些东西在目
                                                                                   前流行的大型应用中非常广泛。

                                                                                   三、编程开发
                                                                                     混 Windows 系 统 的 自 觉 一 点 学 好
  本 着自己几年运维的工作经验和几个大
    型网站工程师的不吝赐教。这里将个
                                         Hyper-V 又成了微软工程师不得不掌握的重型
                                         武器。
                                                                                   Powershell 吧 。 要 是 说 前 几 年 还 得 看 看
                                                                                   VBscript 的 话 , 未 来 就 都 是 Powershell 的
人总结的一些体会发出来给大家参谋参谋(注
                                         二、Linux/BSD 系统                            天下了。
不包含怎么做人)。如果看完本文您有任何问
题或意见,欢迎和我交流。我的 blog 是:                     虽然 Ubuntu 现在很火,但是在公司里使用                   PowerShell 是 微 软 公 司 于 2006 年 第 四 季
  http://verdureorange.blog.51cto.com    的 大 多 还 都 是 Redhat 系 列 和 Suse 系 列 。 你     度 正 式 发 布 的 。 它 的 出 现 让 Windows 在 运 维
                                         得熟悉 DNS 、 NIS 、 Apache 、 SMB 、            方 面 拉 近 了 与 Unix, Linux 等 操 作 系 统 的 距
  下面将运维中需要学习或能让你运维工作加
                                         DHCP 、 Sendmail 、 FTP 、 MySQL 这 些 常 规 服   离 。 目 前 支 持 .Net Framework 2.0 。 能 够
分的技能稍做介绍。首先我们假设你是一个公
                                         务 。 如 果 公 司 的 IT 业 务 大 规 模 对 外 , 你 还 得    运 行 在 Windows XP SP2 之 后 各 种 操 作 系 统
司 的 IT 运 维 经 理 。 需 要 搞 定 五 十 台 以 上 的 服
                                         学会 LVS 或 Nginx 等负载均衡技术。                   上。能够同时支持 WMI , COM , ADO.NET
务器和若干杂七杂八的设备,哪些技术你会用
                                                                                   , ADSI 等 已 有 的 Windows 管 理 模 型 。 这
的上?                                        友情提示:如果你将去人人网或豆瓣等新锐
                                                                                   项全新的技术提供了丰富的控制与自动化的系
                                         Web2.0 公司,那你还得熟悉 Cassandra 之类
一、微软系统                                                                             统 管 理 能 力 ; 而 “ 脚 本 语 言 ” ( scripting
                                         混合 型的非 关 系的数据库技术 ; Memcache 之
  对 于 Windows 的 熟 悉 是 最 基 本 的 。 当 然 ,                                              languages)则是用来编写程序的计算机语言。
                                         类高性能分布式的内存对象缓存系统(它通过
作为一个运维经理,可不是整天玩个 Windows                                                           脚本语言通常都有简单、易学、易用的特性,
                                         在内 存里 维护 一个 统一 的 巨 大的 Hash 表 存 储
7 或 XP 就可以交差的。你得掌握微软 Active                                                        目的就是希望能让写程序的人(开发者)快速
                                         各种格式的数据)。
Directory 及 其 上 层 各 种 服 务 和 应 用 的 搭 建。                                             完成程序的编写工作。
                                       既 然 说 了 Linux , 这 里 也 顺 带 要 提 一 下
一 般 常 用 的 有 ISA 、 Exchange 、 SQL BSD , 同 样 是 开 源 的 宠 儿 , BSD 的 安 全 性 和 高             关 于 Linux 平 台 下 的 运 维 人 员 , 还 是 推 荐
Server 。 随 着 Windows 2008 的 大 放 异 彩 ,                                              Shell 加 Perl 的 组 合 ,毕 竟 那 么多 年 过 来了

                                                           11                                    http://g.51cto.com/linuxops/
                                                                                                   http://os.51cto.com/linux/
                                                                                                   投稿信箱:yangsai@51cto.com
专题
                                                                  Special


这个组合一直在为各大网站的工程师们稳定的                            通过专门的存储管理软件,可以直接在 SAN
工 作 着 。 另 外 , Python 也 是 一 个 非 常 值 得 推        里的大型主机、服务器或其他服务端电脑上添                          调查报告:常用的 Linux 发行版
荐利器。这种语言具有非常简捷而清晰的语法                          加硬盘和磁带设备(现在大多数的 SAN 是基于
特点,适合完成各种高层任务,几乎可以在所                          光纤信道交换机和集线器的。相当于一个高速
有的操作系统中运行。目前,基于这种语言的                          的子网, 通 常 SAN 由 RAID 阵列 连 接 光纤 通 道
相关技术正在飞速的发展,用户数量急剧扩大                          组成,SAN 和服务器和客户机的数据通信通过
相关的资源非常多。                                     SCSI 命令而非 TCP/IP,数据处理是“块级”。
四、网络设备                                         NAS 则以数据为中心,将存储设备与服务器
                                              彻底分离,集中管理数据,从而释放带宽、提
 熟悉网络基础知识、网络通信协议和常见的
                                              高性能、降低总拥有成本、保护投资。其成本
网络设备是必须的。建议把思科和华为这两家
                                              远远低于使用服务器存储,而效率却远远高于
的产品摸熟。
                                              后者。这类设备相对来说还算简单。
 友情提示:很多人会把华为和 H3C 当成一家,
                                               SAN 和 NAS 的应用都非常广泛,现成的解决
其实他们两家设备的命令并不怎么兼容。
                                              方案也有很多,它们可以混用,也可以单独使
  如果是在稍微大一点的公司工作或者哥们你                         用,主要还是根据自己公司的实际情况来定。                             图 1 开发者常用的 Linux 发行版
就是在 IDC 混,那还得学会对企业局域网和广
                                       原文:
域 网 进 行 规 划 、 实 现 和 检 查 排 错 , VLAN 是 必
                                       http://netsecurity.51cto.com/art/201007/209096.htm
须的。其他就是视频、语音之类的网络服务了。
                                              推荐阅读:
 基础的都搞明白了之后还想提高自己朋友可
以去学一下 CCNP 或者 H3CNE 的课程。                      门户网站运维经验谈
                                              http://os.51cto.com/art/201008/219699.htm
五、存储
                                              SA,神仙与装机男:运维的工作到底啥样儿?
 这里顺带着提一下存储,给新手做一个概念                          http://os.51cto.com/art/201007/214401.htm
上的介绍。当然,这类东西在数据量大的企业
                                              运维漫谈:半身半仙亦民工
中也是经常用到的。
                                              http://os.51cto.com/art/201008/219611.htm
 先说 SAN。SAN 是专门用于提供企业商务数
                                              十大 x86 服务器常见故障:系统篇                               图 2 运维常用的 Linux 发行版
据或运营商数据的存储和备份管理的网络。因
为是基于网络化的存储,SAN 比传统的存储技                        http://os.51cto.com/art/201008/220004.htm
                                                                                             (下接第 14 页)
术拥有更大的容量和更强的性能。

                                                                     12                              http://g.51cto.com/linuxops/
                                                                                                       http://os.51cto.com/linux/
                                                                                                       投稿信箱:yangsai@51cto.com
专题
                                    Special


   系统管理员通常被认为是生产环境的拥有者。他们是持续跟踪机器运行状态的人,是凌晨                 限制访问的产生由来:
 2 点会被电话叫醒的人,基本上也是和生产环境问题距离最近的人。                            如果开发人员不能够访问生产环境,一个最
                                                           大的含义就是他们不能自己去安装程序。也就
是否应该允许开发人员进入生产环境?                                          意味这管理员要去为他们安装程序。这其中会
                                                           发生两件事情:
                                                            1)开发人员和系统管理员 必须交流——相
                                              文/外刊 IT 评论   互的交流!管理员必须学会如何安装程序(我
                                                           可不希望是由我去解释),这应该是件好事。
                                                            2)开发人员必须制作安装文件和编写简单
                                                           有效的部署步骤说明。这也是很好的事情。能

 在 Web 开发 公司里, 有个问题 会被 一而
   再、再而三的提出来,这就是:
                            事情变的繁琐,耽误时间,但我想这时间也不
                            会是一种不可接受的漫长。
                                                           按步骤来重建系统是应对灾难恢复的重要的一
                                                           部分。
 “是否应该允许开发人员进入生产环境?如         “我们以前就是这么干的。”                  所以,一旦开发人员被限制访问生产环境,
果是,允许到什么程度?”                                               我们就能避免那种因为程序过于复杂以致于只
                             创业公司很少一成立就有一些系统管理员。
                                                           有开发人员出面才能部署安装的情况出现。同
 对于此,我的观点是,整体上,应该限制开        出于某些原因,系统管理员会被认为是一种奢
                                                           样,开发人员也避免了把时间浪费在部署和安
发人员访问生产环境。在论证我这个观点之前        侈品。尽管这种状况在以前是可以的,但随着
                                                           装程序的工作上了,节省下的时间开发新程序
我想声明一下,我的立场绝对不是基于对开发        公司的成长,管理员应 该慢慢增多。事情会
                                                           岂不更好。虽然起初他们会多花一点时间,但
人员的品质品行的判断——所以请不要往这方        变的越来越复杂,这也是公司为什么需要系统
                                                           以后会越来越方便。
面想。首先我要公布一些常见的程序员们不喜        管理员的原因。所以说,“我们以前就这么
欢或讨厌这个观点的论据:                干”的说法并没有多少说服力。                  这样管理员也能学到更多的关于安装过程中
                                                           需要备份哪些东西的知识了。即使在管理员对
 “系统管理员什么都不让我们干,他又解决         “我们需要进入生产环境解决问题。”
                                                           程序不太了解的情况,他们只需对着开发人员
不了,我们根本没法完成任务。”              也许是,也许不是。管理员应该能够给你想           提供的文档来执行他们的备份操作。
 如果真是这种情况,那么他们应该是对的。        要的各种信息。如果这个过程成为瓶颈,那么
如果是因为没有足够的管理员或管理员不称职        允许有限范围内的访问是合适的。                开发人员所关心的并不一定是系统管理员所关
那么瓶颈就会出现。然而,允许开发人员访问                                       心的:
                             还有很多的关于限制开发人员访问的讨论,
生产环境并不是一种解决方案,因为即使这一        但来让我们把目标转向我真正想讨论的——为            通常开发人员所关注的安全领域并不一定会
回你把问题解决了,以后还是会出现缺少管理        什么这是一个好建议。                     是系统管理员所关注的领域。对于 Web 网站安
员的情况。有时候一些管理上的规章制度会使                                       全,他们只是擅长他们自己特有的领域。诸如

                                      13                           http://g.51cto.com/linuxops/
                                                                     http://os.51cto.com/linux/
                                                                     投稿信箱:yangsai@51cto.com
专题
                                                              Special


跨站脚本攻击,SQL 注入等安全问题是开发人                   者。拥有者有最终话语权。”
员擅长的,对于系统管理员则不然。诸如账户                                                                         调查报告:常用的编辑器
                                          系统管理员通常被认为是生产环境的拥有者。
权限,文件权限,web 服务器配置通常不是开                   他们是持续跟踪机器运行状态的人,是 凌晨 2
发人员擅长的和感兴趣的,而这些对于生产环                     点会被电话叫醒的人,基本上也是和生产环境
境确十分重要的,它们是系统管理员擅长的领                     问题距离最近的人。如果开发人员直接访问的
域。我对这个领域的见解是越少人访问越安全                     生产环境,那这种管理控制无形中就给破坏了。
还有,这能有效的避免凌晨两点被电话吵醒—
— 因 为 系 统 管 理 员 怀 疑 你 们 15 个 程 序 员 中 的   系统管理员的职责:
某个人在服务器上做了不当的操作。                          为了能在这种原则下正常的工作,管理员必
                                         须完成一些工作。
变更控制:
                                          1)向开发人员们询问他们想从你这得到什
 我不认为一个稳重的程序员会不把变更控制
                                         么信息,你要很乐意的给他们想要的。
当作重要的事情。因为在程序中经常会有这样
的事情。然而,我发现许多程序员却不会慎重                      2)确保开发人员在他们自己的空间里有一
的把在服务器上的每次改动都做上日志。(当                     个好的开发环境。                                                图 3 开发者常用的编辑器
然我也看到过一些配置文件是有版本控制的)                      3)理论结合实践。每个公司都有自己的特
 如果你没有这样做,这意味这生产环境不可                     殊情况,有些公司由于自身业务的原因决定了
能正确的重建。这也意味着如果某些改动导致                     开发人员的无访问权限(比如金融类)。然而
了问题,对于来解决问题的人却未必能知道这                     即使你那不是个金融 公司,取消开发人员的
些曾经发生过的改动。这就好像是一个系统管                     访问特权的作业制度也是最好的方案。有可能
理员打开产品代码,在未通知任何人的情况下                     某些开发人员同时担任这系统管理员的工作,
修改了程序或提交到产品里。哇,我估计程序                     所以每个公司都有自己的情况。
员们会抓狂的。                                  原文:

拥有者对其有控制权:                               http://blog.serverfault.com/post/893001713/
                                         译文:
 Joel’s Spolsky 有 句 话 放 在 管 理 工 作 上
                                         http://www.aqee.net/2010/08/16/should-developers-        图 4 运维常用的编辑器
很合适:
                                         have-access-to-production/                          (下接第 17 页)
 “每人都有自己的一块领地。是谁的,就是
谁的。如果一个管理者或其他人,想插手一个
事情的管理方式,他必须保证自己是事情拥有

                                                                 14                                  http://g.51cto.com/linuxops/
                                                                                                       http://os.51cto.com/linux/
                                                                                                       投稿信箱:yangsai@51cto.com
专题
                                                         Special


   每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常                                      USERNAME ) 即 可 。 crontab 文 件 的 默 认 编 辑
  的多,甚至会撑爆整个系统。                                                                   器是 vi,可以输入
                                                                                  export VISUAL='editor'

Linux 计划任务:听酒哥分享 Crontab 使用心得                                                       更改默认编辑器。
                                                                                    cron 服务每分钟不仅要读一次
                                                                                  /var/spool/cron
                                                                         文/抚琴煮酒     目录内的所有文件,还需要读一次
                                                                                  /etc/crontab
                                                                                    文件。配置这个文件也能让 cron 执行任务。
                                                                                  使 用 crontab 命 令 是 对 用 户 级 任 务 的 配 置 ,

  你    用 过 Crontab 吗 ? 你 对 Crontab 了    启动的,                                      而编辑 /etc/crontab 文件是对系统级任务
       解吗?你知道如何以秒为级别执行任                 service crond status                      的配置。
务 吗 ? 你 知 道 怎 样 让 Crontab 执 行 PHP 脚 本   crond (pid 3444) is running...             抚 琴 煮 酒 定 义 的 crontab 语 法 比 较 好 记 ,
吗 ? 你 知 道 Crontab 的 一 些 特 别 的 用 途 吗 ?    手快 的小 伙可用 chkconfig crond on 让           推荐记忆学习:
在本文中,抚琴煮酒将向大家介绍自己多年来                    其在 level3 和 level5 自动运行。
                                                                                  分 时 日 月 星期 用户 带绝对路径的命令 脚本或
使用 Crontab 的一些心得。                        cron 把 命 令 行 保 存 在 crontab ( cron         PHP 详细路径
  服务器系统:64Bit CentOS 5.5              table)文件里,这个文件通常在 /etc 目录                    细 心 的 你 发 现 没 有 , crontab 最 小 执 行 时
  虽 然 关 于 Crontab 的 介 绍 到 处 都 是 , 详 下 。 每 个 系 统 用 户 都 可 以 有 自 己 的 crontab         间为分钟,如果要求任务是以秒为级别的怎么
细 读 了 一 遍 这 个 词 条 , 收 获 还 是 有 的 。 (在 /var/spool/cron/ 下)。要查看当前
                                                                                  办,其实是有办法的,我等会以实例说明下;
                                                                                  服务器我建议也以 /etc/crontab 为主,它更
Crontab 这 个 名 字 来 自 “ chronos” , 一 个 用户的 crontab,输入
                                                                                  方便控制用户管理;建议服务器上的计划任务
古希 腊语 , “时间” 的意思(以下用法在生产 crontab -l
                                         要编辑 crontab,输入                           时间错开,不要同时并行任务,不然会在某时
环境下的服务器非常有用,抚琴煮酒强烈推
                                                                                  间段 造成系统 负载 过大,搞得你的 Nagios 狂
荐 ) ; 关 于 crontab 的 基 础 用 法 和 语 法 我 就 crontab -e
                                         要删除 crontab,输入                           发报警邮件。
不推荐了, google 和 51cto 上到处都是,我
说的是一些进阶技巧,里面也有可能是不知道 crontab -r
的;Shell 脚本均取自于线上服务器。我安装                  如 当 前 是 root 身 份 , 要 查 看 / 编 辑 / 删 除 /
的服务器一般都是采用最小化安装,安装以后 某用户的 crontab,只需在相应的命令后加上
就发现启动 cron 的管理服务 crond 默认就是 -u USERNAME ( 如                  crontab -e -u

                                                            15                                      http://g.51cto.com/linuxops/
                                                                                                      http://os.51cto.com/linux/
                                                                                                      投稿信箱:yangsai@51cto.com
专题
                                                         Special


                                        /dev/null(linux 的回收站),把标准错误                 一 次 后 再 写 进 crontab 里 , 这 是 保 证 成 功 的
                                        输出(2)发送到和标准输出(1)同样的地方                       必要条件。
                                        ( 即 /dev/null ) 。 运 行 这 行 命 令 将 不 会 产        crontab 如 何 以 秒 为 执 行 你 的 Linux 计 划
                                        生任何输出。举例说明如下:                               任务呢,许多同事和同学都问过我这个问题。
                                        30 15 13 6 1 * root tar czf                 其实这个问题很简单,我以实例说明下:
                                         /usr/local/backups/daily/etc.tar.gz /etc
                                         >> /dev/null 2>&1                            我以前的办公室是一台 ubuntu 服务器,连
                                          CentOS/FreeBSD 下 用 crontab 定 时 执 行        接 ADSL 作 NAT 带 办公 室 的机器上网, 很 不幸
                                        PHP 程序的正确方法如下:                              的 发 现 , 这 样 ADSL 爱 掉 线 , 一 掉 线 网 关
                                                                                    gateway 就没了,所以写了一个 shell 脚本:
                                          1、使用 crontab –e 编辑定时任务                    #!/bin/bash
                                          内容为:                                      while :
    图 Crontab 这个名字来自古希腊语
                                                                                    do
       chronos,取“时间”之意                    xx:xx:xx 执行一个 test.php 文件                 if route | tail -l | grep "0.0.0.0"
                                                                                    then
                                         2 、 php 文件 必须 在文件 头一行, 加 上解 释              &>/dev/null
  玩 windows 应该也会发现, windows2K 系         器路径(就象 perl 做的那样)                           else
列 的 每 修 改 一 次 系 统 管 理 员 Administrator   #!/usr/local/bin/php                        adsl-stop
的密码就是一次浩大的工程, windows 的每个                                                           adsl-start
                                          PHP 的执行需要 Apache 的支持,shell 脚
计划任务 scheduler 都要更改密码; CentOS                                                       fi
                                        本 的 执 行 需 要 Linux 的 支 持 , 而 Linux 支 持       sleep 10
下 修 改 root 密 码 就 简 单 多 了 , 一 条 passwd   定时运行某个程序的功能。                                done
命 令 就 解 决 问 题 了 , 而 且 不 影 响 crontab 的                                                 将程序放进后台执行。
                                          要 将 PHP 作 为 Shell 脚 本 语 言 使 用 , 我 以
执行。
                                        前的方法就是直接在 /etc/crontab 里直接带                   执 行 脚 本 方 法 nuhup sh route.sh & ,
  每条 JOB 执行完毕之后,系统会自动将输                 上 php 路径,如                                  注 意 前 面 要 用 上 nohup ,这 样 避 免 root 用户
出发送邮件给当前系统用户。日积月累,非常                                                                logout 时此脚本也退出生效的问题。
                                        */5 * * * * root php test.php
的 多 , 甚 至 会 撑 爆 整 个 系 统 。 所 以 每 条 JOB
                                          也能正确执行;有兴趣的朋友可写一个                          程序的运行间隔时间是 10s,很多同学不明
命令后面进行重定向处理是非常必要的:
                                        hello 程序测试,将其所有输出到一个文件即                     解为什么 要加 一个 sleep 10 ;大家可以 拿虚
>>/dev/null 2>&1 。 前 提 是 对 Job 中 的
                                        可测试,我做了大量测试证明其可执行性;当                        拟机测试下,如果没有这条 sleep 10 的语句,
命令需要正常输出已经作了一定的处理 , 比如
                                        然你的 php 要保证其正确性,建议你的每一个                     你的 Linux 服务器会运行大量此 route.sh,
追 加 到 某 个 特 定 日 志 文 件 ; >> /dev/null
                                        crontab 计 划 任 务 先 在 shell 中 先 正 确 运 行       很快耗光你的服务器资源,你的系统负载会很
2>&1   表 示 把 所 有 标 准 输 出 发 送 到

                                                               16                                  http://g.51cto.com/linuxops/
                                                                                                     http://os.51cto.com/linux/
                                                                                                     投稿信箱:yangsai@51cto.com
专题
                                                             Special


快上去,Nagios 马上会叫起来的~                       这样即使你的脚本存在错误设置(或丢失
  另 一 个 就 是 监 控 负 载 均 衡 器 Nginx 的        的)规则时,也不至于将你锁在计算机外而无                            调查报告:常用的编程语言
shell 脚 本, 用于 Nginx+Keepalived 负 载       法返回与计算机的连接,让你放心大胆的调试
                                         你的脚本。
均衡高可用环境:
#!/bin/bash                                 最后说明下 Crontab 任务的执行环境问题。
while :                                    尽 管 可 以 更 改 执 行 cron 任 务 時 使 用 的 环
do
                                         境,但经常最好创建一個包装脚本,以在运行
nginxpid=`ps -C nginx --no-header | wc
 -l`                                     实际需要的命令前定义任何环境境变量(如
if [ $nginxpid -eq 0 ];then              PATH)。
/usr/local/nginx/sbin/nginx
                                           这样做的部分原因是出于安全考虑;向
sleep 5
if [ $nginxpid -eq 0 ];then              crontab 作 业 开 放 的 区 域 越 多 , 越 可 能 得 到
/etc/init.d/keepalived stop              包含可疑內容的東西。另一个原因是,这样可
fi                                       确保即使更改了环境中的一个依赖关系,你的
fi                                       crontab 作仍将执行。
sleep 5
                                           掌 握 以 上 crontab 的 用 法 后 , 我 相 信 大 家            图 5 开发者在 Linux 下常用的语言
done
  另外,这里附带说下 crontab 的一个妙用:               用 Linux 更 可 以 得 心 应 手 , 工 作 更 加 happy
                                         和轻松了,希望这篇文章能给大家的运维工作
 我在配置一台服务器的 iptables 时,不小
                                         带来帮助!
心设置了某一项错误参数,结果锁定了 SSH 会
话,导致我们经理及另一系统管理员员连不上                     原文:
服务器,郁闷之余,看到此法特推荐给大家,                     http://os.51cto.com/art/201011/233361.htm
极其有用,建议大家学习参考:可以配置一计                     推荐阅读:
划任务 crontab,每 5 分钟运行一次,即                 Linux 计划任务——cron 服务入门与应用教程
*/5 * * * * root /bin/sh                 http://os.51cto.com/art/201011/233945.htm
 /root/firestop.sh
  firestop.sh 内容为                        利用 crontab 系统每天定时备份 MySQL 数据库
                                         http://database.51cto.com/art/200510/8433.htm
#/bin/bash                                                                                 图 6 运维在 Linux 下常用的语言
service iptables stop                    cron 介绍与安装配置笔记
                                                                                         (下接 20 页)
                                         http://iminmin.blog.51cto.com/689308/421180


                                                                17                               http://g.51cto.com/linuxops/
                                                                                                   http://os.51cto.com/linux/
                                                                                                   投稿信箱:yangsai@51cto.com
专题
                                                     Special


    优秀管理员用 shell 脚本完成绝大多数工作,所以他们有足够的时间喝咖啡泡论坛。                                  五、环境控制:shell 控制着用户的环境,
                                                                              你可以根据需要通过 shell 来改变环境。

Shell 学习笔记——总括篇                                                                六、解释型程序设计语言:可以类似于 C
                                                                              (尽管没那么强大)那样编写复杂的程序。
                                                                               下面我们的详细内容都是围绕上面六大功能
                                                                   文/licong   展开的,在这之前先说明一下 shell 脚本又是
                                                                              什么?把 shell 能够解释的命令一条接一条写
                                                                              到文件里,加入上面提到的一些功能,并给该
                                                                              文件可以执行的权限,那么一个 shell 脚本就

  Shell 脚 本 编 程 是 Unix/Linux 系 统 管
   理员应当具备的一项非常重要的技能,
优秀管理员用 shell 脚本完成绝大多数工作,
                                       ( 准 确 地 讲 是 init 程 序 ) 为 每 个 终 端 启 动
                                       getty,getty 做一些事情然后在分配给他的
                                       终端上显示” login:”等待用户输入信息。一
                                                                              诞生了。换句话说,当你掌握了这些功能也就
                                                                              基本上掌握了编写 shell 脚本的技能了!

所以他们有足够的时间喝咖啡泡论坛。然而,                   旦用户键入信息并以回车结束, getty 程序就               ——程序执行
要掌握这一技能并不十分容易,这需要了解相                   会消失,同时启动 login 程序完成登陆处理。                 shell 负责解释并执行终端请求的程序,这
当数量的知识,并进行大量的练习和实践。笔                   用户成功登陆后,将会启动一个重量级的程序                   里的程序大多数情况都是指 Unix/Linux 命令。
者丝毫不敢说自己已经掌握了这一技能,我写                   那就是 shell!                             Shell 所涉及到的每条命令都遵循相同的基本
这些文章只是为了把学习的历程记录下来,如                                                          格式:
                                        Shell 为什么那么重要呢?因为他有很多很
果恰好也对你有所帮助我很荣幸。
                                       强大的功能:                                  程序名    参数表
  首先,我们来解决必须回答的问题:shell
                                        一、执行程序:shell 负责解释并执行终端                 Shell 扫描命令行,并判断要执行的程序名
是什么?要回答这个问题必须先清楚
                                       请求的程序。                                 字以及要传给程序什么参数(这里我们认为选
Unix/Linux 系统的结构。我们把这个结构简
                                        二、变量和文件名的替换:shell 会解释一                项是参数的一部分)。
单分为两部分:系统内核——实用程序。系统
内核是系统的心脏,从打开计算机自检时就驻                   些特殊的符号来进行替换。                             Shell 用特定的字符去判断程序名的起止位
留在计算机内存,直至计算机关闭;而实用程                    三、I/O 重定向:将输入和输出重定向到别                 置 。这些 字符 被 称 为 空白字 符 , 有空格 、TAB
序驻留在计算机磁盘上,仅当需要时才调入内                   的地方(不再是标准的键盘和屏幕)。                      和换行符(回车), shell 会忽略掉多出的空
存。                                                                            白字符。键入命令: mv file temp 时 shell
                                        四、管道线连接:shell 可以把多个命令连
                                                                              扫描命令行,并提取从该行开始到第一个空白
 那 么 shell 是 什 么 呢 ? shell 是 一 种 实 用   接在一起,就像管道一样。
                                                                              字符为止的字符串作为将执行的程序名: mv;
程序,实际上所有 Unix/Linux 命令都是一个
                                                                              接下去,到下一个空白字符之前的字符序列作
实用程序!每当系统允许用户登陆时,系统

                                                        18                               http://g.51cto.com/linuxops/
                                                                                           http://os.51cto.com/linux/
                                                                                           投稿信箱:yangsai@51cto.com
专题
                                                          Special


为传给 mv 的第一个参数: file;再接着到下                描命令行,寻找文件名替换字符*,?,或[…]。 的 文 件 名 , 在 上 例 中 是 reminder 。 如 果
一个空白字符(这里是换行符之前的字符序列                     假如当前目录包含如下文件:           reminder 已 经 存在,而你也 有 对它的 写入 权
是传给命令 mv 的第二个参数: temp。分析完                $ls                     限,原来的内容就丢失了(如果没有写入权限
命 令 之 后 , shell 就 会 执 行 mv 命 令 , 同 时 传   file1                   shell 会提示一条错误信息)。
给它两个参数 file 和 temp。后面的任务就交               file2
                                         file3                                  在 shell 开 始 程 序 的 执 行 之 前 , 它 就 将 程
给 mv 去 完 成 了 。 注 意 , Unix/Linux 系 统 绝                                          序的标准输出重定向到指定文件。就程序而言
                                         $
大多数情况是严格区分大小写的!                              现在对 echo 命令做文件名替换:                它根本不知道自己的输出被重定向了,它只是
 前 面 提 过 , 多 个 空 白 字 符 将 被 shell 忽 略。 $echo *                                  按照自己的方式将输出写入标准输出(通常是
这就是说,当 shell 处理命令行:                   file1 file2 file3                        屏幕),并没有意识到 shell 已经将输出重定
echo whendowe   eat?                     $                                     向到一个文件。
  时 , 该 命 令 行 给 echo 程 序 4 个 参 数 :         有多少个参数传给了 echo 程序,一个还是      让我们来看两条几乎一样的命令:
when、do、we 和 eat?                        4 个?因为我们知道 shell 会执行文件名替换,
                                                                    $wc –l users
                                         所以答案是 4 个。当 shell 分析命令行:   5 users
 因为 echo 得到参数后,只是将他们显示在
                                         echo *                                $wc –l < users
终端上,并用一个空格字符分隔各个参数,因                                                           5
                                           时,它识别出特殊字符 *,并在命令行中将
此下面的输出就很容易理解了:                                                                   第一种情况下,shell 分析命令行,并判断
                                         *替换为当前工作目录下的所有文件:
$echo whendowe eat?                                                            要 执 行 的 程 序 名 是 wc 以 及 要 传 给 它 的 两 个 参
When do we eat?                          echo file1 file2 file3
$                                          然 后 shell 确 定 传 给 命 令 的 参 数 。 因 此   数:-l 和 users。当 wc 开始执行时,它被传
 事 实 上, echo 命令 根 本 看不 见 那 些 空 白字        echo 是看不见*的,当轮到它来处理时,看到               给了两个参数。第一个参数是 -l,表示它将对
符:他们已被 shell“吞”掉了!                       的是命令行中键入 4 个参数。                       行进行计数。第二个参数指明了要进行计数的
                                                                               文 件 名 。 所 以 , wc 打 开 文 件 users , 统 计 行
——变量和文件名的替换                              ——I/O 重定向                             数,并在终端上打印出统计后的行数和相应文
 与其他程序设计语言一样,shell 允许你给     在命令行中执行输入输出重定向也是 shell                             件名。
变量赋值。任何时候,在命令行中指定一个变     的职 责 。它 扫描命令 行, 看 是否 有特 殊 字 符 < 、      第 二 种 情 况 下 , wc 的 操 作 稍 微 有 一 点 不 同。
量,并且在其前面冠以美元符号, shell 都会 >和>>出现(还有字符<<,将在后面讨论)。               扫描命令行时, shell 识别出输入重定向字符
在这个位置用已赋给该变量的值来替换。我们        键入命令:                             <,紧跟着的那个词表示重定向数据院文件的
后面还会详细讨论这个主题。                                                 名 字 。 Shell 从 命 令 行 “ 吞 ” 掉 <users , 启
                         echo Remember to order Law >reminder
 Shell 也在命令行执行文件名替换。实际上,    时,shell 识别出特殊的重定向字符 >,并 动 wc 程 序 的 执 行 , 将 他 的 标 准 输 入 重 定 向 到
在判定要执行的程序名及其参数之前,它先扫 提取命令行中的下一个词作为重定向输出结果 文 件 users , 并 传 递 给 它 一 个 参 数 -l 。 这 时

                                                             19                                 http://g.51cto.com/linuxops/
                                                                                                  http://os.51cto.com/linux/
                                                                                                  投稿信箱:yangsai@51cto.com
专题
                                                     Special


wc 开始执行,它发现只传给了自己一个参数 -          ——环境控制
l。因为没有指定文件名, wc 将此作为统计标                                                       调查报告:常用的浏览器
                                  Shell 提供某些命令用于定制环境。环境包
准输入上出现的行数的一种指示。因此,wc 在           括用户的宿主目录、 shell 用于提醒用户键入
计数标准输入上的行数时,并未意识到,它实             命令的提示符号、每当请求运行某个程序而进
际上是在为文件 users 中的行进行计数。最终         行搜索的目录列表等等。详细的内容留到后续
的结果显示在终端上——没有文件名,因为没             专门的章节继续讨论。
有给过 wc 文件名。
                                 ——解释型程序设计语言
——管道线连接
                                       Shell 有着自己的内部程序语言。它和 C 等
   就 像 在 命 令 行 中 搜 索 重 定 向 字 符 一 样 , 其他高级程序设计语言最大的区别在于,这种
shell 也在搜 索管道字符 | 。对每个它 发现 语言是解释型的,他只是分析每条语句并执行
的管道字符,它将 位于 | 前面的命令的标准 而不像其他语言那样需要经过编译才能执行。
输出连接到位于 | 后面的 命令 的标 准输 入。 解释型的 shell 比编译型的程序更易于调试和
然后为这两个程序执行初始化(判断程序及其 修改,但他们的运行比等价的编译程序更耗时。
参数)。                                                                           图 7 开发者在 Linux 上常用的浏览器
                                       与大部分程序设计语言类似,shell 也具有
   因此在键入                             if、case、for、while、until 等判断、分
$who | wc –l                         支、循环结构,以及变量、数组和函数。这部
   时,shell 发现,管道字符隔开了命令 who 分内容是脚本编程的重点和难点之一,后续也
和 wc。它将前面命令的标准输出连接到后面命 会有专门的章节来进行讨论。
令的标准输入,然后为执行这两个程序做初始                   好了,shell 总括就到这里了。总结一下,
化。当执行 who 时,它产生一个登录人员的列 就是我们上面提到的六大功能。每一个功能都
表,并将结果写到标准输出:但它没有意识到 值得我们深入挖掘!事实上,你把这些功能挖
结果将不会送到终端,而是送到另一个命令。                 掘得越透彻,你也就越容易写出更高质量的脚
 当 wc 命令 执行时, 它识别出没有 指定 文件       本。
名,并在标准输入上统计行数。没有意识到标             原文:
准输入不是来自于终端,而是来自于 who 命令                                                        图 8 运维在 Linux 上常用的浏览器
                                 http://licong.blog.51cto.com/542131/205615
的输出。                                                                          (完)




                                                        20                            http://g.51cto.com/linuxops/
                                                                                        http://os.51cto.com/linux/
                                                                                        投稿信箱:yangsai@51cto.com
专题
                                                          Special


   SSH 是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么 SSH 无疑是最                                         5、通过 SSH 挂载目录/文件系统
  佳的候选。                                                                             sshfs name@server:/path/to/folder
                                                                                     /path/to/mount/point
                                                                                      从
25 个必须记住的 SSH 命令                                                                    http://fuse.sourceforge.net/sshfs.h
                                                                                    tml 下载 sshfs,它允许你跨网络安全挂载一
                                                                                    个目录。
                                                                          文/URFIX
                                                                       编译/黄永兵           6、通过中间主机建立 SSH 连接
                                                                                    ssh -t reachable_host ssh
                                                                                     unreachable_host


  O penSSH 是 SSH 连 接 工 具 的 免 费 版 本 。
    telnet , rlogin 和 ftp 用 户 可 能 还
没意识到他们在互联网上传输的密码是未加密
                                           2 、 从 某 主 机 的 80 端 口 开 启 到 本 地 主 机
                                         2001 端口的隧道
                                         ssh -N -L2001:localhost:80 somemachine
                                                                                      Unreachable_host 表 示 从 本 地 网 络 无 法
                                                                                    直接访问的主机,但可以从 reachable_host
                                                                                    所 在 网 络 访 问 , 这 个 命 令 通 过 到
的,但 SSH 是加密的,OpenSSH 加密所有通信                现 在 你 可 以 直 接 在 浏 览 器 中 输 入              reachable_host 的“隐藏”连接,创建起到
(包括密码),有效消除了窃听,连接劫持和                     http://localhost:2001 访问这个网站。              unreachable_host 的连接。
其它攻击。此外,OpenSSH 提供了安全隧道功
                                             3、将你的麦克风输出到远程计算 机的扬声                    7、将你的 SSH 公钥复制到远程主机,开启
能和多种身份验证方法,支持 SSH 协议的所有
                                         器                                          无密码登录 – 简单的方法
版本。
                                         dd if=/dev/dsp | ssh -c arcfour -C         ssh-copy-id username@hostname
  SSH 是一个非常伟大的工具,如果你要在互                   username@host dd of=/dev/dsp
联网上远程连接到服务器,那么 SSH 无疑是最                                                                 8 、直接 连接到只 能 通过 主机 B 连接的主机
                                          这样来自你麦克风端口的声音将在 SSH 目标                    A
佳 的 候 选 。 下 面 是 通 过 网 络 投 票 选 出 的 25 个   计算机的扬声器端口输出,但遗憾的是,声音                       ssh -t hostA ssh hostB
最佳 SSH 命令,你必须牢记于心。                       质量很差,你会听到很多嘶嘶声。                                当然,你要能访问主机 A 才行。
  1、复制 SSH 密钥到目标主机,开启无密码                     4、比较远程和本地文件
SSH 登录                                                                                  9、创建到目标主机的持久化连接
                                         ssh user@host cat /path/to/remotefile |
                                                                                    ssh -MNf <user>@<host>
ssh-copy-id user@host                     diff /path/to/localfile –
 如 果 还 没 有 密 钥 , 请 使 用 ssh-keygen 命                                                   在后台创建到目标主机的持久化连接,将这
                                          在比较本地文件和远程文件是否有差异时这
                                                                                    个 命 令 和 你 ~/.ssh/config 中 的 配 置 结 合 使
令生成。                                     个命令很管用。
                                                                                    用:


                                                             21                                    http://g.51cto.com/linuxops/
                                                                                                     http://os.51cto.com/linux/
                                                                                                     投稿信箱:yangsai@51cto.com
专题
                                                             Special


Host host                                   command = /sbin/iptables -D INPUT -i eth0    ~/.ssh/authorized_keys”
ControlPath ~/.ssh/master-%r@%h:%p           -s %IP% -p tcp –dport 22 -j ACCEPT           如 果 你 使 用 Mac OS X 或 其 它 没 有 ssh-
ControlMaster no                            tcpflags = syn
                                                                                        copy-id 命 令 的 *nix 变 种 , 这 个 命 令 可 以 将
  所有到目标主机的 SSH 连接都将使用持久化                     12 、 删 除 文 本 文 件 中 的 一 行 内 容 , 有 用 的       你的公钥复制到远程主机,因此你照样可以实
SSH 套 接 字 , 如 果 你 使 用 SSH 定 期 同 步 文 件       修复                                          现无密码 SSH 登录。
( 使 用 rsync/sftp/cvs/svn ) , 这 个 命 令        ssh-keygen -R <the_offending_host>
将非常有用,因为每次打开一个 SSH 连接时不                                                                   17、实时 SSH 网络吞吐量测试
                                              在这种情况下,最好使用专业的工具。
会创建新的套接字。                                                                               yes | pv | ssh $host “cat > /dev/null”
                                              13、通过 SSH 运行复杂的远程 shell 命令                  通过 SSH 连接到主机,显示实时的传输速度,
  10、通过 SSH 连接屏幕
                                            ssh host -l user $(<cmd.txt)                将所有传输数据指向/dev/null,需要先安装
ssh -t remote_host screen –r                  更具移植性的版本:                                 pv。
  直接连接到远程屏幕会话(节省了无用的父
                                            ssh host -l user “`cat cmd.txt`”              如果是 Debian:
bash 进程)。
                                             14 、 通 过 SSH 将 MySQL 数 据 库 复 制 到 新 服       apt-get install pv
  11、端口检测(敲门)                               务器                                            如果是 Fedora:
knock <host> 3000 4000 5000 && ssh -p       mysqldump –add-drop-table –extended-        yum install pv
 <port> user@host && knock <host> 5000       insert –force –log-error=error.log           (可能需要启用额外的软件仓库)。
 4000 3000                                   -uUSER -pPASS OLD_DB_NAME | ssh -C
  在一个端口上敲一下打开某个服务的端口                         user@newhost “mysql -uUSER -pPASS            18、如果建立一个可以重新连接的远程 GNU
(如 SSH),再敲一下关闭该端口,需要先安                       NEW_DB_NAME”                               screen
装 knockd,下面是一个配置文件示例。                        通过压缩的 SSH 隧道 Dump 一个 MySQL 数据              ssh -t user@some.domain.com
[options]                                   库,将其作为输入传递给 mysql 命令,我认为                     /usr/bin/screen –xRR
logfile = /var/log/knockd.log               这是迁移数据库到新服务器最快最好的方法。                          人们总是喜欢在一个文本终端中打开许多
[openSSH]                                                                               shell , 如 果 会 话 突 然 中 断 , 或 你 按 下 了
sequence = 3000,4000,5000                    15、删除文本文件中的一行,修复“ SSH 主
                                                                                        “ Ctrl-a d” , 远 程 主 机 上 的 shell 不 会 受
seq_timeout = 5                             机密钥更改”的警告
command = /sbin/iptables -A INPUT -i eth0                                               到丝毫影响,你可以重新连接,其它有用的
                                            sed -i 8d ~/.ssh/known_hosts
 -s %IP% -p tcp –dport 22 -j ACCEPT                                                     screen 命 令 有 “ Ctrl-a c” ( 打 开 新 的
tcpflags = syn                               16、从一台没有 SSH-COPY-ID 命令的主机                 shell)和“Ctrl-a a”(在 shell 之间来回
[closeSSH]                                  将你的 SSH 公钥复制到服务器                            切换),请访问
sequence = 5000,4000,3000                   cat ~/.ssh/id_rsa.pub | ssh user@machine
seq_timeout = 5                                                                           http://aperiodic.net/screen/quick_reference
                                             “mkdir ~/.ssh; cat >>
                                                                                          阅读更多关于 screen 命令的快速参考。

                                                                22                                        http://g.51cto.com/linuxops/
                                                                                                            http://os.51cto.com/linux/
                                                                                                            投稿信箱:yangsai@51cto.com
专题
                                                              Special


  19、继续 SCP 大文件                              autossh -M50000 -t server.example.com           ~/.ssh/authorized_keys 文 件 中 , 使 用
                                              ‘screen -raAd mysession’
rsync –partial –progress –rsh=ssh                                                            SSH 连接时,如果你没有使用密钥口令,调用
 $file_source $user@$host:                      打开一个 SSH 会话后,让其保持永久打开,                       ssh user@host 后 不 久 就 会 显 示 远 程
 $destination_file                           对于使用笔记本电脑的用户,如果需要在 Wi-                          shell。
  它 可 以 恢 复 失 败 的 rsync 命 令 , 当 你 通 过        Fi 热点之间切换,可以保证切换后不会丢失连
VPN 传输大文件,如备份的数据库时这个命令                       接。                                               25、将标准输入(stdin)复制到你的 X11
非常有用,需要在两边的主机上安装 rsync。                                                                      缓冲区
                                               22、更稳定,更快,更强的 SSH 客户端
rsync –partial –progress –rsh=ssh                                                            ssh user@host cat /path/to/some/file |
                                             ssh -4 -C -c blowfish-cbc                        xclip
 $file_source $user@$host:
 $destination_file local -> remote             强 制 使 用 IPv4 , 压 缩 数 据 流 , 使 用                 你是否使用 scp 将文件复制到工作用电脑上,
  或                                          Blowfish 加密。                                    以便复制其内容到电子邮件中? xclip 可以帮
rsync –partial –progress –rsh=ssh                                                            到你,它可以将标准输入复制到 X11 缓冲区,
                                               23、使用 cstream 控制带宽
 $user@$host:$remote_file                                                                    你需要做的就是点击鼠标中键粘贴缓冲区中的
 $destination_file remote -> local           tar -cj /backup | cstream -t 777k | ssh
                                              host ‘tar -xj -C /backup’                      内容。
  20、通过 SSH W/ WIRESHARK 分析流量                  使 用 bzip 压 缩 文 件 夹 , 然 后 以 777k               原文:
ssh root@server.com ‘tshark -f “port !22″    bit/s 速率向远程主机传输。Cstream 还有更                     http://blog.urfix.com/25-ssh-commands-tricks/
 -w -' | wireshark -k -i –
                                             多的功能,请访问                                        译文:
   使用 tshark 捕捉远程主机上的网络通信,
                                             http://www.cons.org/cracauer/cstream.html#usa   http://os.51cto.com/art/201011/235252.htm
通 过 SSH 连 接 发 送 原 始 pcap 数 据 , 并 在           ge
wireshark 中显示,按下 Ctrl+C 将停止捕捉,                                                               推荐阅读:
                                             了解详情,例如:
但 也 会 关 闭 wireshark 窗 口 , 可 以 传 递 一 个                                                        五步建立一个 VNC Linux 服务器
                                          echo w00t, i’m 733+ | cstream -b1 -t2
“ -c #” 参 数 给 tshark , 让 它 只 捕 捉 “ #” 指                                                      http://server.51cto.com/sCollege-185750.htm
定的数据包类型,或通过命名管道重定向数据                         24、一步将 SSH 公钥传输到另一台机器
                                                                                             网络安全工具百宝箱
而 不 是 直 接 通 过 SSH 传 输 给 wireshark , 我 ssh-keygen; ssh-copy-id user@host; ssh                 http://netsecurity.51cto.com/art/201011/235748.htm
建 议 你 过 滤 数 据 包 , 以 节 约 带 宽 , tshark 可     user@host
                                             这个命令组合允许你无密码 SSH 登录,注意,                         Linux 系统管理员都应该熟悉的工具
以使用 tcpdump 替代:
                                          如 果 在 本 地 机 器 的 ~/.ssh 目 录 下 已 经 有 一 个             http://os.51cto.com/art/201009/225721.htm
ssh root@example.com tcpdump -w – ‘port !
 22′ | wireshark -k -i –                  SSH 密 钥对, ssh-keygen 命令 生成的新 密 钥
                                          可 能 会 覆 盖 它 们 , ssh-copy-id 将 密 钥 复 制
   21、保持 SSH 会话永久打开
                                          到 远 程 主 机 , 并 追 加 到 远 程 账 号 的

                                                                 23                                             http://g.51cto.com/linuxops/
                                                                                                                  http://os.51cto.com/linux/
                                                                                                                  投稿信箱:yangsai@51cto.com
工具
                                                             Tools


   Tcprstat 是一个免费开源的 TCP 分析工具,用于监测网络流量,并计算请求与响应之                                            1283261503 1650     289087         35 462 146
                                                                                             7133    834 184 120 3565           244 358
  间的延迟。
                                                                                             但 是 这 个 tcprstat 在 bonding 的 网 卡 下
                                                                                            有点问题:
调查服务器响应时间的利器 tcprstat                                                                       # /sbin/ifconfig
                                                                                            bond0     Link encap:Ethernet HWaddr
                                                                                             A4:BA:DB:28:B5:AB
                                                                             文/Yu Feng               inet addr:10.232.31.19
                                                                                             Bcast:10.232.31.255 Mask:255.255.255.0
                                                                                                     inet6 addr:

  我 们在 做服 务器 程序 的时 候, 经常 要知               http://www.percona.com/docs/wiki/tcprstat:start    fe80::a6ba:dbff:fe28:b5ab/64 Scope:Link
                                                                                                     UP BROADCAST RUNNING MASTER
    道一个请求的响应时间,借以优化或                     不愿意编 译的 同学 直接从这里下 载 64 位系                           MULTICAST MTU:1500 Metric:1
者定位问题。                                  统的编译好的二进制:                                                   RX packets:19451951688 errors:0
  这 时 候 来 自 percona 的 tcprstat 来 救 助      http://github.com/downloads/Lowercases/tcprsta     dropped:4512 overruns:0 frame:0
了 ! 这 个 工 具 原 本 开 发 用 来 调 查 mysqld 的      t/tcprstat-static.v0.3.1.x86_64                            TX packets:26522074966 errors:0
                                                                                             dropped:0 overruns:0 carrier:0
性能问题,所以不要奇怪它的默认端口是                        源码编译也挺容易的: 由于它自带                                           collisions:0 txqueuelen:0
3306, 但 是 我 们 可 以 用 这 个 工 具 来 调 查 典 型   libpcap 包, 这个包有可能在 configure 的                               RX bytes:6634368171533 (6.0 TiB)
的 request->response 类型的服务器。             时 候 没 认 识 好 netlink, 只 要 把 config.h                  TX bytes:32576206882863 (29.6 TiB)
                                        里面的 netlink 那个 define 注释掉就好。                        ...
  什么是 tcprstat:                                                                             # tcprstat -p 3306 -t 1 -n 5
                                          编译好了, 典型使用很简单:                                    pcap: SIOCGIFFLAGS: bonding_masters: No
  Tcprstat 是一个免费开源的 TCP 分析工
                                        # tcprstat -p 3306 -t 1 -n 5                         such device
具,用于监测网络流量,并计算请求与响应之                    timestamp    count    max min avg med                  解决方案是:
间的延迟。该工具由此推算响应时间的数据并                     stddev 95_max 95_avg 95_std 99_max                 # sudo tcprstat -p 3306 -t 1 -n 0 -l
将 记 录 输 出 , 输 出 结 果 类 似 Unix 下 的 其 他     99_avg 99_std                                       `/sbin/ifconfig | grep 'addr:[^ ]+' -o
-stat 工 具 , 如 vmstat , iostat 和         1283261499 1870       559009 39 883 153              | cut -f 2 -d : | xargs echo | sed -e
mpstat 。该工具还可以被限定为仅仅监视特                  13306    1267     201 150 6792     323 685          's/ /,/g'`
                                        1283261500 1865       25704   29 578 142
定端口的流量,很适合针对单独守护进程的响                     2755     889 175 107 23630     333 1331               用 IP 方式,而不是网络接口方式搞定。
应 时 间 监 控 , 如 mysqld , httpd ,          1283261501 1887       26908   33 583 148            原文:
memcached 等。                             2761     714 176 94 23391      339 1340            http://blog.yufeng.info/archives/963
                                        1283261502 2015       304965 35 624 151
  文档很详细,请参考:                             7204     564 171 79 8615       237 507

                                                               24                                               http://g.51cto.com/linuxops/
                                                                                                                  http://os.51cto.com/linux/
                                                                                                                  投稿信箱:yangsai@51cto.com
工具
                                                         Tools


   掌握 Shell ,通常能够让任务在数秒钟内完成,这就让 Shell 跟 C 、 Perl 、 Python 这些                         2.以 HTTP 方式共享当前文件夹的文件
  语言区别开来。                                                                            $ python -m SimpleHTTPServer
                                                                                       这 命 令 启 动 了         Python   的

系列连载:最牛 B 的 Linux Shell 命令(1)                                                        SimpleHTTPServer 模块,考虑到 Python 在
                                                                                     绝大多数的 Linux 发行版当中都默认安装,所
                                                                                     以这个命令很可能是最简单的跨平台传文件的
                                                                 文/Peteris Krumins   方法。

                                                                      编译/BOY PT        命 令 执 行 后 将 在 本 机 8000 端 口 开 放 HTTP
                                                                                     服务,在其他能访问本机的机器的浏览器打开
                                                                                     ttp://ip:8000 即 打 开 一 个 目 录 列 表 , 点 击
                                                                                     即可下载。

  Shell 作 为 Unix 系 操 作 系 统 当 中 最 有
   魅力且不可或缺的组件,经过数十载的
洗礼不仅没有被淘汰,而且愈加变得成熟稳健
                                         Ctrl-a,输入 sudo,回车。
                                           这里介绍这个是天外飞仙级别的,对,就直
                                         接 sudo !!。
                                                                                     3. 在 以 普 通 用 户 打 开 的 VIM 当 中 保 存 一 个
                                                                                      ROOT 用户文件
究其原因,大概因为它是个非常稳固的粘合剂                                                                 :w !sudo tee %
                                          当然这几种解决方式效果是完全一样的,只                          这题目读起来纠结,其实是很常见的,常常
能够把大量功能强大的组件任意配搭,总能很
                                         是款不一样,嗯,不解释。                                忘记了 sudo 就直接用 vim 编辑/etc 内的文件,
好很快地完成用户的任务。
                                           两个感叹号其实是 bash 的一个特性,称为                    (不过也不一定, vim 发现保存的文件无法保
 本文的一些命令很可能看起来是”雕虫小
技”,我们只好仰慕一下 Shell 大牛了,但是                 事件 引 用符 ( event designators )。 !! 其         存时候会提示)等编辑好了,保存时候才发现
                                         实 相 当 于 !-1 , 引 用 前 一 条 命 令 , 当 然 也 可       没权限。曲线方法是先保存个临时文件,退出
有些细节我会稍加发掘加以说明,遇到有趣的
                                         以 !-2 , !-50 。 默 认 情 况 下 bash 会 在           后 再 sudo cp 回 去 。 不 过 实 际 上 在 vim 里 面
地方希望能博您一笑了。
                                         ~/.bash_history 文 件 内 记 录 用 户 执 行 的 最       可以直接完成这个过程的,命令就是如此。
1.以 SUDO 运行上条命令                          近 500 条命令,history 命令可以显示这些命                   查阅 vim 的文档(输入:help :w),会提
$ sudo !!                                令。                                          到 命 令 :w!{cmd} , 让 vim 执 行 一 个 外 部 命 令
  大家 应 该 都知 sudo , 不解 释 。 但 通 常 出 现        关于事件引用符的更多用法可以深入阅读                        {cmd},然后把当前缓冲区的内容从 stdin 传
的情况是,敲完命令执行后报错才发现忘了                      The   Definitive   Guide to Bash            入。
sudo。这时候,新手用户就会:按上箭头,按                   Command Line History。                         tee 是一个把 stdin 保存到文件的小工具。
左 箭 头 , 盯 着 光 标 回 到 开 始 处 , 输 入 sudo ,
回 车 ; 高 手 用 户 就 蛋 定 多 了 , 按 Ctrl-p , 按                                                而%,是 vim 当中一个只读寄存器的名字,
                                                                                     总保存着当前编辑文件的文件路径。

                                                          25                                          http://g.51cto.com/linuxops/
                                                                                                        http://os.51cto.com/linux/
                                                                                                        投稿信箱:yangsai@51cto.com
工具
                                                            Tools


 所以执行这个命令,就相当于从 vim 外部修                     关于事件引用符的更多用法可以深入阅读                   提是你当前用户有生成了公钥,默认是没有的
改了当前编辑的文件,好完工。                            The   Definitive   Guide to Bash       先执行 ssh-keygen 试试吧!
                                          Command Line History
4.切换回上一个目录                                                                         这个命令如果用手工完成,是这样的:
$ cd -
                                          6.快速备份一个文件                             your-machine$ scp ~/.ssh/identity.pub
                                          $ cp filename{,.bak}                    remote-machine:
 应该不少人都知道这个,横杆 -代表上一个                                                            your-machine$ ssh remote-machine
目录的路径。                                   这 道 命 令 把 filename 文 件 拷 贝 成
                                                                                 remote-machine$ cat identity.pub >>
                                       filename.bak ,大家应该在一些比 较复 杂的               ~/.ssh/authorized_keys
  实 际 上 cd - 就 是 cd $OLDPWD 的 简 写 ,
                                       安装教程里面见过这样的用法。其原理就在于              如果你想删掉远程主机上的密钥,直接打开
bash 的 固 定 变 量 $OLDPWD 总 保 存 着 之 前 一 个
                                       bash 对 大 括 号 的 展 开 操 作 , authorized_keys , 搜 索 你 的 用 户 名 , 删 除
目录的路径。
                                       filename{,.bak} 这 一 段 会 被 展 开 成 那行,即可。
  相对 地, $PWD 总保 存着 当 前 目录 的 路 径 。 filename filename.bak 再 传 给 cp , 于 是
这些变量在编写 shell 脚本时候相当有用。                就有了备份的命令了。                      8.抓取 LINUX 桌面的视频
                                                                                 $ ffmpeg -f x11grab -s wxga -r 25 -i :0.0
5.替换上一条命令中的一个短语                            大括号在 bash 里面是一个排列的意义,可
                                                                                  -sameq /tmp/out.mpg
$ ^foo^bar^                               以试试这个:
                                                                                   我们在一些 视 频网站上 看 到别人的 3D 桌面
  又 是 另 外 一 个 事 件 引 用 符 ( event           $ echo {a,b,c}{a,b,c}{a,b,c}           怎么怎么酷的视频,通常就是这么来的,
designator ) , 可 以 把 上 一 条 命 令 当 中 的        将输出三个集合的全排列:                         ffmpeg 可 以 直 接解 码 X11 的 图形 , 并 转换 到
foo 替换成 bar。                              aaa aab aac aba abb abc aca acb acc    相应输出格式。
                                          baa bab bac bba bbb bbc bca bcb bcc
 在需要重复运行调试一道长长的命令,需要                      caa cab cac cba cbb cbc cca ccb ccc     ffmpeg 的通常用法是,根据一堆参数,输
测试某个参数时候,用这个命令会比较实用;                        关 于 shell 当 中 的 集 合 操 作 , 可 深 入 阅    出一个文件,输出文件通常放最后,下面解析
但多数人会首先选择按上箭头提出上道命令,                                                             下几个参数:
                                          读 ” Set Operations in the Unix
再移动光标去修改某参数,这样更直观,但效                      Shell”                                  -f x11grab 指 定 输 入 类 型 。 因 为 x11 的
率上就不够使用引用符高,而且在脚本中用这
                                                                                 缓冲区不是普通的视频文件可以侦测格式,必
个方法可以简化很多。                                7.免密码 SSH 登录主机
                                                                                 须指定后 ffmpeg 才知道如何获得输入。
  这道命令的原始样式应该是这样的:                        $ ssh-copy-id remote-machine
                                            这个命令把当前用户的公钥串写入到远程主                    -s wxga 设 置 抓 取 区 域 的 大 小 。 wxga 是
!!:s/foo/bar/
                                          机 的 ~/.ssh/authorized_keys 内 , 这 样 下   1366*768 的 标 准 说 法 , 也 可 以 换 成 -s
  本 文 一 开 始 介 绍 过 !! , 后 面 的 一 段 大 家 应
                                          次使用 ssh 登录的时候,远程主机就直接根据                800×600 的写法。
该 很 熟 悉 , vim 、 sed 的 替 换 操 作 都 是 这 样 的
语法。                                       这串密钥完成身份校验,不再询问密码了。前                     -r 25 设置帧率,即每秒抓取的画面数。


                                                                 26                             http://g.51cto.com/linuxops/
                                                                                                  http://os.51cto.com/linux/
                                                                                                  投稿信箱:yangsai@51cto.com
工具
                                                            Tools


  -i :0.0 设置输入源,本地 X 默认在 0.0          的一些”雕虫小技”因为难登大雅之堂绝不会
 -sameq 保持跟输入流一样的图像质量,以 收录 进去 。这 情况 如 果 象 国 外 一 些 unix 用户
用来后期处理。                               比较多的地方会有很好改善,即使是新手,偶                           勘误声明
                                      尔看看别人的操作都能”偷师”一手,我编译
后记                                    本系列文章其实也就希望稍微改善一下这个状                             《 Linux 运 维 趋 势 》 第 一 期 的 第 11 页 :
 说 Shell 是 一 种 编 程 语 言 , 可 能 有 些 尴 尬, 况。                                             《 资 料 篇 : Linux 常 用 监 控 命 令 简 介 –
虽然很多人每天都在用 Shell,但从来没见它 原文:                                                          top》一文中,有两处错误:
荣登 TIOBE 编程语言排行榜之类的,可以说毫 http://www.catonmat.net/blog/top-ten-one-liners-             1、top 命令的解释中,有关 -i 参数的说
无名分,因为很多用户没意识到它是一种语言 from-commandlinefu-explained                                    明,写成了“显示空闲进程”,实际应为
只当做这是一个能够很好完成任务的工具,基 译文:                                                             “排除空闲进程跟僵尸进程,只显示出运行
本得理所当然,就好像 GUI 程序的菜单、按钮 http://www.isspy.com/most_useful_linux_commands              的进程”;
一样。                                   _1/
                                                                                      2 、 有 关 uptime 输 出 数 值 的 说 明 , 写 成
  掌握 Shell,通常能够让任务在数秒钟内完               推荐阅读:                                         了“最近一秒,五秒,十五秒”,实际应为
成,这就让 Shell 跟 C、Perl、Python 这些         实战 Linux Shell 编程与服务器管理                       “最近一分钟,五分钟,十五分钟”;
语言区别开来,没人否认后者更能胜任更多的                   http://book.51cto.com/art/201003/191285.htm     特此勘误。
任务,但是他们是在不同的层面上去做,
                                       不看后悔的 Linux 生产服务器 Shell 脚本分享
Shell 依赖大量的系统组件黏合调用,而后者
                                       http://os.51cto.com/art/201010/229129.htm
依赖各种库,各所擅长不同的应用领域,比喻                                                                  感谢读者星痕指出此错误!希望大家能够
就是,Shell 是混凝土,可以很方便地粘合一                从 Solaris 迁移 Perl 脚本到 Linux                   继续积极反馈您对《趋势》的意见与建议,
些建筑组件而成为稳固的高楼大厦;但同样是                   http://os.51cto.com/art/201011/234181.htm     帮助我们做的更好!
粘合剂,粘玻璃窗、粘书报、粘皮鞋,混凝土                   几个常用的 Linux 监控脚本
是绝对不合适的, Shell 并不擅长一些细致操               http://os.51cto.com/art/201010/229618.htm
作,比如它连浮点运算都不支持,更别提什么
图形运算什么的。但这并不妨碍 Shell 来帮我
们完成很多粗重任务。
  Shell 的工作方式,大多数入门用户会觉得
枯燥难学,而所谓的经典教材也离不开
《 Advanced Bash-Scripting 》 、 《 Bash
Guide for Beginners 》 ,但 类 似本文这 样

                                                              27                                  http://g.51cto.com/linuxops/
                                                                                                    http://os.51cto.com/linux/
                                                                                                    投稿信箱:yangsai@51cto.com
招募启事                                         下期预告
 《Linux 运维趋势》的建设需要您的加入!                       下 期 主 题 为 : Linux 服 务 器 的 性 能 瓶 颈
 您可以通过如下方式参与我们杂志的建设:                        分析。敬请期待!
 1、推荐文章                                       本刊为月刊,预定每月发布日期为:
 无论是您在互联网上看到的好文章,还是您自己总结 /整理的资料;无论是英文还        每个月的第二个星期五
是中文;无论是入门的还是高端的,都欢迎推荐!推荐方式包括:
                                              您可以通过如下方式检查是否有新刊发
 a)在技术圈中分享:http://g.51cto.com/linuxops
                                            布:
 b)在邮件群中分享:linuxops-cn@googlegroups.com
                                              1、加入电子邮件群组:
 c)发邮件给编辑:yangsai@51cto.com                   linuxops-cn@googlegroups.com
 2、投稿                                         获得邮件提醒
 如果您认为自己在 Linux 方面具有专家级别的能力,并且有与大家分享您技术经验     2、经常光顾 51CTO Linux 频道:
的热诚,同时也有兴趣挣点稿费花花,那么欢迎您的投稿!                    http://os.51cto.com/linux/
 如果您在 IT 技术方面的翻译有很高的能力,能够快速、高质量的完成译文,并且
                                            《Linux 运维趋势》是由 51CTO 系统频道策划、针
也经常浏览到一些 Linux 方面的优秀外文,那么也欢迎您的投稿!            对 Linux/Unix 系统运维人员的一份电子杂志,内
 投稿信箱:yangsai@51cto.com                      容从基础的技巧心得、实际操作案例到中、高端
 3、推广与意见                                     的运维技术趋势与理念等均有覆盖。

 如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮助,请向您的 Linux 好   《Linux 运维趋势》是开放的非盈利性电子杂志,

友、同事们推荐它!                                    其中所有内容均收集整理自国内外互联网(包含
                                             51CTO 系统频道本身的内容)。对于来自国内的
 如果您觉得这份杂志还有什么地方需要改进或补充,也希望您能够提出您的宝贵意
                                             内容,编辑都会事先征求原作者的许可(八卦,
见!
                                             趣闻&数字栏目例外)。如果您认为本杂志的内
 联系人:yangsai@51cto.com                       容 侵 犯 到 了 您 的 版 权 , 请 发 信 至
                                             yangsai@51cto.com 进行投诉。

More Related Content

PDF
51 cto linuxops_issue4
PDF
51 cto linuxops_issue0
PDF
2016 年春季嵌入式作業系統課程說明
PDF
Linux运维趋势 第16期 cdn缓存系统
PDF
51 cto linuxops_issue5
PDF
程式人雜誌 -- 2013年2月號
PDF
PDF
Optimize MySQL For Developers-Qcon2011
51 cto linuxops_issue4
51 cto linuxops_issue0
2016 年春季嵌入式作業系統課程說明
Linux运维趋势 第16期 cdn缓存系统
51 cto linuxops_issue5
程式人雜誌 -- 2013年2月號
Optimize MySQL For Developers-Qcon2011

Viewers also liked (20)

PDF
Открытие банковского счета и банковские кредиты в Финляндии
PDF
Netflix web-adrian-qcon
PPTX
Writ google glass arrangement
DOCX
Nginx 0.8.x 安装手册
PDF
PDF
Domainlang keynote-eric-qcon
PDF
Wushi-Qcon2011
PDF
Организационно правовые формы предприятий, налогообложение, управление финанс...
PDF
как вести таможенное декларирование через интернет
PPT
St.petersburg.interregional.resource.center
PDF
4. Формирование мнения в Интернете
PDF
Наличие и наём рабочей силы в Финляндии
PDF
Корпоративный сервер на базе GNU/Linux
DOCX
Puppet安装测试
PDF
Инвестиции в Кюменлааксо - эффективные вложения в бизнес и жизнь - Сергей Тро...
PDF
планирование бизнеса в регионе котка хамина (финляндия)
PDF
Государственные субсидии и кредиты предприятиям в Финляндии
PDF
51 cto linuxops_issue2
Открытие банковского счета и банковские кредиты в Финляндии
Netflix web-adrian-qcon
Writ google glass arrangement
Nginx 0.8.x 安装手册
Domainlang keynote-eric-qcon
Wushi-Qcon2011
Организационно правовые формы предприятий, налогообложение, управление финанс...
как вести таможенное декларирование через интернет
St.petersburg.interregional.resource.center
4. Формирование мнения в Интернете
Наличие и наём рабочей силы в Финляндии
Корпоративный сервер на базе GNU/Linux
Puppet安装测试
Инвестиции в Кюменлааксо - эффективные вложения в бизнес и жизнь - Сергей Тро...
планирование бизнеса в регионе котка хамина (финляндия)
Государственные субсидии и кредиты предприятиям в Финляндии
51 cto linuxops_issue2
Ad

Similar to 51 cto linuxops_issue3 (20)

PDF
Linux运维趋势 第0期 运维自动化
PDF
《Linux运维趋势》2012年5月号 总第19期
PDF
Linux运维趋势 第13期 服务器优化
PDF
Linux运维趋势 第13期 服务器优化(最终版)
PDF
《Linux运维趋势》2012年2月号:运维安全准则
PDF
51 cto linuxops_issue1
PDF
Linux运维趋势 第1期 监控与报警
PDF
Linux运维趋势 第14期 高性能电子商务网站
PDF
51CTO专项调研 Linux桌面发行版生存状况调查报告final版
PDF
Linux运维趋势 第15期 虚拟化管理软件选型
PDF
unixtoolbox_zh_CN
PDF
Unixtoolbox zh cn
PPT
开源软件营销策略
PDF
阿里巴巴运维团队的无状态运维思路
PDF
Linux运维趋势 第12期 故障排除
PDF
Hadoop大数据实践经验
DOCX
Resume_CNandEN
PDF
unix toolbox 中文版
PPTX
中大型规模的网站架构运维 Saac
PDF
自动化运维管理
Linux运维趋势 第0期 运维自动化
《Linux运维趋势》2012年5月号 总第19期
Linux运维趋势 第13期 服务器优化
Linux运维趋势 第13期 服务器优化(最终版)
《Linux运维趋势》2012年2月号:运维安全准则
51 cto linuxops_issue1
Linux运维趋势 第1期 监控与报警
Linux运维趋势 第14期 高性能电子商务网站
51CTO专项调研 Linux桌面发行版生存状况调查报告final版
Linux运维趋势 第15期 虚拟化管理软件选型
unixtoolbox_zh_CN
Unixtoolbox zh cn
开源软件营销策略
阿里巴巴运维团队的无状态运维思路
Linux运维趋势 第12期 故障排除
Hadoop大数据实践经验
Resume_CNandEN
unix toolbox 中文版
中大型规模的网站架构运维 Saac
自动化运维管理
Ad

More from Yiwei Ma (20)

PDF
Cibank arch-zhouweiran-qcon
PDF
Cibank arch-zhouweiran-qcon
PDF
Taobao casestudy-yufeng-qcon
PDF
Alibaba server-zhangxuseng-qcon
PDF
Zhongxing practice-suchunshan-qcon
PDF
Taobao practice-liyu-qcon
PDF
Thoughtworks practice-hukai-qcon
PDF
Ufida design-chijianqiang-qcon
PDF
Spring design-juergen-qcon
PDF
Google arch-fangkun-qcon
PDF
Cibank arch-zhouweiran-qcon
PDF
Alibaba arch-jiangtao-qcon
PDF
Twitter keynote-evan-qcon
PDF
Netflix keynote-adrian-qcon
PDF
Facebook keynote-nicolas-qcon
PDF
Devjam keynote-david-qcon
PDF
Baidu keynote-wubo-qcon
PDF
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
PDF
网游服务器性能优化-Qcon2011
PDF
Xietingbao-Qcon2011
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Taobao casestudy-yufeng-qcon
Alibaba server-zhangxuseng-qcon
Zhongxing practice-suchunshan-qcon
Taobao practice-liyu-qcon
Thoughtworks practice-hukai-qcon
Ufida design-chijianqiang-qcon
Spring design-juergen-qcon
Google arch-fangkun-qcon
Cibank arch-zhouweiran-qcon
Alibaba arch-jiangtao-qcon
Twitter keynote-evan-qcon
Netflix keynote-adrian-qcon
Facebook keynote-nicolas-qcon
Devjam keynote-david-qcon
Baidu keynote-wubo-qcon
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
网游服务器性能优化-Qcon2011
Xietingbao-Qcon2011

51 cto linuxops_issue3

  • 1. 2010 年 12 月号 总第三期 本期主题:运维与开发 | 关键字:Shell, 脚本, 生产环境, Crontab
  • 2. 内容目录 人物—— 专访资深系统管理员曹江华:从车间走入 Linux 世界.......................................................................3 交流—— 系统学习 Linux 的 11 点建议................................................................................................................. 5 杂志策划:51CTO 系统频道 如何检测一台机器是否宕机?...............................................................................................................7 本期主编:杨赛 Logo 制作:高鹏飞 封面制作:徐泽琼 八卦,趣闻与数字 2010.11 - 2010.12................................................................................................9 技术顾问:曹江华,黄琨,李洋 特别顾问:王文文,杨文飞 本期专题:运维与开发—— 交流圈子: http://g.51cto.com/linuxops 运维人员应该掌握哪些常用技术.........................................................................................................11 邮件群组: 是否应该允许开发人员进入生产环境?............................................................................................13 groups.google.com/group/linuxops-cn Linux 计划任务:听酒哥分享 Crontab 使用心得............................................................................15 订阅方式:发送 Email 到 linuxops-cn+subscribe@googlegroups.com Shell 学习笔记——总括篇.................................................................................................................. 18 专题页面: 25 个必须记住的 SSH 命令..................................................................................................................21 http://os.51cto.com/art/201011/233915.htm http://down.51cto.com/zt/71 工具—— 投稿信箱: 调查服务器响应时间的利器 tcprstat.................................................................................................24 yangsai@51cto.com 最牛 B 的 Linux Shell 命令...................................................................................................................25
  • 3. 人物 People 1999 年 在 计 算 机 世 界 报 刊 看 到 了 一 点 点 关 于 Linux 的 介 绍 , 我 被 其 中 “ 源 代 码 全 部 开 Linux 方面的学习)。 放”所吸引。 51CTO:首先简单的介绍一下您自己吧。能 否简单的介绍一下您在运维领域的经历?比如 专访资深系统管理员曹江华:从车间走入 Linux 世界 什么时候进入这行,现在在哪里工作等等。 曹江华:我毕业于工科大学机电一体化专业, 当时从事的是 CAD 设计。后来开始从事小型数 采访、整理/杨赛 据 库 的 应 用 。 1999 年 开 始 从 事 构 建 网 络 、 管 理 维 护 、 数 据 库 管 理 工 作 , 1999 年 后 开 始 接 触 LINUX 成 为 Linux 系 统 管 理 员 。 目 前 关 注 人物简介 Linux 和 网 络 安 全 管 理 。 现 在 是 曹江华, 1999 年开始从事构建网络、管理维护、数据库管理工作 。 linuxpilot(现在是唯一的中文 Linux 专业 1999 年后开始接触 LINUX ,将工作中的经验总结后已出版《 Linux 服 纸媒体了)的专栏作家和自由撰稿人。 务器安全策略详解》,《 Linux 服务器安全策略详解》(第二版), 51CTO:您最初接触系统管理员这方面的工 《Red Hat Enterprise Linux 5.0 服务器构建与故障排除》,《 Linux 系 作是怎样的情况?看您的一些介绍,好像您一 统最佳实践工具:命令行技术》四本堪称 Linux 系统管理员日常工具书 开始是从事 CAD 设计的吧。能跟我们描述一下 当时您是如何进入运维这个领域的么?您当时 的热销图书,目前关注 Linux 和网络安全管理。 的工作环境是怎样的?如何学习一项新的技能 呢? 随 着 IT 技术在上世纪 90 年代开始在中 是那时的人们都充满着对技术的热情,投入到 曹江华:我进入计算机系统管理员非常偶然。 国普 及, 这个 产业 也簇 生了 国内 第一 新技术的学习和使用当中。 大学学的机电一体化专业计算机课程只有两门 批系统管理员、网络管理员的诞生。相对于现 (for77 计算机语言和 CAD 绘图)。工作以后 国 内 著 名 的 Linux 专 家 曹 江 华 老 师 , 就 是 在 无 所 不 在 的 以 Windows 为 基 础 的 企 业 网 络 到了北汽集团发动机工厂生产线,一干就是三 1999 年 投 入 到 运 维 领 域 的 。 51CTO 系 统 频 道 和 奔 跑 在 无 数 Linux 服 务 器 上 的 网 站 , 90 年 年。第一年实习。后边两年是当班车间主任。 近日对曹江华老师进行了邮件专访,请曹江华 代 的 IT 基 础 架 构 还 处 于 非 常 原 始 的 状 态 。 互 这三年的工作几乎和计算机没有任何关系。三 老师谈了谈自己的职业发展经历。一方面让大 联网进入国内差不多是 1995 年左右,而 1999 年后工厂发动机工厂生产线停产了,我进入北 家了解一下那个时候的系统运维的工作状况, 年 正 是 IT 行 业 飞 速 发 展 的 一 个 转 折 点 。 那 个 汽的计算机中心。其实我当时也没什么关系, 另一方面也给现在的系统运维们分享一些学习 那时国有企业效益太差了,分配来的计算机专 时候的技术人们,无论是开发者还是运维们, 经验(这些经验之谈可能不仅仅影响到你在 业的大学生全走了,实在没有人可用了;因为 虽然可以获取的资讯和技术知识相对贫乏,但 3 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 4. 人物 People 我工厂生产线三年,一直是劳模,领导说你去 曹江华:在系统运维领域多年,感觉还是在 曹江华:写过这么多文章和书籍,对自己收 干干吧,我就去了。刚开始是 CAD 绘图,这个 北汽集团计算机中心的五年印象最深刻。当时 获最大是理论知识的学习。我的专业不是学计 大学学过,当时几乎都忘了用三个月时间重新 企业内已经建立了网络环境,可是那时国有企 算机,刚开始就是使用 Linux、Solaris 等系 学 习 。 1997 年 开 始 使 用 dos 环 境 的 业效益太差了根本没有条件升级计算机。当时 统,并没有理论基础。写过文章和书籍过程中 DbaseIII 数据库,后来是 Foxbase 数据库, win 95 已经问世了,可是我们的计算机配置 看了许多工具书,等于自学一遍计算机理论。 现在可能计算机专业同学可能都没人知道了。 大多是 386-486 ,只有几台 586 还是领导办 当然,我所涉及的主要是类 Unix 操作系统。 1999 年 在计 算机 世 界 报刊 看 到 了一 点点 关 公 打 字 用 。 我 在 386 上 运 行 windows 几 乎 跑 51CTO:您也是经历过很多技术变迁的老系 于 Linux 的 介 绍 , 我 被 其 中 “ 源 代 码 全 部 开 不起来,运行 linux 倒是没有什么影响。我就 统 管 理 员 了 , 从 Netware , IBM 和 HP 的 放”所吸引。我有点不敢相信,因为当时正在 是这样开始了 Linux 之路。 Unix , Sun 的 Solaris , 到 Windows NT 和 学习编程,正苦于为找不到系统代码而发愁。 51CTO : 您 对 Linux 和 Solaris 系 统 写 过 Linux,您都或多或少接触或了解过。您自己 从那以后,每一份杂志我都要浏览一下有没有 不少文章,也出版过好几本书籍了。最初开始 是如何看待并适应这种技术变迁的?有没有什 Linux 方面的消息。我在没有电脑、连 Win32 写这方面的文章,是有什么契机么? 么建议提给现在一些年轻的系统管理员们? 操作都不熟练的的情况下,买了一本《 Linux 曹江华:我开始写作是看到 2000 年《开放 曹江 华: 其实 我学 习使 用的 主 要 是类 Unix 从入门到精通》,然后安装《微电脑世界》随 系统世界》创刊号,我把自己写的两篇 Linux 操作系统。要说建议,这里有一篇我发表在 书 赠 送 的 蓝 点 Linux ( 51CTO 编 辑 注 : 蓝 配置总结的稿件发送给他们,马上他们的编辑 2005 年 9 月 的 《 网 管 员 世 界 》 的 一 篇 文 章 , 点 /BluePoint 是 那 个 时 候 红 极 一 时 的 中 国 联系我文章也发表在第四期上。当时 Linux 用 感觉可以当作给现在一些年轻的系统管理员们 Linux 发行版,只用了半年就在纳斯达克上市, 户很少,文章奇缺。现在看起来自己写的两篇 经验。 市值 4 亿美元。不过后来由于种种原因而以出 稿件是 ABC 之类扫盲文章。从此之后开始了和 (接下篇) 售作为终结,所以现在的 Linux 用户们可能没 《开放系统世界》长达七年的合作,我和国晓 听说过这个发行版)。我硬是把这本书从头到 推荐文章: 平编辑合作一共写了文章 147 篇共 80 多万字。 尾看了一遍,终于搞明白了什么是分区、什么 是 mount。因为我没有学习过 Windows,所以 后来又开始和网管员世界、 IT168、IBM 开 和其他用户相比,对命令行并不排斥。对于我 发者频道、计算机世界、中国计算机报、 来 说 感 觉 Windows 系 统 和 Unix 、 Linux 是 51CTO、微电脑世界、天极网、IT 专家网等十 一样的,没有什么不同。 多家媒体合作,加起来也有 200 多篇文章 100 万字。 51CTO:回顾您在系统运维领域这么多年的 经历,您觉得哪段时间是您成长最快的?那段 51CTO:撰写过这么多文章和书籍,您觉得 时间有没有什么记忆深刻的人或事,或者什么 对您自己收获最大的是什么? 特别的经历或机遇? 4 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 5. 交流 Interact 从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。 passwd , su, umask , chgrp, chmod, chown, chattr, sudo, pswho 三、选择一本好的工具书 系统学习 Linux 的 11 点建议 工具书对于学习者而言是相当重要的。一本 错误观念的工具书却会让新手整个误入歧途。 文/曹江华 目前国内关于 Linux 的书籍有很多不过精品的 不 多 , 笔 者 强 烈 建 议 阅 读 影 印 本 的 “O'Reilly 原版 Linux 图书”,而且出版社 还提供了一个非常好的路线图: http://www.oreilly.com.cn/guide/guide_linux.php 一、从基础开始 不 同 版 本 的 Linux 命 令 数 量 不 一 样 , 这 里 四、选择一个适合你的 Linux 发行版本 常 常 有 些 朋 友 在 Linux 论 坛 问 一 些 问 题 , 笔者把它们中比较重要的和使用频率最多的命 令,按照它们在系统中的作用分成几个部分介 目 前 全 球 有 超 过 1 百 多 个 Linux 发 行 版 本, 不过,其中大多数的问题都是很基础的。例如 为什么我使用一个命令的时候,系统告诉我找 绍给大家,通过这些基础命令的学习我们可以 在国内也能找到十几个常见版本。如何选择请 不到该目录,我要如何限制使用者的权限等问 进一步理解 Linux 系统: 根 据 你 的 需 求 和 能 力 , Redhat Linux 和 题,这些问题其实都不是很难的,只要了解了 安装和登录命令: Debian Linux 是网络管理员的理想选择。 Linux 的 基 础 之 后 , 应 该 就 可 以 很 轻 易 的 解 login, shutdown, halt, reboot, mount, 五、养成在命令行下工作的习惯 决掉这方面的问题。而有些朋友们常常一接触 umount, chsh 一定要养成在命令行下工作的习惯,要知道 Linux 就 是 希 望 构 架 网 站 , 根 本 没 有 想 到 要 文件处理命令: X-window 只是运行在命令行模式下的一个应 先了解一下 Linux 的基础。这是相当困难的。 file, mkdir, grep, dd, find, mv , ls , diff, cat, ln 用程序。在命令行下学习虽然一开始进度较慢 二、Linux 命令是必须学习的 系统管理相关命令: 但是熟悉后,您未来的学习之路将是以指数增 加的方式增长的。从网管员来说,命令行实际 虽 然 Linux 桌 面 应 用 发 展 很 快 , 但 是 命 令 df, top, free, quota , at, lp, adduser, groupadd kill, crontab, tar, unzip, 上就是规则,它总是有效的,同时也是灵活的 在 Linux 中依然有很强的生命力。Linux 是一 gunzip , last 即使是通过一条缓慢的调制解调器线路,它也 个命令行组成的操作系统,精髓在命令行,无 网络操作命令: 能操纵几千公里以外地远程系统。 论图形界面发展到什么水平这个原理是不会变 的,Linux 命令有许多强大的功能:从简单的 ifconfig, ip , ping , netstat , telnet, 六、选择一个适合你的 Linux 社区 磁盘操作、文件存取、到进行复杂的多媒体图 ftp, route, rlogin rcp , finger , mail , nslookup 随 着 Linux 应 用 的 扩 展 , 出 现 了 不 少 象和流媒体文件的制作。 系统安全相关命令: Linux 社 区 。 其 中 有 一 些 非 常 优 秀 的 社 区 : 5 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 6. 交流 Interact www.linuxforum.net 、 http://www.chin 明的是你要有周全的思考,准备好你的问题, 掌 握 vi,gcc,gdb 等 常 用 编 辑 器 , 编 译 器 , aunix.net/ , 但 是 这 几 个 论 坛 往 往 是 Linux 不要草率的发问,否则只会得到到草率的回答 调试器 。 高手的舞台,如果在探讨高级技巧的论坛张贴 或者根本得 不到任何答案。最好先搜寻一下 理 解 shell 别 名 、 管 道 、 I/O 重 定 向 、 输 非常初级的问题经常会没有结果。 论坛是否有您需要的文章。这样可以获得事半 入和输出以及 shell 脚本编程。 功倍的效果。 七、勤于实践 学习 Linux 环境下的组网。 要增加自己 Linux 的技能,只有通过实践 九.用 Unix 思维学习 Linux 访谈原文: 来实现了。所以,赶快找一部计算机,赶快安 Linux 是参照 Unix 思想设计的,理解掌握 http://os.51cto.com/art/201012/236245.htm 装 一 个 Linux 发 行 版 本 , 然 后 进 入 精 彩 的 Linux 必 须 按 照 Unix 思 维来 进行 。 思 想 性 的 《系统学习 Linux 的 11 点建议》一文最初刊于 2005 Linux 世界。对 Linux 命令熟悉后,可以开始 转变比暂时性的技术提高更有用,因为他能帮 年 9 月的《网管员世界》。 搭建一个小的 Linux 网络,这是最好的实践方 助你加快学习速度。 法。Linux 是网络的代名词,Linux 网络服务 十.学习专业英文 功能非常强大,不论是邮件服务器、 Web 服务 器、DNS 服务器等都非常完善。当然你不需搭 如果你想深入学习 Linux,看不懂因为文档 建所有服务,可以慢慢来。 实在是太难了。写的最好的,最全面的文档都 是英语写的,最先发布的技术信息也都是用英 八、如何得到联机帮助 语 写 的 。 安 装 一 个 新 的 软 件 时 先 看 README , 主 流 Linux 发 行 版 都 自 带 非 常 详 细 的 文 档 再看 INSTALL,然后看 FAQ,最后才动手安装, (包括手册页和 FAQ),从系统安装到系统安 这样遇到问题就知道为什么。 全,针对不同层次的人的详尽文档,仔细阅读 十一.最后是 Linux 学习的路线图 文档后 40%问题都可在此解决。 掌握至少 50 个以上的常用命令。 查 阅 经 典 工 具 书 和 Howto , 特 别 是 Howto 是 全 球 数 以 万 计 的 Linux 、 Unix 的 经 验 总 结 熟 悉 Gnome/KDE 等 X-windows 桌 面 环 境 非常有参考价值通常 40%的问题同样可以解决。 操作 。 如果上面的措施没有解决问题,此时你就需 掌握.tgz、.rpm 等软件包的常用安装方法 要 Linux 社区的帮助了。Linux 的使用者一般 学习添加外设,安装设备驱动程序(比如网 都是专业人士,他们有着很好的电脑背景且愿 卡) 意协助他人,Linux 高手更具有鼓励新手的文 熟悉 Grub/Lilo 引导器及简单的修复操作 。 Linux 学习图书路线图 化精神。如何在 Linux 社区获得帮助,需要说 熟悉 Linux 文件系统 和目录结构。 6 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 7. 交流 Interact 首先必须明确,理论上检测另外一台机器是否宕机是无法做到的。 工作机 Lease 失效,可以将工作机上的服务迁 移到集群中的其它机器,这时因为工作机发现 自己 Lease 失效会主动停止服务。当然,这里 如何检测一台机器是否宕机? 需要注意,由于总控节点和工作机的时钟可能 不一致且有网络延迟,总控节点上的 Lease 超 时时间要长,也就是说,如果工作节点的 文/日照 Lease 超 时 时 间 是 12 秒 , 总 控 节 点 可 能 需 要 13 秒后才能确认工作节点已经停止了服务,从 而避免数据不一致问题。 编 者按:本文来自淘宝核心系统运维团 队博客,文中描述的宕机检测方式适 Fischer 的论文。可以简单理解如下: A 机器 往 B 机器发送心跳包,如果 B 机器不发送响应, 同构节点之间的选主也有一个宕机检测问题。 比如总控节点宕机,备份节点需要能够检测并 用于大规模集群环境,但原理仍是基于双节点 A 无 法确定 B 机器是宕 机了还是 过于 繁忙 ,由 升级为主节点继续对外服务。 Mysql 数据库经 有需求的朋友们可以借鉴。 于 A 和 B 两台 机器的时 钟可能不 同 步, B 机器 常 采 用 Heartbeat + DRBD + Mysql 的 高 检测一台机器是否宕机的应用场景如下: 也无法确定多久没有收到 A 机器的心跳包可以 可用性方案,据说能够达到 3 个 9 的高可用性, 认为必须停止服务。因此, A 机器没有办法确 主 节 点 和 备 节 点 维 持 Heartbeat , 当 提 供 服 1, 工作机器宕机,总控节点需要能够检测 定 B 机器已经宕机或者采取措施强制 B 机器停 务 的 主 节 点 出 现 故 障 时 , 备 节 点 的 到并且将原有服务迁移到集群中的其它节点。 止服务。 Heartbeat 检 测 到 主 节 点 没 有 心 跳 ( 例 如 , 2, 总 控 节 点 宕 机 , 总 控 节 点 的 备 份 节 点 Ping 不 通 主 节 点 ) , 备 节 点 自 动 接 管 虚 拟 当然,工程实践中,由于机器之间会进行时 (一般称为 Slave)需要能够检测到并替换成 IP,升级为主节点提供 Mysql 读写服务。 钟同步,我们总是假设 A 和 B 两台机器的本地 主节点继续对外服务。 时钟相差不大,比如相差不超过 0.5 秒。这样, 由 于 Heartbeat 检 测 机 器 主 节 点 宕 机 不 可 检测一台机器是否宕机必须是可靠的。在大 我 们 可 以 通 过 Lease 机 制 进 行 宕 机 检 测 。 靠,这个方案存在众所周知的脑裂问题,即集 规模集群中,机器可能出现各种异常,比如停 Lease 机制就是带有超时时间的一种授权。假 群中可能同时存在多个主节点同时提供服务。 电,磁盘故障,过于繁忙导致假死等。对于机 解决这个问题本质上还是需要引入仲裁节点, 设总控节点需要检测工作节点是否宕机,总控 器假死,如果总控节点认为机器宕机并将服务 比 如 Heartbeat + DRBD 方 案 中 引 入 Fence 节点可以给工作节点发放 Lease 授权,工作节 迁移到其它节点,假死的机器又认为自己还可 节点使出现问题的节点从集群中脱离,或者引 点持有有效期内的 Lease 才允许提供服务,否 以提供服务,则会出现多个节点服务同一份数 入 分 布 式 锁 服 务 , 比 如 Chubby 的 开 源 实 现 则主动下线停止服务。工作节点的 Lease 快要 据而导致数据不一致的情况。 到期的时候向总控节点重新申请 Lease(一般 Zookeeper 服 务 。 分 布 式 锁 服 务 实 现 主 节 点 首先必须明确,理论上检测另外一台机器是 称为 renewLease),总控节点定时检测所有 选举 大致 如下:主 节点和备节点到 Chubby 中 否宕机是无法做到的,有兴趣的同学可以参考 工作机的 Lease 授权是否合法,如果发现某台 抢锁,抢到锁的节点在锁的有效期 (Lease 期) 7 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 8. 交流 Interact 内提供服务,当主节点锁的 Lease 快要到期时, 稳定更新中。 主节点申请延长锁的超时时间,正常情况下分 小阅读:谁在编写 Linux 内核? 正如最近五个内核版本提交的代码数量下降 布式锁服务总是优先满足主节点的请求,当主 一样,为 Linux 内核贡献代码的企业数量也在 节点出现故障时,备节点能够抢到锁切换为主 根 据 2010 年 “ 谁 在 写 Linux” 报 告 显 示 , 下 降 。 2.6.30 内 核 已 知 的 代 码 贡 献 企 业 是 节点提供服务。 提 交 给 2.6.35 内 核 的 代 码 量 比 去 年 发 布 的 245 家 ,但 到 2.6.35 版 本时 , 贡 献 代 码 的 企 最 后 还 有 一 个 问 题 , 假 设 总 控 节 点 通 过 2.6.30 内 核 的 代 码 量 少 18% , 过 去 一 年 来 提 业数量就下降到 184 了。 Lease 机制检测工作节点是否宕机,这种方案 交的内核代码减少的原因很多,包括阶段代码 一 些 知 名 的 Linux 内 核 代 码 贡 献 企 业 也 发 是可靠的,不过当总控节点宕机时,如果不采 新的提交流程。 生了细微的变化。 取任何措施,集群中的所有工作节点都将因为 报告解释了从 2.6.28 内核开始的代码阶段 无法重新申请 Lease 而停止服务,这就是带有 ◆贡献最 多的 仍然 要数 Red Hat ,2.6.30 树。最初的状态树启动了一个进程,将大量树 总控节点的设计固有的脆弱性,某个设计或者 外的代码合并到主 Linux 内核中。根据今年的 内核有 12%的代码变化都是 Red Hat 贡献的 编码的错误都有可能造成严重的影响。解决这 报告 显示 ,从 2.6.31 开发 周期可以 看出 ,因 ◆英特尔次之,贡献了 7.8% 个问题一般会有一个叫做 Grace Period 的机 积压下来的大量代码需要处理,这一进程就放 ◆Novell 贡献了 5% 制,工作节点 Lease 超时时将停止服务,但是 慢了。报告还指出,新的驱动程序经由阶段树 ◆IBM 贡献了 4.8% 工作节点并不一开始就重启或者下线,而是处 源源不断进入主 Linux 内核。 于一种危险状态(称为 Jeopardy),这种状态 ◆ 从 2.6.30 内 核 开 始 , 诺 基 亚 贡 献 了 虽然新代码的提交步伐和去年相比不在同一 持 续 一 个 Grace Period , 比 如 45 秒 。 如 果 2.3% 的代 码 , 德 克 萨斯 仪 器 提 交了 1.5% 的代 水平,但整体来看进展还是不错。报告指出, 在 Grace Period 内 总 控 节 点 重 启 , 工 作 节 码,无线厂商 Atheros 添加了 1.4% 的 Linux 自 2.6.30 内 核 开 始 , 每 天 有 9058 行 代 码 添 点和总控节点重新联系上从而可以切换为正常 内核代码。 加到 Linux 内核,包括周末和节假日。 状态继续提供服务。 ◆ 相 反 , Ubuntu Linux 背 后 的 过 去 五 年 半 以 来 , 从 2005 年 的 2.6.11 内 如果需要较好地理解宕机及选举相关的问题, 核 到 2010 年 的 2.6.35 内 核 , 平 均 每 一 小 时 Canonical 在 最 近 五 个 Linux 内 核 版 本 中 所 可 以 阅 读 并 思 考 Paxos 相 关 的 论 文 , 比 如 做的贡献却很少。 就会有 4.02 个补丁应用到内核树上。 Paxos made simple, The Part-time 原文: Parliament, Paxos made live, Paxos 内核发布后,就进入维护期,根据需要更新 http://os.51cto.com/art/201012/236379.htm made practical, Chubby 等。 补丁。有些版本的内核更新补丁会多一点,如 2.6.32 内 核 是 过 去 五 年 来 更 新 补 丁 最 多 的 一 推荐阅读: 原文: 个 版 本 ( 报 告 指 出 2.6.32 内 核 总 共 有 1793 Linux 内核入门,包教会 http://rdc.taobao.com/blog/cs/?p=708 个 修 复 补 丁 ) 。 McPherson 指 出 , Linux http://os.51cto.com/art/201007/213583.htm 2.6.32 内 核 经 过 长 时 间 的 补 丁 修 复 , 现 在 正 8 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 9. 八卦 News 在 2010 年 11 月 -12 月之间,发生了下面这些事…… 【开源的商业模式】麦克尼利最近表示甲骨 文 CEO 拉里埃里森是一个伟大的资本家,但并 不是一个“好的”资本家。卖掉 SUN 之后麦克 八卦,趣闻与数字 2010.11 - 2010.12 尼利立场有了很大的转变,似乎不再看好开源 的发展前景。 http://os.51cto.com/art/201011/233627.htm 收集整理/51CTO 系统频道 【 Linux 病 毒 】 第 一 个 Linux 系 统 上 的 病 毒可以追溯到 1996 年,而之后的 15 年间,一 直有新的 Linux 病毒出现,尝试攻击互联网上 的服务器们和用户们。 【 Solaris 】 根 据 Oracle Solaris 【OpenSSH】开源也是要钱的。没有钱,项 http://os.51cto.com/art/201011/235491.htm Express 11 的许可协议,这个发行版不可以 目的开发成本、服务器的费用等等都无法支撑。 用于生产环境,只能用于开发和演示。 http://os.51cto.com/art/201011/233550.htm 【 RHEL 6 】 RHEL 6 的 防 火 墙 配 置 工 具 和 http://os.51cto.com/art/201011/233519.htm Firestater 相比不相上下,但是比之另外一 【LibreOffice】现在看来,要 OOo 与 LO 个 专 业 工 具 Firewall Builder 功 能 上 还 有 【 超 级 计 算 机 】 Linux 依 然 是 超 级 计 算 机 复 合 已 无 希 望 ; 在 LO 前 进 道 路 上 充 满 着 很 多 不足之处。 的绝对主力,对比 6 月份数据发现 Linux 总 挑战,前景并不乐观。 http://os.51cto.com/art/201011/235916.htm 体 上 升 5 台 , 牢 牢 占 有 82% 的 份 额 , 其 中 http://os.51cto.com/art/201011/234193.htm CentOS 上升 1 台,SLES 9 下降 1 台,SLES 【 Solaris 11 】 Solaris 11 将 在 几 秒 钟 【Novell】2010 年 11 月 22 日,IDG 传出 10 下 降 2 台 , SUSE/openSUSE/SLES 系 还 立即启动,而不是把启动时间控制在分钟之内 消 息 , Novell 已 经 在 周 一 同 意 了 在下降。 它还将采用无风险的更新模式,广泛的解决故 Attachmate 公 司 以 22 亿 美 元 出 价 的 收 购 , http://os.51cto.com/art/201011/233506.htm 障问题,还可以迅速重启失败的应用和服务项 整个收购过程将在未来数月内完成。 目。 【 Ubuntu 】 Ubuntu 11.04 Alpha 1 中 http://os.51cto.com/art/201011/234526.htm http://os.51cto.com/art/201012/236785.htm 我们就见到了 Unity 界面首次在桌面版中的应 【 Linux 内 核 】 由 于 一 个 仅 有 200 余 行 代 用 , 你 可 以 使 用 Ubuntu Launcher 来 打 开 码 的 补 丁 , 未 来 的 Linux Kernel 2.6.38 Pin 在该栏中的应用程序,并且可以在当前运 或许会成为下一年度最受期待 Linux 内核版 行的应用程序间切换。 本。 http://os.51cto.com/art/201012/236734.htm http://os.51cto.com/art/201011/233692.htm 9 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 10. 专题 Special 调查报告:运维与开发的常用工具 本期专题:运维与开发 在 Linux 平台上,运维与开发人员往往 是 密 切 相 关 的, 尤其 是对 于 Web 服务 提供方而言更是如此。为了提高产品从开发到 生产环境部署这个环节的效率,近年来有不少 运维界的高手们开始提倡“敏捷运维”、 “DevOps”等概念,主张运维与开发者之间更 加紧密的在一起工作。 为 了 更 方 便 的 了 解 运 维 和 开 发 在 Linux 使 用习惯上的异同, 51CTO 系统频道近日做了一 些小调查。此次调查主要针对开发者与系统运 维 , 收 集 到 有 效 回 复 50 余 份 , 下 面 选 取 较 有 代 表 性 的 30 份 数 据 进 行 分 析 , 覆 盖 人 群 包 括 Web 开 发 者 、 移 动 开 发 者 、 网 络 游 戏 开 发 / 运 维、系统运维、网络工程师。 覆盖问题包括: 1、常用的 Linux 发行版 2、常用的编辑器 运维与开发在 Linux 下使用的工具有相同的,也有不同的。比如 Terminal 往往是双方都 是用的,而他们是用的文本编辑器则往往不同。比如,开发者常用 emacs 和 Eclipse,而运 3、常用的语言 维则往往使用 Vi 或 Vim 即可。 4、常用的浏览器 上图是一个搞笑漫画,展示了常见编辑器的学习曲线。纵轴代表一个编辑器的使用熟练程度, 这份调查报告限于受访者范围,并不具备代 横轴代表使用该编辑器的时间长度。曲线坡度越陡的,就是该编辑器越难学习的意思。 表性,目的仅在于反映在职开发者和运维的技 图片来源:http://coolshell.cn/articles/3125.html 术关注点。 (下接第 12 页) 10 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 11. 专题 Special Python 也是一个非常值得推荐的利器。这种语言具有非常简捷而清晰的语法特点,适合 效 让 人 印 象 深 刻 , 目 前 包 括 Yahoo 、 Sina 在 完成各种高层任务,几乎可以在所有的操作系统中运行。 内的很多公司都会用它来跑应用。这类系统熟 悉 之 后 , 以 后 从 事 Solaris 相 关 工 作 也 会 减 少难度(同样的 Unix 血统)。 运维人员应该掌握哪些常用技术 如果有中间件要求的,可以适当接触 Weblogic ( Oracle 系 ) 或 WebSphere ( 文/王文文 IBM 系)、Jboss(红帽系)。这些东西在目 前流行的大型应用中非常广泛。 三、编程开发 混 Windows 系 统 的 自 觉 一 点 学 好 本 着自己几年运维的工作经验和几个大 型网站工程师的不吝赐教。这里将个 Hyper-V 又成了微软工程师不得不掌握的重型 武器。 Powershell 吧 。 要 是 说 前 几 年 还 得 看 看 VBscript 的 话 , 未 来 就 都 是 Powershell 的 人总结的一些体会发出来给大家参谋参谋(注 二、Linux/BSD 系统 天下了。 不包含怎么做人)。如果看完本文您有任何问 题或意见,欢迎和我交流。我的 blog 是: 虽然 Ubuntu 现在很火,但是在公司里使用 PowerShell 是 微 软 公 司 于 2006 年 第 四 季 http://verdureorange.blog.51cto.com 的 大 多 还 都 是 Redhat 系 列 和 Suse 系 列 。 你 度 正 式 发 布 的 。 它 的 出 现 让 Windows 在 运 维 得熟悉 DNS 、 NIS 、 Apache 、 SMB 、 方 面 拉 近 了 与 Unix, Linux 等 操 作 系 统 的 距 下面将运维中需要学习或能让你运维工作加 DHCP 、 Sendmail 、 FTP 、 MySQL 这 些 常 规 服 离 。 目 前 支 持 .Net Framework 2.0 。 能 够 分的技能稍做介绍。首先我们假设你是一个公 务 。 如 果 公 司 的 IT 业 务 大 规 模 对 外 , 你 还 得 运 行 在 Windows XP SP2 之 后 各 种 操 作 系 统 司 的 IT 运 维 经 理 。 需 要 搞 定 五 十 台 以 上 的 服 学会 LVS 或 Nginx 等负载均衡技术。 上。能够同时支持 WMI , COM , ADO.NET 务器和若干杂七杂八的设备,哪些技术你会用 , ADSI 等 已 有 的 Windows 管 理 模 型 。 这 的上? 友情提示:如果你将去人人网或豆瓣等新锐 项全新的技术提供了丰富的控制与自动化的系 Web2.0 公司,那你还得熟悉 Cassandra 之类 一、微软系统 统 管 理 能 力 ; 而 “ 脚 本 语 言 ” ( scripting 混合 型的非 关 系的数据库技术 ; Memcache 之 对 于 Windows 的 熟 悉 是 最 基 本 的 。 当 然 , languages)则是用来编写程序的计算机语言。 类高性能分布式的内存对象缓存系统(它通过 作为一个运维经理,可不是整天玩个 Windows 脚本语言通常都有简单、易学、易用的特性, 在内 存里 维护 一个 统一 的 巨 大的 Hash 表 存 储 7 或 XP 就可以交差的。你得掌握微软 Active 目的就是希望能让写程序的人(开发者)快速 各种格式的数据)。 Directory 及 其 上 层 各 种 服 务 和 应 用 的 搭 建。 完成程序的编写工作。 既 然 说 了 Linux , 这 里 也 顺 带 要 提 一 下 一 般 常 用 的 有 ISA 、 Exchange 、 SQL BSD , 同 样 是 开 源 的 宠 儿 , BSD 的 安 全 性 和 高 关 于 Linux 平 台 下 的 运 维 人 员 , 还 是 推 荐 Server 。 随 着 Windows 2008 的 大 放 异 彩 , Shell 加 Perl 的 组 合 ,毕 竟 那 么多 年 过 来了 11 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 12. 专题 Special 这个组合一直在为各大网站的工程师们稳定的 通过专门的存储管理软件,可以直接在 SAN 工 作 着 。 另 外 , Python 也 是 一 个 非 常 值 得 推 里的大型主机、服务器或其他服务端电脑上添 调查报告:常用的 Linux 发行版 荐利器。这种语言具有非常简捷而清晰的语法 加硬盘和磁带设备(现在大多数的 SAN 是基于 特点,适合完成各种高层任务,几乎可以在所 光纤信道交换机和集线器的。相当于一个高速 有的操作系统中运行。目前,基于这种语言的 的子网, 通 常 SAN 由 RAID 阵列 连 接 光纤 通 道 相关技术正在飞速的发展,用户数量急剧扩大 组成,SAN 和服务器和客户机的数据通信通过 相关的资源非常多。 SCSI 命令而非 TCP/IP,数据处理是“块级”。 四、网络设备 NAS 则以数据为中心,将存储设备与服务器 彻底分离,集中管理数据,从而释放带宽、提 熟悉网络基础知识、网络通信协议和常见的 高性能、降低总拥有成本、保护投资。其成本 网络设备是必须的。建议把思科和华为这两家 远远低于使用服务器存储,而效率却远远高于 的产品摸熟。 后者。这类设备相对来说还算简单。 友情提示:很多人会把华为和 H3C 当成一家, SAN 和 NAS 的应用都非常广泛,现成的解决 其实他们两家设备的命令并不怎么兼容。 方案也有很多,它们可以混用,也可以单独使 如果是在稍微大一点的公司工作或者哥们你 用,主要还是根据自己公司的实际情况来定。 图 1 开发者常用的 Linux 发行版 就是在 IDC 混,那还得学会对企业局域网和广 原文: 域 网 进 行 规 划 、 实 现 和 检 查 排 错 , VLAN 是 必 http://netsecurity.51cto.com/art/201007/209096.htm 须的。其他就是视频、语音之类的网络服务了。 推荐阅读: 基础的都搞明白了之后还想提高自己朋友可 以去学一下 CCNP 或者 H3CNE 的课程。 门户网站运维经验谈 http://os.51cto.com/art/201008/219699.htm 五、存储 SA,神仙与装机男:运维的工作到底啥样儿? 这里顺带着提一下存储,给新手做一个概念 http://os.51cto.com/art/201007/214401.htm 上的介绍。当然,这类东西在数据量大的企业 运维漫谈:半身半仙亦民工 中也是经常用到的。 http://os.51cto.com/art/201008/219611.htm 先说 SAN。SAN 是专门用于提供企业商务数 十大 x86 服务器常见故障:系统篇 图 2 运维常用的 Linux 发行版 据或运营商数据的存储和备份管理的网络。因 为是基于网络化的存储,SAN 比传统的存储技 http://os.51cto.com/art/201008/220004.htm (下接第 14 页) 术拥有更大的容量和更强的性能。 12 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 13. 专题 Special 系统管理员通常被认为是生产环境的拥有者。他们是持续跟踪机器运行状态的人,是凌晨 限制访问的产生由来: 2 点会被电话叫醒的人,基本上也是和生产环境问题距离最近的人。 如果开发人员不能够访问生产环境,一个最 大的含义就是他们不能自己去安装程序。也就 是否应该允许开发人员进入生产环境? 意味这管理员要去为他们安装程序。这其中会 发生两件事情: 1)开发人员和系统管理员 必须交流——相 文/外刊 IT 评论 互的交流!管理员必须学会如何安装程序(我 可不希望是由我去解释),这应该是件好事。 2)开发人员必须制作安装文件和编写简单 有效的部署步骤说明。这也是很好的事情。能 在 Web 开发 公司里, 有个问题 会被 一而 再、再而三的提出来,这就是: 事情变的繁琐,耽误时间,但我想这时间也不 会是一种不可接受的漫长。 按步骤来重建系统是应对灾难恢复的重要的一 部分。 “是否应该允许开发人员进入生产环境?如 “我们以前就是这么干的。” 所以,一旦开发人员被限制访问生产环境, 果是,允许到什么程度?” 我们就能避免那种因为程序过于复杂以致于只 创业公司很少一成立就有一些系统管理员。 有开发人员出面才能部署安装的情况出现。同 对于此,我的观点是,整体上,应该限制开 出于某些原因,系统管理员会被认为是一种奢 样,开发人员也避免了把时间浪费在部署和安 发人员访问生产环境。在论证我这个观点之前 侈品。尽管这种状况在以前是可以的,但随着 装程序的工作上了,节省下的时间开发新程序 我想声明一下,我的立场绝对不是基于对开发 公司的成长,管理员应 该慢慢增多。事情会 岂不更好。虽然起初他们会多花一点时间,但 人员的品质品行的判断——所以请不要往这方 变的越来越复杂,这也是公司为什么需要系统 以后会越来越方便。 面想。首先我要公布一些常见的程序员们不喜 管理员的原因。所以说,“我们以前就这么 欢或讨厌这个观点的论据: 干”的说法并没有多少说服力。 这样管理员也能学到更多的关于安装过程中 需要备份哪些东西的知识了。即使在管理员对 “系统管理员什么都不让我们干,他又解决 “我们需要进入生产环境解决问题。” 程序不太了解的情况,他们只需对着开发人员 不了,我们根本没法完成任务。” 也许是,也许不是。管理员应该能够给你想 提供的文档来执行他们的备份操作。 如果真是这种情况,那么他们应该是对的。 要的各种信息。如果这个过程成为瓶颈,那么 如果是因为没有足够的管理员或管理员不称职 允许有限范围内的访问是合适的。 开发人员所关心的并不一定是系统管理员所关 那么瓶颈就会出现。然而,允许开发人员访问 心的: 还有很多的关于限制开发人员访问的讨论, 生产环境并不是一种解决方案,因为即使这一 但来让我们把目标转向我真正想讨论的——为 通常开发人员所关注的安全领域并不一定会 回你把问题解决了,以后还是会出现缺少管理 什么这是一个好建议。 是系统管理员所关注的领域。对于 Web 网站安 员的情况。有时候一些管理上的规章制度会使 全,他们只是擅长他们自己特有的领域。诸如 13 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 14. 专题 Special 跨站脚本攻击,SQL 注入等安全问题是开发人 者。拥有者有最终话语权。” 员擅长的,对于系统管理员则不然。诸如账户 调查报告:常用的编辑器 系统管理员通常被认为是生产环境的拥有者。 权限,文件权限,web 服务器配置通常不是开 他们是持续跟踪机器运行状态的人,是 凌晨 2 发人员擅长的和感兴趣的,而这些对于生产环 点会被电话叫醒的人,基本上也是和生产环境 境确十分重要的,它们是系统管理员擅长的领 问题距离最近的人。如果开发人员直接访问的 域。我对这个领域的见解是越少人访问越安全 生产环境,那这种管理控制无形中就给破坏了。 还有,这能有效的避免凌晨两点被电话吵醒— — 因 为 系 统 管 理 员 怀 疑 你 们 15 个 程 序 员 中 的 系统管理员的职责: 某个人在服务器上做了不当的操作。 为了能在这种原则下正常的工作,管理员必 须完成一些工作。 变更控制: 1)向开发人员们询问他们想从你这得到什 我不认为一个稳重的程序员会不把变更控制 么信息,你要很乐意的给他们想要的。 当作重要的事情。因为在程序中经常会有这样 的事情。然而,我发现许多程序员却不会慎重 2)确保开发人员在他们自己的空间里有一 的把在服务器上的每次改动都做上日志。(当 个好的开发环境。 图 3 开发者常用的编辑器 然我也看到过一些配置文件是有版本控制的) 3)理论结合实践。每个公司都有自己的特 如果你没有这样做,这意味这生产环境不可 殊情况,有些公司由于自身业务的原因决定了 能正确的重建。这也意味着如果某些改动导致 开发人员的无访问权限(比如金融类)。然而 了问题,对于来解决问题的人却未必能知道这 即使你那不是个金融 公司,取消开发人员的 些曾经发生过的改动。这就好像是一个系统管 访问特权的作业制度也是最好的方案。有可能 理员打开产品代码,在未通知任何人的情况下 某些开发人员同时担任这系统管理员的工作, 修改了程序或提交到产品里。哇,我估计程序 所以每个公司都有自己的情况。 员们会抓狂的。 原文: 拥有者对其有控制权: http://blog.serverfault.com/post/893001713/ 译文: Joel’s Spolsky 有 句 话 放 在 管 理 工 作 上 http://www.aqee.net/2010/08/16/should-developers- 图 4 运维常用的编辑器 很合适: have-access-to-production/ (下接第 17 页) “每人都有自己的一块领地。是谁的,就是 谁的。如果一个管理者或其他人,想插手一个 事情的管理方式,他必须保证自己是事情拥有 14 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 15. 专题 Special 每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常 USERNAME ) 即 可 。 crontab 文 件 的 默 认 编 辑 的多,甚至会撑爆整个系统。 器是 vi,可以输入 export VISUAL='editor' Linux 计划任务:听酒哥分享 Crontab 使用心得 更改默认编辑器。 cron 服务每分钟不仅要读一次 /var/spool/cron 文/抚琴煮酒 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让 cron 执行任务。 使 用 crontab 命 令 是 对 用 户 级 任 务 的 配 置 , 你 用 过 Crontab 吗 ? 你 对 Crontab 了 启动的, 而编辑 /etc/crontab 文件是对系统级任务 解吗?你知道如何以秒为级别执行任 service crond status 的配置。 务 吗 ? 你 知 道 怎 样 让 Crontab 执 行 PHP 脚 本 crond (pid 3444) is running... 抚 琴 煮 酒 定 义 的 crontab 语 法 比 较 好 记 , 吗 ? 你 知 道 Crontab 的 一 些 特 别 的 用 途 吗 ? 手快 的小 伙可用 chkconfig crond on 让 推荐记忆学习: 在本文中,抚琴煮酒将向大家介绍自己多年来 其在 level3 和 level5 自动运行。 分 时 日 月 星期 用户 带绝对路径的命令 脚本或 使用 Crontab 的一些心得。 cron 把 命 令 行 保 存 在 crontab ( cron PHP 详细路径 服务器系统:64Bit CentOS 5.5 table)文件里,这个文件通常在 /etc 目录 细 心 的 你 发 现 没 有 , crontab 最 小 执 行 时 虽 然 关 于 Crontab 的 介 绍 到 处 都 是 , 详 下 。 每 个 系 统 用 户 都 可 以 有 自 己 的 crontab 间为分钟,如果要求任务是以秒为级别的怎么 细 读 了 一 遍 这 个 词 条 , 收 获 还 是 有 的 。 (在 /var/spool/cron/ 下)。要查看当前 办,其实是有办法的,我等会以实例说明下; 服务器我建议也以 /etc/crontab 为主,它更 Crontab 这 个 名 字 来 自 “ chronos” , 一 个 用户的 crontab,输入 方便控制用户管理;建议服务器上的计划任务 古希 腊语 , “时间” 的意思(以下用法在生产 crontab -l 要编辑 crontab,输入 时间错开,不要同时并行任务,不然会在某时 环境下的服务器非常有用,抚琴煮酒强烈推 间段 造成系统 负载 过大,搞得你的 Nagios 狂 荐 ) ; 关 于 crontab 的 基 础 用 法 和 语 法 我 就 crontab -e 要删除 crontab,输入 发报警邮件。 不推荐了, google 和 51cto 上到处都是,我 说的是一些进阶技巧,里面也有可能是不知道 crontab -r 的;Shell 脚本均取自于线上服务器。我安装 如 当 前 是 root 身 份 , 要 查 看 / 编 辑 / 删 除 / 的服务器一般都是采用最小化安装,安装以后 某用户的 crontab,只需在相应的命令后加上 就发现启动 cron 的管理服务 crond 默认就是 -u USERNAME ( 如 crontab -e -u 15 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 16. 专题 Special /dev/null(linux 的回收站),把标准错误 一 次 后 再 写 进 crontab 里 , 这 是 保 证 成 功 的 输出(2)发送到和标准输出(1)同样的地方 必要条件。 ( 即 /dev/null ) 。 运 行 这 行 命 令 将 不 会 产 crontab 如 何 以 秒 为 执 行 你 的 Linux 计 划 生任何输出。举例说明如下: 任务呢,许多同事和同学都问过我这个问题。 30 15 13 6 1 * root tar czf 其实这个问题很简单,我以实例说明下: /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1 我以前的办公室是一台 ubuntu 服务器,连 CentOS/FreeBSD 下 用 crontab 定 时 执 行 接 ADSL 作 NAT 带 办公 室 的机器上网, 很 不幸 PHP 程序的正确方法如下: 的 发 现 , 这 样 ADSL 爱 掉 线 , 一 掉 线 网 关 gateway 就没了,所以写了一个 shell 脚本: 1、使用 crontab –e 编辑定时任务 #!/bin/bash 内容为: while : 图 Crontab 这个名字来自古希腊语 do chronos,取“时间”之意 xx:xx:xx 执行一个 test.php 文件 if route | tail -l | grep "0.0.0.0" then 2 、 php 文件 必须 在文件 头一行, 加 上解 释 &>/dev/null 玩 windows 应该也会发现, windows2K 系 器路径(就象 perl 做的那样) else 列 的 每 修 改 一 次 系 统 管 理 员 Administrator #!/usr/local/bin/php adsl-stop 的密码就是一次浩大的工程, windows 的每个 adsl-start PHP 的执行需要 Apache 的支持,shell 脚 计划任务 scheduler 都要更改密码; CentOS fi 本 的 执 行 需 要 Linux 的 支 持 , 而 Linux 支 持 sleep 10 下 修 改 root 密 码 就 简 单 多 了 , 一 条 passwd 定时运行某个程序的功能。 done 命 令 就 解 决 问 题 了 , 而 且 不 影 响 crontab 的 将程序放进后台执行。 要 将 PHP 作 为 Shell 脚 本 语 言 使 用 , 我 以 执行。 前的方法就是直接在 /etc/crontab 里直接带 执 行 脚 本 方 法 nuhup sh route.sh & , 每条 JOB 执行完毕之后,系统会自动将输 上 php 路径,如 注 意 前 面 要 用 上 nohup ,这 样 避 免 root 用户 出发送邮件给当前系统用户。日积月累,非常 logout 时此脚本也退出生效的问题。 */5 * * * * root php test.php 的 多 , 甚 至 会 撑 爆 整 个 系 统 。 所 以 每 条 JOB 也能正确执行;有兴趣的朋友可写一个 程序的运行间隔时间是 10s,很多同学不明 命令后面进行重定向处理是非常必要的: hello 程序测试,将其所有输出到一个文件即 解为什么 要加 一个 sleep 10 ;大家可以 拿虚 >>/dev/null 2>&1 。 前 提 是 对 Job 中 的 可测试,我做了大量测试证明其可执行性;当 拟机测试下,如果没有这条 sleep 10 的语句, 命令需要正常输出已经作了一定的处理 , 比如 然你的 php 要保证其正确性,建议你的每一个 你的 Linux 服务器会运行大量此 route.sh, 追 加 到 某 个 特 定 日 志 文 件 ; >> /dev/null crontab 计 划 任 务 先 在 shell 中 先 正 确 运 行 很快耗光你的服务器资源,你的系统负载会很 2>&1 表 示 把 所 有 标 准 输 出 发 送 到 16 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 17. 专题 Special 快上去,Nagios 马上会叫起来的~ 这样即使你的脚本存在错误设置(或丢失 另 一 个 就 是 监 控 负 载 均 衡 器 Nginx 的 的)规则时,也不至于将你锁在计算机外而无 调查报告:常用的编程语言 shell 脚 本, 用于 Nginx+Keepalived 负 载 法返回与计算机的连接,让你放心大胆的调试 你的脚本。 均衡高可用环境: #!/bin/bash 最后说明下 Crontab 任务的执行环境问题。 while : 尽 管 可 以 更 改 执 行 cron 任 务 時 使 用 的 环 do 境,但经常最好创建一個包装脚本,以在运行 nginxpid=`ps -C nginx --no-header | wc -l` 实际需要的命令前定义任何环境境变量(如 if [ $nginxpid -eq 0 ];then PATH)。 /usr/local/nginx/sbin/nginx 这样做的部分原因是出于安全考虑;向 sleep 5 if [ $nginxpid -eq 0 ];then crontab 作 业 开 放 的 区 域 越 多 , 越 可 能 得 到 /etc/init.d/keepalived stop 包含可疑內容的東西。另一个原因是,这样可 fi 确保即使更改了环境中的一个依赖关系,你的 fi crontab 作仍将执行。 sleep 5 掌 握 以 上 crontab 的 用 法 后 , 我 相 信 大 家 图 5 开发者在 Linux 下常用的语言 done 另外,这里附带说下 crontab 的一个妙用: 用 Linux 更 可 以 得 心 应 手 , 工 作 更 加 happy 和轻松了,希望这篇文章能给大家的运维工作 我在配置一台服务器的 iptables 时,不小 带来帮助! 心设置了某一项错误参数,结果锁定了 SSH 会 话,导致我们经理及另一系统管理员员连不上 原文: 服务器,郁闷之余,看到此法特推荐给大家, http://os.51cto.com/art/201011/233361.htm 极其有用,建议大家学习参考:可以配置一计 推荐阅读: 划任务 crontab,每 5 分钟运行一次,即 Linux 计划任务——cron 服务入门与应用教程 */5 * * * * root /bin/sh http://os.51cto.com/art/201011/233945.htm /root/firestop.sh firestop.sh 内容为 利用 crontab 系统每天定时备份 MySQL 数据库 http://database.51cto.com/art/200510/8433.htm #/bin/bash 图 6 运维在 Linux 下常用的语言 service iptables stop cron 介绍与安装配置笔记 (下接 20 页) http://iminmin.blog.51cto.com/689308/421180 17 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 18. 专题 Special 优秀管理员用 shell 脚本完成绝大多数工作,所以他们有足够的时间喝咖啡泡论坛。 五、环境控制:shell 控制着用户的环境, 你可以根据需要通过 shell 来改变环境。 Shell 学习笔记——总括篇 六、解释型程序设计语言:可以类似于 C (尽管没那么强大)那样编写复杂的程序。 下面我们的详细内容都是围绕上面六大功能 文/licong 展开的,在这之前先说明一下 shell 脚本又是 什么?把 shell 能够解释的命令一条接一条写 到文件里,加入上面提到的一些功能,并给该 文件可以执行的权限,那么一个 shell 脚本就 Shell 脚 本 编 程 是 Unix/Linux 系 统 管 理员应当具备的一项非常重要的技能, 优秀管理员用 shell 脚本完成绝大多数工作, ( 准 确 地 讲 是 init 程 序 ) 为 每 个 终 端 启 动 getty,getty 做一些事情然后在分配给他的 终端上显示” login:”等待用户输入信息。一 诞生了。换句话说,当你掌握了这些功能也就 基本上掌握了编写 shell 脚本的技能了! 所以他们有足够的时间喝咖啡泡论坛。然而, 旦用户键入信息并以回车结束, getty 程序就 ——程序执行 要掌握这一技能并不十分容易,这需要了解相 会消失,同时启动 login 程序完成登陆处理。 shell 负责解释并执行终端请求的程序,这 当数量的知识,并进行大量的练习和实践。笔 用户成功登陆后,将会启动一个重量级的程序 里的程序大多数情况都是指 Unix/Linux 命令。 者丝毫不敢说自己已经掌握了这一技能,我写 那就是 shell! Shell 所涉及到的每条命令都遵循相同的基本 这些文章只是为了把学习的历程记录下来,如 格式: Shell 为什么那么重要呢?因为他有很多很 果恰好也对你有所帮助我很荣幸。 强大的功能: 程序名 参数表 首先,我们来解决必须回答的问题:shell 一、执行程序:shell 负责解释并执行终端 Shell 扫描命令行,并判断要执行的程序名 是什么?要回答这个问题必须先清楚 请求的程序。 字以及要传给程序什么参数(这里我们认为选 Unix/Linux 系统的结构。我们把这个结构简 二、变量和文件名的替换:shell 会解释一 项是参数的一部分)。 单分为两部分:系统内核——实用程序。系统 内核是系统的心脏,从打开计算机自检时就驻 些特殊的符号来进行替换。 Shell 用特定的字符去判断程序名的起止位 留在计算机内存,直至计算机关闭;而实用程 三、I/O 重定向:将输入和输出重定向到别 置 。这些 字符 被 称 为 空白字 符 , 有空格 、TAB 序驻留在计算机磁盘上,仅当需要时才调入内 的地方(不再是标准的键盘和屏幕)。 和换行符(回车), shell 会忽略掉多出的空 存。 白字符。键入命令: mv file temp 时 shell 四、管道线连接:shell 可以把多个命令连 扫描命令行,并提取从该行开始到第一个空白 那 么 shell 是 什 么 呢 ? shell 是 一 种 实 用 接在一起,就像管道一样。 字符为止的字符串作为将执行的程序名: mv; 程序,实际上所有 Unix/Linux 命令都是一个 接下去,到下一个空白字符之前的字符序列作 实用程序!每当系统允许用户登陆时,系统 18 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 19. 专题 Special 为传给 mv 的第一个参数: file;再接着到下 描命令行,寻找文件名替换字符*,?,或[…]。 的 文 件 名 , 在 上 例 中 是 reminder 。 如 果 一个空白字符(这里是换行符之前的字符序列 假如当前目录包含如下文件: reminder 已 经 存在,而你也 有 对它的 写入 权 是传给命令 mv 的第二个参数: temp。分析完 $ls 限,原来的内容就丢失了(如果没有写入权限 命 令 之 后 , shell 就 会 执 行 mv 命 令 , 同 时 传 file1 shell 会提示一条错误信息)。 给它两个参数 file 和 temp。后面的任务就交 file2 file3 在 shell 开 始 程 序 的 执 行 之 前 , 它 就 将 程 给 mv 去 完 成 了 。 注 意 , Unix/Linux 系 统 绝 序的标准输出重定向到指定文件。就程序而言 $ 大多数情况是严格区分大小写的! 现在对 echo 命令做文件名替换: 它根本不知道自己的输出被重定向了,它只是 前 面 提 过 , 多 个 空 白 字 符 将 被 shell 忽 略。 $echo * 按照自己的方式将输出写入标准输出(通常是 这就是说,当 shell 处理命令行: file1 file2 file3 屏幕),并没有意识到 shell 已经将输出重定 echo whendowe eat? $ 向到一个文件。 时 , 该 命 令 行 给 echo 程 序 4 个 参 数 : 有多少个参数传给了 echo 程序,一个还是 让我们来看两条几乎一样的命令: when、do、we 和 eat? 4 个?因为我们知道 shell 会执行文件名替换, $wc –l users 所以答案是 4 个。当 shell 分析命令行: 5 users 因为 echo 得到参数后,只是将他们显示在 echo * $wc –l < users 终端上,并用一个空格字符分隔各个参数,因 5 时,它识别出特殊字符 *,并在命令行中将 此下面的输出就很容易理解了: 第一种情况下,shell 分析命令行,并判断 *替换为当前工作目录下的所有文件: $echo whendowe eat? 要 执 行 的 程 序 名 是 wc 以 及 要 传 给 它 的 两 个 参 When do we eat? echo file1 file2 file3 $ 然 后 shell 确 定 传 给 命 令 的 参 数 。 因 此 数:-l 和 users。当 wc 开始执行时,它被传 事 实 上, echo 命令 根 本 看不 见 那 些 空 白字 echo 是看不见*的,当轮到它来处理时,看到 给了两个参数。第一个参数是 -l,表示它将对 符:他们已被 shell“吞”掉了! 的是命令行中键入 4 个参数。 行进行计数。第二个参数指明了要进行计数的 文 件 名 。 所 以 , wc 打 开 文 件 users , 统 计 行 ——变量和文件名的替换 ——I/O 重定向 数,并在终端上打印出统计后的行数和相应文 与其他程序设计语言一样,shell 允许你给 在命令行中执行输入输出重定向也是 shell 件名。 变量赋值。任何时候,在命令行中指定一个变 的职 责 。它 扫描命令 行, 看 是否 有特 殊 字 符 < 、 第 二 种 情 况 下 , wc 的 操 作 稍 微 有 一 点 不 同。 量,并且在其前面冠以美元符号, shell 都会 >和>>出现(还有字符<<,将在后面讨论)。 扫描命令行时, shell 识别出输入重定向字符 在这个位置用已赋给该变量的值来替换。我们 键入命令: <,紧跟着的那个词表示重定向数据院文件的 后面还会详细讨论这个主题。 名 字 。 Shell 从 命 令 行 “ 吞 ” 掉 <users , 启 echo Remember to order Law >reminder Shell 也在命令行执行文件名替换。实际上, 时,shell 识别出特殊的重定向字符 >,并 动 wc 程 序 的 执 行 , 将 他 的 标 准 输 入 重 定 向 到 在判定要执行的程序名及其参数之前,它先扫 提取命令行中的下一个词作为重定向输出结果 文 件 users , 并 传 递 给 它 一 个 参 数 -l 。 这 时 19 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 20. 专题 Special wc 开始执行,它发现只传给了自己一个参数 - ——环境控制 l。因为没有指定文件名, wc 将此作为统计标 调查报告:常用的浏览器 Shell 提供某些命令用于定制环境。环境包 准输入上出现的行数的一种指示。因此,wc 在 括用户的宿主目录、 shell 用于提醒用户键入 计数标准输入上的行数时,并未意识到,它实 命令的提示符号、每当请求运行某个程序而进 际上是在为文件 users 中的行进行计数。最终 行搜索的目录列表等等。详细的内容留到后续 的结果显示在终端上——没有文件名,因为没 专门的章节继续讨论。 有给过 wc 文件名。 ——解释型程序设计语言 ——管道线连接 Shell 有着自己的内部程序语言。它和 C 等 就 像 在 命 令 行 中 搜 索 重 定 向 字 符 一 样 , 其他高级程序设计语言最大的区别在于,这种 shell 也在搜 索管道字符 | 。对每个它 发现 语言是解释型的,他只是分析每条语句并执行 的管道字符,它将 位于 | 前面的命令的标准 而不像其他语言那样需要经过编译才能执行。 输出连接到位于 | 后面的 命令 的标 准输 入。 解释型的 shell 比编译型的程序更易于调试和 然后为这两个程序执行初始化(判断程序及其 修改,但他们的运行比等价的编译程序更耗时。 参数)。 图 7 开发者在 Linux 上常用的浏览器 与大部分程序设计语言类似,shell 也具有 因此在键入 if、case、for、while、until 等判断、分 $who | wc –l 支、循环结构,以及变量、数组和函数。这部 时,shell 发现,管道字符隔开了命令 who 分内容是脚本编程的重点和难点之一,后续也 和 wc。它将前面命令的标准输出连接到后面命 会有专门的章节来进行讨论。 令的标准输入,然后为执行这两个程序做初始 好了,shell 总括就到这里了。总结一下, 化。当执行 who 时,它产生一个登录人员的列 就是我们上面提到的六大功能。每一个功能都 表,并将结果写到标准输出:但它没有意识到 值得我们深入挖掘!事实上,你把这些功能挖 结果将不会送到终端,而是送到另一个命令。 掘得越透彻,你也就越容易写出更高质量的脚 当 wc 命令 执行时, 它识别出没有 指定 文件 本。 名,并在标准输入上统计行数。没有意识到标 原文: 准输入不是来自于终端,而是来自于 who 命令 图 8 运维在 Linux 上常用的浏览器 http://licong.blog.51cto.com/542131/205615 的输出。 (完) 20 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 21. 专题 Special SSH 是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么 SSH 无疑是最 5、通过 SSH 挂载目录/文件系统 佳的候选。 sshfs name@server:/path/to/folder /path/to/mount/point 从 25 个必须记住的 SSH 命令 http://fuse.sourceforge.net/sshfs.h tml 下载 sshfs,它允许你跨网络安全挂载一 个目录。 文/URFIX 编译/黄永兵 6、通过中间主机建立 SSH 连接 ssh -t reachable_host ssh unreachable_host O penSSH 是 SSH 连 接 工 具 的 免 费 版 本 。 telnet , rlogin 和 ftp 用 户 可 能 还 没意识到他们在互联网上传输的密码是未加密 2 、 从 某 主 机 的 80 端 口 开 启 到 本 地 主 机 2001 端口的隧道 ssh -N -L2001:localhost:80 somemachine Unreachable_host 表 示 从 本 地 网 络 无 法 直接访问的主机,但可以从 reachable_host 所 在 网 络 访 问 , 这 个 命 令 通 过 到 的,但 SSH 是加密的,OpenSSH 加密所有通信 现 在 你 可 以 直 接 在 浏 览 器 中 输 入 reachable_host 的“隐藏”连接,创建起到 (包括密码),有效消除了窃听,连接劫持和 http://localhost:2001 访问这个网站。 unreachable_host 的连接。 其它攻击。此外,OpenSSH 提供了安全隧道功 3、将你的麦克风输出到远程计算 机的扬声 7、将你的 SSH 公钥复制到远程主机,开启 能和多种身份验证方法,支持 SSH 协议的所有 器 无密码登录 – 简单的方法 版本。 dd if=/dev/dsp | ssh -c arcfour -C ssh-copy-id username@hostname SSH 是一个非常伟大的工具,如果你要在互 username@host dd of=/dev/dsp 联网上远程连接到服务器,那么 SSH 无疑是最 8 、直接 连接到只 能 通过 主机 B 连接的主机 这样来自你麦克风端口的声音将在 SSH 目标 A 佳 的 候 选 。 下 面 是 通 过 网 络 投 票 选 出 的 25 个 计算机的扬声器端口输出,但遗憾的是,声音 ssh -t hostA ssh hostB 最佳 SSH 命令,你必须牢记于心。 质量很差,你会听到很多嘶嘶声。 当然,你要能访问主机 A 才行。 1、复制 SSH 密钥到目标主机,开启无密码 4、比较远程和本地文件 SSH 登录 9、创建到目标主机的持久化连接 ssh user@host cat /path/to/remotefile | ssh -MNf <user>@<host> ssh-copy-id user@host diff /path/to/localfile – 如 果 还 没 有 密 钥 , 请 使 用 ssh-keygen 命 在后台创建到目标主机的持久化连接,将这 在比较本地文件和远程文件是否有差异时这 个 命 令 和 你 ~/.ssh/config 中 的 配 置 结 合 使 令生成。 个命令很管用。 用: 21 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 22. 专题 Special Host host command = /sbin/iptables -D INPUT -i eth0 ~/.ssh/authorized_keys” ControlPath ~/.ssh/master-%r@%h:%p -s %IP% -p tcp –dport 22 -j ACCEPT 如 果 你 使 用 Mac OS X 或 其 它 没 有 ssh- ControlMaster no tcpflags = syn copy-id 命 令 的 *nix 变 种 , 这 个 命 令 可 以 将 所有到目标主机的 SSH 连接都将使用持久化 12 、 删 除 文 本 文 件 中 的 一 行 内 容 , 有 用 的 你的公钥复制到远程主机,因此你照样可以实 SSH 套 接 字 , 如 果 你 使 用 SSH 定 期 同 步 文 件 修复 现无密码 SSH 登录。 ( 使 用 rsync/sftp/cvs/svn ) , 这 个 命 令 ssh-keygen -R <the_offending_host> 将非常有用,因为每次打开一个 SSH 连接时不 17、实时 SSH 网络吞吐量测试 在这种情况下,最好使用专业的工具。 会创建新的套接字。 yes | pv | ssh $host “cat > /dev/null” 13、通过 SSH 运行复杂的远程 shell 命令 通过 SSH 连接到主机,显示实时的传输速度, 10、通过 SSH 连接屏幕 ssh host -l user $(<cmd.txt) 将所有传输数据指向/dev/null,需要先安装 ssh -t remote_host screen –r 更具移植性的版本: pv。 直接连接到远程屏幕会话(节省了无用的父 ssh host -l user “`cat cmd.txt`” 如果是 Debian: bash 进程)。 14 、 通 过 SSH 将 MySQL 数 据 库 复 制 到 新 服 apt-get install pv 11、端口检测(敲门) 务器 如果是 Fedora: knock <host> 3000 4000 5000 && ssh -p mysqldump –add-drop-table –extended- yum install pv <port> user@host && knock <host> 5000 insert –force –log-error=error.log (可能需要启用额外的软件仓库)。 4000 3000 -uUSER -pPASS OLD_DB_NAME | ssh -C 在一个端口上敲一下打开某个服务的端口 user@newhost “mysql -uUSER -pPASS 18、如果建立一个可以重新连接的远程 GNU (如 SSH),再敲一下关闭该端口,需要先安 NEW_DB_NAME” screen 装 knockd,下面是一个配置文件示例。 通过压缩的 SSH 隧道 Dump 一个 MySQL 数据 ssh -t user@some.domain.com [options] 库,将其作为输入传递给 mysql 命令,我认为 /usr/bin/screen –xRR logfile = /var/log/knockd.log 这是迁移数据库到新服务器最快最好的方法。 人们总是喜欢在一个文本终端中打开许多 [openSSH] shell , 如 果 会 话 突 然 中 断 , 或 你 按 下 了 sequence = 3000,4000,5000 15、删除文本文件中的一行,修复“ SSH 主 “ Ctrl-a d” , 远 程 主 机 上 的 shell 不 会 受 seq_timeout = 5 机密钥更改”的警告 command = /sbin/iptables -A INPUT -i eth0 到丝毫影响,你可以重新连接,其它有用的 sed -i 8d ~/.ssh/known_hosts -s %IP% -p tcp –dport 22 -j ACCEPT screen 命 令 有 “ Ctrl-a c” ( 打 开 新 的 tcpflags = syn 16、从一台没有 SSH-COPY-ID 命令的主机 shell)和“Ctrl-a a”(在 shell 之间来回 [closeSSH] 将你的 SSH 公钥复制到服务器 切换),请访问 sequence = 5000,4000,3000 cat ~/.ssh/id_rsa.pub | ssh user@machine seq_timeout = 5 http://aperiodic.net/screen/quick_reference “mkdir ~/.ssh; cat >> 阅读更多关于 screen 命令的快速参考。 22 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 23. 专题 Special 19、继续 SCP 大文件 autossh -M50000 -t server.example.com ~/.ssh/authorized_keys 文 件 中 , 使 用 ‘screen -raAd mysession’ rsync –partial –progress –rsh=ssh SSH 连接时,如果你没有使用密钥口令,调用 $file_source $user@$host: 打开一个 SSH 会话后,让其保持永久打开, ssh user@host 后 不 久 就 会 显 示 远 程 $destination_file 对于使用笔记本电脑的用户,如果需要在 Wi- shell。 它 可 以 恢 复 失 败 的 rsync 命 令 , 当 你 通 过 Fi 热点之间切换,可以保证切换后不会丢失连 VPN 传输大文件,如备份的数据库时这个命令 接。 25、将标准输入(stdin)复制到你的 X11 非常有用,需要在两边的主机上安装 rsync。 缓冲区 22、更稳定,更快,更强的 SSH 客户端 rsync –partial –progress –rsh=ssh ssh user@host cat /path/to/some/file | ssh -4 -C -c blowfish-cbc xclip $file_source $user@$host: $destination_file local -> remote 强 制 使 用 IPv4 , 压 缩 数 据 流 , 使 用 你是否使用 scp 将文件复制到工作用电脑上, 或 Blowfish 加密。 以便复制其内容到电子邮件中? xclip 可以帮 rsync –partial –progress –rsh=ssh 到你,它可以将标准输入复制到 X11 缓冲区, 23、使用 cstream 控制带宽 $user@$host:$remote_file 你需要做的就是点击鼠标中键粘贴缓冲区中的 $destination_file remote -> local tar -cj /backup | cstream -t 777k | ssh host ‘tar -xj -C /backup’ 内容。 20、通过 SSH W/ WIRESHARK 分析流量 使 用 bzip 压 缩 文 件 夹 , 然 后 以 777k 原文: ssh root@server.com ‘tshark -f “port !22″ bit/s 速率向远程主机传输。Cstream 还有更 http://blog.urfix.com/25-ssh-commands-tricks/ -w -' | wireshark -k -i – 多的功能,请访问 译文: 使用 tshark 捕捉远程主机上的网络通信, http://www.cons.org/cracauer/cstream.html#usa http://os.51cto.com/art/201011/235252.htm 通 过 SSH 连 接 发 送 原 始 pcap 数 据 , 并 在 ge wireshark 中显示,按下 Ctrl+C 将停止捕捉, 推荐阅读: 了解详情,例如: 但 也 会 关 闭 wireshark 窗 口 , 可 以 传 递 一 个 五步建立一个 VNC Linux 服务器 echo w00t, i’m 733+ | cstream -b1 -t2 “ -c #” 参 数 给 tshark , 让 它 只 捕 捉 “ #” 指 http://server.51cto.com/sCollege-185750.htm 定的数据包类型,或通过命名管道重定向数据 24、一步将 SSH 公钥传输到另一台机器 网络安全工具百宝箱 而 不 是 直 接 通 过 SSH 传 输 给 wireshark , 我 ssh-keygen; ssh-copy-id user@host; ssh http://netsecurity.51cto.com/art/201011/235748.htm 建 议 你 过 滤 数 据 包 , 以 节 约 带 宽 , tshark 可 user@host 这个命令组合允许你无密码 SSH 登录,注意, Linux 系统管理员都应该熟悉的工具 以使用 tcpdump 替代: 如 果 在 本 地 机 器 的 ~/.ssh 目 录 下 已 经 有 一 个 http://os.51cto.com/art/201009/225721.htm ssh root@example.com tcpdump -w – ‘port ! 22′ | wireshark -k -i – SSH 密 钥对, ssh-keygen 命令 生成的新 密 钥 可 能 会 覆 盖 它 们 , ssh-copy-id 将 密 钥 复 制 21、保持 SSH 会话永久打开 到 远 程 主 机 , 并 追 加 到 远 程 账 号 的 23 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 24. 工具 Tools Tcprstat 是一个免费开源的 TCP 分析工具,用于监测网络流量,并计算请求与响应之 1283261503 1650 289087 35 462 146 7133 834 184 120 3565 244 358 间的延迟。 但 是 这 个 tcprstat 在 bonding 的 网 卡 下 有点问题: 调查服务器响应时间的利器 tcprstat # /sbin/ifconfig bond0 Link encap:Ethernet HWaddr A4:BA:DB:28:B5:AB 文/Yu Feng inet addr:10.232.31.19 Bcast:10.232.31.255 Mask:255.255.255.0 inet6 addr: 我 们在 做服 务器 程序 的时 候, 经常 要知 http://www.percona.com/docs/wiki/tcprstat:start fe80::a6ba:dbff:fe28:b5ab/64 Scope:Link UP BROADCAST RUNNING MASTER 道一个请求的响应时间,借以优化或 不愿意编 译的 同学 直接从这里下 载 64 位系 MULTICAST MTU:1500 Metric:1 者定位问题。 统的编译好的二进制: RX packets:19451951688 errors:0 这 时 候 来 自 percona 的 tcprstat 来 救 助 http://github.com/downloads/Lowercases/tcprsta dropped:4512 overruns:0 frame:0 了 ! 这 个 工 具 原 本 开 发 用 来 调 查 mysqld 的 t/tcprstat-static.v0.3.1.x86_64 TX packets:26522074966 errors:0 dropped:0 overruns:0 carrier:0 性能问题,所以不要奇怪它的默认端口是 源码编译也挺容易的: 由于它自带 collisions:0 txqueuelen:0 3306, 但 是 我 们 可 以 用 这 个 工 具 来 调 查 典 型 libpcap 包, 这个包有可能在 configure 的 RX bytes:6634368171533 (6.0 TiB) 的 request->response 类型的服务器。 时 候 没 认 识 好 netlink, 只 要 把 config.h TX bytes:32576206882863 (29.6 TiB) 里面的 netlink 那个 define 注释掉就好。 ... 什么是 tcprstat: # tcprstat -p 3306 -t 1 -n 5 编译好了, 典型使用很简单: pcap: SIOCGIFFLAGS: bonding_masters: No Tcprstat 是一个免费开源的 TCP 分析工 # tcprstat -p 3306 -t 1 -n 5 such device 具,用于监测网络流量,并计算请求与响应之 timestamp count max min avg med 解决方案是: 间的延迟。该工具由此推算响应时间的数据并 stddev 95_max 95_avg 95_std 99_max # sudo tcprstat -p 3306 -t 1 -n 0 -l 将 记 录 输 出 , 输 出 结 果 类 似 Unix 下 的 其 他 99_avg 99_std `/sbin/ifconfig | grep 'addr:[^ ]+' -o -stat 工 具 , 如 vmstat , iostat 和 1283261499 1870 559009 39 883 153 | cut -f 2 -d : | xargs echo | sed -e mpstat 。该工具还可以被限定为仅仅监视特 13306 1267 201 150 6792 323 685 's/ /,/g'` 1283261500 1865 25704 29 578 142 定端口的流量,很适合针对单独守护进程的响 2755 889 175 107 23630 333 1331 用 IP 方式,而不是网络接口方式搞定。 应 时 间 监 控 , 如 mysqld , httpd , 1283261501 1887 26908 33 583 148 原文: memcached 等。 2761 714 176 94 23391 339 1340 http://blog.yufeng.info/archives/963 1283261502 2015 304965 35 624 151 文档很详细,请参考: 7204 564 171 79 8615 237 507 24 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 25. 工具 Tools 掌握 Shell ,通常能够让任务在数秒钟内完成,这就让 Shell 跟 C 、 Perl 、 Python 这些 2.以 HTTP 方式共享当前文件夹的文件 语言区别开来。 $ python -m SimpleHTTPServer 这 命 令 启 动 了 Python 的 系列连载:最牛 B 的 Linux Shell 命令(1) SimpleHTTPServer 模块,考虑到 Python 在 绝大多数的 Linux 发行版当中都默认安装,所 以这个命令很可能是最简单的跨平台传文件的 文/Peteris Krumins 方法。 编译/BOY PT 命 令 执 行 后 将 在 本 机 8000 端 口 开 放 HTTP 服务,在其他能访问本机的机器的浏览器打开 ttp://ip:8000 即 打 开 一 个 目 录 列 表 , 点 击 即可下载。 Shell 作 为 Unix 系 操 作 系 统 当 中 最 有 魅力且不可或缺的组件,经过数十载的 洗礼不仅没有被淘汰,而且愈加变得成熟稳健 Ctrl-a,输入 sudo,回车。 这里介绍这个是天外飞仙级别的,对,就直 接 sudo !!。 3. 在 以 普 通 用 户 打 开 的 VIM 当 中 保 存 一 个 ROOT 用户文件 究其原因,大概因为它是个非常稳固的粘合剂 :w !sudo tee % 当然这几种解决方式效果是完全一样的,只 这题目读起来纠结,其实是很常见的,常常 能够把大量功能强大的组件任意配搭,总能很 是款不一样,嗯,不解释。 忘记了 sudo 就直接用 vim 编辑/etc 内的文件, 好很快地完成用户的任务。 两个感叹号其实是 bash 的一个特性,称为 (不过也不一定, vim 发现保存的文件无法保 本文的一些命令很可能看起来是”雕虫小 技”,我们只好仰慕一下 Shell 大牛了,但是 事件 引 用符 ( event designators )。 !! 其 存时候会提示)等编辑好了,保存时候才发现 实 相 当 于 !-1 , 引 用 前 一 条 命 令 , 当 然 也 可 没权限。曲线方法是先保存个临时文件,退出 有些细节我会稍加发掘加以说明,遇到有趣的 以 !-2 , !-50 。 默 认 情 况 下 bash 会 在 后 再 sudo cp 回 去 。 不 过 实 际 上 在 vim 里 面 地方希望能博您一笑了。 ~/.bash_history 文 件 内 记 录 用 户 执 行 的 最 可以直接完成这个过程的,命令就是如此。 1.以 SUDO 运行上条命令 近 500 条命令,history 命令可以显示这些命 查阅 vim 的文档(输入:help :w),会提 $ sudo !! 令。 到 命 令 :w!{cmd} , 让 vim 执 行 一 个 外 部 命 令 大家 应 该 都知 sudo , 不解 释 。 但 通 常 出 现 关于事件引用符的更多用法可以深入阅读 {cmd},然后把当前缓冲区的内容从 stdin 传 的情况是,敲完命令执行后报错才发现忘了 The Definitive Guide to Bash 入。 sudo。这时候,新手用户就会:按上箭头,按 Command Line History。 tee 是一个把 stdin 保存到文件的小工具。 左 箭 头 , 盯 着 光 标 回 到 开 始 处 , 输 入 sudo , 回 车 ; 高 手 用 户 就 蛋 定 多 了 , 按 Ctrl-p , 按 而%,是 vim 当中一个只读寄存器的名字, 总保存着当前编辑文件的文件路径。 25 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 26. 工具 Tools 所以执行这个命令,就相当于从 vim 外部修 关于事件引用符的更多用法可以深入阅读 提是你当前用户有生成了公钥,默认是没有的 改了当前编辑的文件,好完工。 The Definitive Guide to Bash 先执行 ssh-keygen 试试吧! Command Line History 4.切换回上一个目录 这个命令如果用手工完成,是这样的: $ cd - 6.快速备份一个文件 your-machine$ scp ~/.ssh/identity.pub $ cp filename{,.bak} remote-machine: 应该不少人都知道这个,横杆 -代表上一个 your-machine$ ssh remote-machine 目录的路径。 这 道 命 令 把 filename 文 件 拷 贝 成 remote-machine$ cat identity.pub >> filename.bak ,大家应该在一些比 较复 杂的 ~/.ssh/authorized_keys 实 际 上 cd - 就 是 cd $OLDPWD 的 简 写 , 安装教程里面见过这样的用法。其原理就在于 如果你想删掉远程主机上的密钥,直接打开 bash 的 固 定 变 量 $OLDPWD 总 保 存 着 之 前 一 个 bash 对 大 括 号 的 展 开 操 作 , authorized_keys , 搜 索 你 的 用 户 名 , 删 除 目录的路径。 filename{,.bak} 这 一 段 会 被 展 开 成 那行,即可。 相对 地, $PWD 总保 存着 当 前 目录 的 路 径 。 filename filename.bak 再 传 给 cp , 于 是 这些变量在编写 shell 脚本时候相当有用。 就有了备份的命令了。 8.抓取 LINUX 桌面的视频 $ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 5.替换上一条命令中的一个短语 大括号在 bash 里面是一个排列的意义,可 -sameq /tmp/out.mpg $ ^foo^bar^ 以试试这个: 我们在一些 视 频网站上 看 到别人的 3D 桌面 又 是 另 外 一 个 事 件 引 用 符 ( event $ echo {a,b,c}{a,b,c}{a,b,c} 怎么怎么酷的视频,通常就是这么来的, designator ) , 可 以 把 上 一 条 命 令 当 中 的 将输出三个集合的全排列: ffmpeg 可 以 直 接解 码 X11 的 图形 , 并 转换 到 foo 替换成 bar。 aaa aab aac aba abb abc aca acb acc 相应输出格式。 baa bab bac bba bbb bbc bca bcb bcc 在需要重复运行调试一道长长的命令,需要 caa cab cac cba cbb cbc cca ccb ccc ffmpeg 的通常用法是,根据一堆参数,输 测试某个参数时候,用这个命令会比较实用; 关 于 shell 当 中 的 集 合 操 作 , 可 深 入 阅 出一个文件,输出文件通常放最后,下面解析 但多数人会首先选择按上箭头提出上道命令, 下几个参数: 读 ” Set Operations in the Unix 再移动光标去修改某参数,这样更直观,但效 Shell” -f x11grab 指 定 输 入 类 型 。 因 为 x11 的 率上就不够使用引用符高,而且在脚本中用这 缓冲区不是普通的视频文件可以侦测格式,必 个方法可以简化很多。 7.免密码 SSH 登录主机 须指定后 ffmpeg 才知道如何获得输入。 这道命令的原始样式应该是这样的: $ ssh-copy-id remote-machine 这个命令把当前用户的公钥串写入到远程主 -s wxga 设 置 抓 取 区 域 的 大 小 。 wxga 是 !!:s/foo/bar/ 机 的 ~/.ssh/authorized_keys 内 , 这 样 下 1366*768 的 标 准 说 法 , 也 可 以 换 成 -s 本 文 一 开 始 介 绍 过 !! , 后 面 的 一 段 大 家 应 次使用 ssh 登录的时候,远程主机就直接根据 800×600 的写法。 该 很 熟 悉 , vim 、 sed 的 替 换 操 作 都 是 这 样 的 语法。 这串密钥完成身份校验,不再询问密码了。前 -r 25 设置帧率,即每秒抓取的画面数。 26 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 27. 工具 Tools -i :0.0 设置输入源,本地 X 默认在 0.0 的一些”雕虫小技”因为难登大雅之堂绝不会 -sameq 保持跟输入流一样的图像质量,以 收录 进去 。这 情况 如 果 象 国 外 一 些 unix 用户 用来后期处理。 比较多的地方会有很好改善,即使是新手,偶 勘误声明 尔看看别人的操作都能”偷师”一手,我编译 后记 本系列文章其实也就希望稍微改善一下这个状 《 Linux 运 维 趋 势 》 第 一 期 的 第 11 页 : 说 Shell 是 一 种 编 程 语 言 , 可 能 有 些 尴 尬, 况。 《 资 料 篇 : Linux 常 用 监 控 命 令 简 介 – 虽然很多人每天都在用 Shell,但从来没见它 原文: top》一文中,有两处错误: 荣登 TIOBE 编程语言排行榜之类的,可以说毫 http://www.catonmat.net/blog/top-ten-one-liners- 1、top 命令的解释中,有关 -i 参数的说 无名分,因为很多用户没意识到它是一种语言 from-commandlinefu-explained 明,写成了“显示空闲进程”,实际应为 只当做这是一个能够很好完成任务的工具,基 译文: “排除空闲进程跟僵尸进程,只显示出运行 本得理所当然,就好像 GUI 程序的菜单、按钮 http://www.isspy.com/most_useful_linux_commands 的进程”; 一样。 _1/ 2 、 有 关 uptime 输 出 数 值 的 说 明 , 写 成 掌握 Shell,通常能够让任务在数秒钟内完 推荐阅读: 了“最近一秒,五秒,十五秒”,实际应为 成,这就让 Shell 跟 C、Perl、Python 这些 实战 Linux Shell 编程与服务器管理 “最近一分钟,五分钟,十五分钟”; 语言区别开来,没人否认后者更能胜任更多的 http://book.51cto.com/art/201003/191285.htm 特此勘误。 任务,但是他们是在不同的层面上去做, 不看后悔的 Linux 生产服务器 Shell 脚本分享 Shell 依赖大量的系统组件黏合调用,而后者 http://os.51cto.com/art/201010/229129.htm 依赖各种库,各所擅长不同的应用领域,比喻 感谢读者星痕指出此错误!希望大家能够 就是,Shell 是混凝土,可以很方便地粘合一 从 Solaris 迁移 Perl 脚本到 Linux 继续积极反馈您对《趋势》的意见与建议, 些建筑组件而成为稳固的高楼大厦;但同样是 http://os.51cto.com/art/201011/234181.htm 帮助我们做的更好! 粘合剂,粘玻璃窗、粘书报、粘皮鞋,混凝土 几个常用的 Linux 监控脚本 是绝对不合适的, Shell 并不擅长一些细致操 http://os.51cto.com/art/201010/229618.htm 作,比如它连浮点运算都不支持,更别提什么 图形运算什么的。但这并不妨碍 Shell 来帮我 们完成很多粗重任务。 Shell 的工作方式,大多数入门用户会觉得 枯燥难学,而所谓的经典教材也离不开 《 Advanced Bash-Scripting 》 、 《 Bash Guide for Beginners 》 ,但 类 似本文这 样 27 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 28. 招募启事 下期预告 《Linux 运维趋势》的建设需要您的加入! 下 期 主 题 为 : Linux 服 务 器 的 性 能 瓶 颈 您可以通过如下方式参与我们杂志的建设: 分析。敬请期待! 1、推荐文章 本刊为月刊,预定每月发布日期为: 无论是您在互联网上看到的好文章,还是您自己总结 /整理的资料;无论是英文还 每个月的第二个星期五 是中文;无论是入门的还是高端的,都欢迎推荐!推荐方式包括: 您可以通过如下方式检查是否有新刊发 a)在技术圈中分享:http://g.51cto.com/linuxops 布: b)在邮件群中分享:linuxops-cn@googlegroups.com 1、加入电子邮件群组: c)发邮件给编辑:yangsai@51cto.com linuxops-cn@googlegroups.com 2、投稿 获得邮件提醒 如果您认为自己在 Linux 方面具有专家级别的能力,并且有与大家分享您技术经验 2、经常光顾 51CTO Linux 频道: 的热诚,同时也有兴趣挣点稿费花花,那么欢迎您的投稿! http://os.51cto.com/linux/ 如果您在 IT 技术方面的翻译有很高的能力,能够快速、高质量的完成译文,并且 《Linux 运维趋势》是由 51CTO 系统频道策划、针 也经常浏览到一些 Linux 方面的优秀外文,那么也欢迎您的投稿! 对 Linux/Unix 系统运维人员的一份电子杂志,内 投稿信箱:yangsai@51cto.com 容从基础的技巧心得、实际操作案例到中、高端 3、推广与意见 的运维技术趋势与理念等均有覆盖。 如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮助,请向您的 Linux 好 《Linux 运维趋势》是开放的非盈利性电子杂志, 友、同事们推荐它! 其中所有内容均收集整理自国内外互联网(包含 51CTO 系统频道本身的内容)。对于来自国内的 如果您觉得这份杂志还有什么地方需要改进或补充,也希望您能够提出您的宝贵意 内容,编辑都会事先征求原作者的许可(八卦, 见! 趣闻&数字栏目例外)。如果您认为本杂志的内 联系人:yangsai@51cto.com 容 侵 犯 到 了 您 的 版 权 , 请 发 信 至 yangsai@51cto.com 进行投诉。