linux运维趋势_第3期_运维与开发


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

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

ryanven

贡献于2012-10-25

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf