分类目录

链接

2016 年 11 月
 123456
78910111213
14151617181920
21222324252627
282930  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > DevOps > 正文
运维工程师必须掌握的基础技能有哪些?
DevOps 暂无评论 阅读(1,110)
作者:Tanky Woo
链接:www。zhihu。com/question/23665108/answer/25299881
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

最后更新:2015-08-27

这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些。(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣)

首先限定在Linux运维工程师

回答仅代表我想到,不代表我都会 🙁

技能

1. Linux基础

包括对Linux整体的理解/使用和基本命令:

2. 运维的命令:

运维相关的工具(命令),了解它能解决很多问题。

前几天刚回答了一个问题:如何才能更深入的学习linux?

里面的图在这里也可以用到:

可以对着图对学习了解这些命令 (<strike>抱歉图片的原始来源我没有搜到,如果有朋友知道,麻烦告诉我,谢谢</strike> 感谢 @jeremy yang 的提示,已经搜到来源 brendangregg.com/linuxpslideshare.net/brendang)。

另外我个人也会对平时用到的这些工具做一个整理和记录,总结到我的个人维基上:Wiki · Tanky Woo

3. 基础服务:

  • LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/Perl LAMP (software bundle)
  • FTP
  • DNS
  • SAMBA
  • EMAIL
  • NTP
  • DHCP
  • ...

可以本地搭建练练手

这里推荐鸟哥另外一本书 服务器架设篇: 鸟哥的Linux私房菜 (豆瓣)

4. 运维平台工具:

也在这个问题 如何才能更深入的学习linux? 里提到了:

  • Nagios
  • Puppet
  • Zabbix
  • Cacti
  • SaltStack
  • ....

可以选择性的折腾下,因为这个涉及到业务,没有实际环境,很难去理解他们的功能和特点。

5. 脚本:

  • 必备:Shell
  • 额外:Python,Perl...

6. 底层:

  • Linux C,内核

7. 网络:

网络是非常重要的一块

  • 把《TCP/IP协议详解》多看几遍,理解。
  • 熟练使用tcpdump等抓包工具

8. 安全:

  • 防火墙配置,如 iptables, ipset

9. 硬件:

  • 接口类型
  • 查看硬件信息
  • 知道各类型服务器,如塔式、机架式、刀片式

10. 其它:

了解更多特定技能要求的方式:

Google搜"Linux运维工程师 招聘",看看他们的需求。

最后推荐一本书:Unix/Linux系统管理技术手册 UNIX/Linux 系统管理技术手册 (豆瓣)

后续想到再做补充

素养/处理方式

除了技能,我觉得素养(态度)也可以谈谈

这个正好看到右边相关问题:运维工程师需要具备哪些性格特质?

1. 安全

运维人员的权限很大,所以一定要保证帐号/私钥的安全。

  • 最好使用加密工具存储。比如truecrypt,1password
  • 基于本地存储。切勿用网盘,也不建议用lastpass等
  • ssh私钥添加密码

以上任何一点都很重要,否则弄丢了,风险会非常大。

2. 责任心

如上面那个帖子里 @山大 提到的 Owner 意识

  • 遇到报警,第一时间处理,而不要等着他人去处理
  • 如果无法处理,应该第一时间让同事协助帮忙,而不要禁止报警,让问题掩盖

3. 细心

你的任何一个操作,都可能造成系统的损坏、业务出问题。所以敲命令时一定要细心、再三确认。你敲的再快,也就节省那么一点时间,出了问题才是大事。

4. 推进/改善

如果代码有问题,导致系统开销很大,比如负载,io等。应该第一时间和开发部门确认,要求优化代码。

5. 进取心/不断学习

运维的知识范围很广,要不断学习。遇到问题,做好分析记录,事后还可以在部门内分享交流。

这也是我为什么热衷于写技术博客和维基的原因,好记性不如烂笔头。记录整理的过程也是一个思考升华的过程。

再给一个干货,我们公司(知道创宇)的技能表:blog.knownsec.com/Known,里面的技能点非常全面,也包含了运维相关

欢迎评论补充

其它的一些回答都非常棒,强烈建议也看看!

作者:唐浩然
链接:https://www.zhihu.com/question/23665108/answer/25456248
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

创宇的Tanky Woo兄弟已经概括的很好很全面了, 下面根据工作常用内容再补充细化一下,分两个层面吧,从技能上,以及意识上写一写(高手见笑):
l 技能篇
一、 基础工具(操作流):

  1. vi ,这个是必须的,因为服务器的运维多用远程登录,没有GUI。一些对服务器资源占用要求严格的公司会在安装时就要求最小化安装,然后再按需安装业务程序的依赖软件。这种情况默认桌面环境甚至Xserver是不安装的。不会用vi,会很痛苦。vi较常用的:查找,精确复制粘贴,精准定位至要编辑的行,表达式作字符串替换。
  2. 熟悉windows与linux之间相连接的工具。(Secure CRT, vnc, rdesktop,winscp),提到上面几个工具是因为你有可能在你的同事或者客户的windows机器上连linux server
  3. 此条多是照搬rhct的内容: 懂fdisk/parted分区工具,管理swap,管理用户,查看主机配置(主机型号,cpu型号,物理内存数量(比如看到有16条单根8G的内存),如果是代客户运维,这些东西与客户采购与系统扩容联系紧密,扯远了),lvm管理,文件系统管理,网络配置管理/多网卡绑定,各发行版上 二进制/源代码包的安装,软件包依赖关系解决,查看系统当前负载(内存占用top 10进程列表,cpu占用top10进程列表,IO负载),熟悉常用系统日志的查看方法
  4. 服务器配置安装部分:熟悉最常用 的ftp,http,nfs,samba,dns,dhcp,mail的一般配置方法。
  5. 熟悉系统常用中间件/数据库的安装(tomcat,jboss,was,oracle),可以不熟悉它们的配置
  6. 理解“环境变量”及其作用,能写shell script ,知道一点expect/sed/awk, 会使工作有效率

二、 进阶篇(分析流)

  1. 熟悉HA集群以及负载均衡(lvs)集群的配置
  2. 熟悉多路径(multipath)的配置和管理,熟悉san/nas的概念与区别
  3. 熟悉各发行版二进制包的制作过程与二进制包的安装原理或过程
  4. 分析系统性能瓶颈点(IO/memory/cpu,常用工具,top命令中shift组合键的特殊用法,Sar/vmstat/iostat/ipcs)
  5. 理解Xwindow大致原理,用ssh或 定义DISPLAY 作x server的任意跳转
  6. 熟悉PXE+kickstat作无人值守的批量部署
  7. 熟悉以源代码方式安装硬件驱动

三、 深入进阶篇

  1. 分析部分程序不能运行或没有按预想结果运行的原因,strace对程序运行跟踪,查看系统调用的过程,
  2. 较深入的系统瓶颈点分析(swap使用频率,硬件驱动的中断请求在各core的分布,高手见笑,我只用过这两个)
  3. 熟悉kdump的大致原理,nmi的大致原理,分析系统crash时dump出的文件。(如果能看到dump文件的话,里面记录的还是比较清晰的,日志会记录到crash时每个core上运行的进程正在执行的系统调用,有遇到过:几次系统总是在某个系统调用发生时crash,后来百度了资料,才知道这个系统调用存在bug,最后单升级kernel就好了。 现在让我很蛋疼的是很多时候机器hang掉,不会产生kdump文件,尽管设置了内核的oops/nmi相关参数,如果有高手碰巧看到,希望能请教一下)

l B,意识篇
1) 安全意识:关于这个,有创宇的兄弟在,不敢班门弄斧
2) 磨刀意识:关于任何操作配置,最好先搞明白操作或配置的原理,然后再去操作。应一句话叫做“磨刀不误砍柴功”,而且对于类似的操作可以举一反三。
3) 计划意识:复杂的变更操作比如多台主机以及牵涉到san存储,最好先作 操作计划,写计划文档,详细致每条命令,然后请高手帮忙审核。 这样能最大程度使整个操作过程安全。如果是重要的客户业务系统,操作最好有回退方案,而一旦变更失败,客户可以在短时间内将业务回退。
4) 记录分享意识:遇到自己认为较特殊的案例时,记得要写 案例过程及分析的文档。也方便自己以后翻看,或者和其他兄弟分享,作知识的传播以便于大家以后都能少走弯路。
5) 监控意识:运维来说,监控是非常重要的,监控是发现系统各种异常的眼睛,所以运维应该和监控紧密配合。
6) 业务意识:尽量了解维护的各主机上业务类型,以及各主机业务之间的关联性。因为任何维护工作都是为主机能提供业务服务的,当某业务中断,能最快的知道与此业务相关的主机群,从而缩小故障排查范围,最快定位故障。

作者:今何在
链接:https://www.zhihu.com/question/23665108/answer/25290837
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

谢邀,问题很好,。楼上那位已经回答的很全面了,我补充一点点:
1.关于运维工程师
百度百科给出的说法是运维工程师,集合网络、系统、开发工作于一身的“复合性人才”。
实际上也差不多
随着IT信息系统的发展,运维岗位进一步细分
A.根据面向对象的不同有:
基础运维 应用运维 系统运维 虚拟化运维 存储运维 linux运维 网络运维/IDC运维
B.根据职业发展层次的不同阶段又有:
桌面运维-->系统运维--->开发型运维--->系统架构师

所以必须掌握的基础技能也有大概的几个方向:路由交换/系统平台/脚本开发/系统架构/信息安全
分别由浅入深,类比一些认证所代表的知识层次(在这里证书不代表能力,只是作为一个参照物):
路由交换:
参照cisco的基准 CCNA-->CCNP-->CCIE
系统平台:
WIN参照微软 MCTS-->MCSE/MCITP Linux参照redhat RHCE--->RHCA
虚拟化有商业上的思杰/VMware 开源有openstack/cloudstack
脚本开发:bashshell /powershell / VB /python/Ruby / C /c++ / Go #开发语言我就列出看到过有运维人在用的,偶尔看到有BT用lisp。。。
信息安全:ISO27001你得知道是什么。乌云得经常去逛逛。
------------------
对于软件的使用,得仁得智,我个人是拥抱开源的,商业化产品过于追逐利益。
运维工程师 是从一个呆逼进化为苦逼再成长为牛逼的过程(请宽恕我的用词),前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化。
不要过于在意商业产品的部署和企业方面的技术认证,这玩意变化太快。
关键是通过前期的广泛吸收打好基础,进而找到今后要走的路,从而抓住一个方向深入。最终要成为一个方面的专家而不是什么都会什么都不精通的普工!
虽然操不着系统架构师的心,但也要有尽量靠齐的大局观和视角。以项目来促进成长,以压力为动力继续前行~!做一个有价值,有成就,有原则,有妹子的四有运维工程师!!

《海量运维》这本书里面整理了一个大概的运维体系框架,我很喜欢,借用一下:

相关书籍:
路由交换:
《TCP/IP协议》 第三卷 | cisco教材
linux:
(鸟哥 全套) | Linuxshell脚本攻略 | 深入理解linux内核 | linux内核完全注释
win:
教材/白皮书/google
服务部署:
构建高性能WEB站点 |高性能网站建设指南 -steve souders | puppet实战 | 大话存储 2 |Mysql 性能调优与架构设计 - 简朝阳
信息安全:
Web前端黑客技术揭秘 | 白帽子讲web安全 |
脚本开发:
深入理解计算机系统 | 编写可读代码的艺术 | Python核心编程 | 笨办法学Python
启发思路:
淘宝十年 | 海量运维 |大数据时代 | 思科九年 |我这一代京东人

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:运维工程师必须掌握的基础技能有哪些? | Bruce's Blog

发表评论

留言无头像?