想从事运维开发,有什么好的自学 CentOS 和 Python 学习方案?
程序员文章站
2022-05-10 17:53:51
...
从2000年接触电脑(在网吧)2012年知道linux和python 现在自学鸟哥的私房菜和learn python the hard way 。 没有相关的工作经验 具体怎么学习也不是很清晰 想过可能的困难 比如这个岁数可能没有哪个公司愿意用 连生存都成问题 更不要提成家(现在无父母无妻儿)遇到冷眼和嘲笑 但就喜欢编程 想以此为生(别的工作做过很多)不管路有多苦 我愿意往前走 (我有时间和条件学习)请大神指点 真心求教 真心的!!!
2014.06.11
谢谢回答问题的好心人和关注这个问题的人 我不是想靠这个成为大牛 年薪几十万 自知自己也不是天才,就是喜欢互联网和这里面发生的事,特别关注,想成为其中一份子,没别的。
目前已找到工作,休息时间还算充裕,可以学习了,也许将来我如很多人说的那样得不到没有相关工作的机会,但我会一直做下去,自己搭服务器和建站,或者app后台服务器。总有办法做下去的。
这不仅是我的爱好,更多的是寄托。
真心的谢谢回答问题的人,真的,谢谢。
我也来说两个案例吧。
近期招过一个人,我们叫他 M君 吧,M君之前是在类似运营商、IDC这样的地方工作的。网络基础比较扎实,系统基础比较弱。在运维经理面过之后,告诉我可能是可塑之才。我面过之后觉得此人网络方面如果都是自学,那还是有一定深度的。而M君也在面试之后几次电话我,一方面表述其及其热情的学习意愿(是的,就和题主现在一样,没有别的意思,但的确是一样),一方面多方打探未来的工作机会是否有学习的空间。我让M君放心,我们小公司,别的优点不一定有,人人需做多面手的环境还是有的。
于是 M君 来了。
我交付一个任务,搭建某种 VPN 环境。告诉他由于需要尽量保证环境一致性,需要使用 XXX 系统为基础搭建。M君 多次(绝对是三次以上)向我反映,他希望用 YYY 系统为基础,因为他比较熟悉。而我则明确的告诉他,用 XXX 是大环境的需求,同时原理上 XXX 和 YYY 是一样的,如果你知其根本,你不会觉得有多痛苦。同时,我这个任务,不是那么的赶时间,对你来说,有时间给你学习的新的东西不是最好的么?
这样的对话,发生了大约 4-5 次。要知道,这样的对话在日常的工作中,即使发生一次我都会嫌烦。4-5 我绝对是耐着性子了。
后期,又有一个任务需求,其基础是需要使用 puppet,交付给 M君。我告诉 M君,我们有完整的测试环境,我们有文档,先去看文档知道如何使用测试环境。同时,你 puppet 通过 git 代码提交后,会有两个人帮你 review,最后在线上 pull 应用。
隔天,没有任何前兆,生产环境代码更新了(我们有报警)。我怒,发现 M君未读文档,直接在生产环境跳过 git 修改部署文件。
之后,M君开始使用 Git 整理文件。期间,M君叫我 review 代码,我基本随叫随到,指出错误,指出不足,道清原因,给清方向。
某日,发现线上代码错误,追问 M君 :“我 review 的时候,不是告诉你这个地方是错的!你为什么放上去?” 我也不细表M君回复了些什么了,反正在我看来都是些无意义的话。
在我细看 git log 的过程中,M君尝试未经允许的上线,至少有三次。我并不是每次都指出……为什么……因为我太累了。
然后,还有然后么?没有然后了,M君当然走了。
对于 M君,如果你能看到这段文字,我想告诉你,不是每家公司都有人可以、都有人愿意 review 你的工作的很多细节。你下次要是还有这样的机会,记得好好把握。
对于题主,我也不知道这段文字能表达什么,但有一点是肯定的,热情?热情不算什么,热情只是最必要的一个基础,但还需要很多东西。
再说一个。
之前在一家小公司,某块业务,基本就我一个人,算是独当一面。蜜月在海边,老板一个电话,奔到房间,上线调试设备。这日子有点苦…… 好不容易产品越来越好,销量越来越好。招个人吧!
花了一年,找到一个合适的人,叫他 D君 吧,D君自学能力强,工作动力强。不善表达,但工作沟通足够。工作也非常踏实。
但碍于工作机会原因,发展的一直比较缓慢。而当时我那家公司在运维上的环境开始止步不前了。在我离开这家公司后,我也将 D君 推荐到新的公司。
我问D君:“想换工作么?”
答:“想,真想!(此处省略电话若干通,大家自信脑补)”
遂推荐,D君赴约面试,新单位OK,D君 Say no...
我晕,我说你不是想么?
答:“是想,但是…………” 这里我不细说了,涉及个人信息,但总体上就是那种真的不值一提的事情。
2年后,也有家公司有个工作机会,我想来想去又想到 D君。但是上次被放鸽子的感觉依旧在心中荡漾。我鼓起勇气,再次拨通 D君 的电话,“想换工作么?”
“想,太想了!…………(这里省略N通电话,以及内容,请大家强烈脑补)”
“我这里有个机会,我可以推荐你,但是你真想换么?你可不能再放我鸽子了!”
“我保证!我是真想换工作!…………………………”
好吧,let's go..... 面试 发 offer ,约新公司上班时间。
过了15天左右,D君又联系我了 “我不去了,因为xxxx 我还是留在这里……”
行吧,我没有多说一句话。我知道我这辈子不会再给 D君 介绍工作了,即使他能力再强,即使他工作再踏实。
人啊,不能停……
所以题主,你现在要做的,其实很简单啊。找个相关的工作,好好做。
评论区的 @沈建 说,“相关工作哪里这么好找啊,运维就不见有要实习的,因为没经验。然后就恶性循环了”
说说我自己吧,
我和大多数人一样,刚开始是从实习开始的
我和大多数人一样,实习刚开始是做 HelpDesk (神马?你实习就开始做Ops了?那还不知足!) HelpDesk 么,每天装电脑,拆电脑。有人离职,有人入职,忙得很。公司两层楼,整天搬着电脑楼上楼下的跑。除了装电脑,还要装软件……嗯!其实算算,我也做了2年的 HelpDesk……
我和大多数人不一样的是,我在实习的时候已经有 MCSE 证书了。
我和大多数人不一样的是,我在实习之前就已经在大学做了两年兼职了。我在某非主流小杂志社做类UNIX板块编辑。当时是月刊。
我和一部分人不一样的是,我找到这份实习工作的时候,非常开心的往家里打电话,通知我爸爸,我找到工作了!
就说这么多吧。 不要当一个操作员。不要只会写CRUD。
不要当一个操作员。不要只会写CRUD。
不要当一个操作员。不要只会写CRUD。
最最重要的事情要说三遍。
知乎上很多答案,包括互联网界的一些刻板的印象,觉得运维(包括运维开发)门槛低,技术简单,入行快,东西杂而不专,天花板很低。
但是我想说,这是一个需要keep moving的行当。
毕业之后第一份工作是在一家大公司的运维部门里做开发。
很快你就会发现不了解业务就没法做好。陷入CRUD的无限循环里。
那时候我的理解,运维的本质就是通过一切手段,通过规划、部署、分析等步骤,预见问题和快速解决问题。
而运维开发,就是来锻造用来做上面那些事的刀枪剑戟斧钺钩叉。
所以我干了一件很无耻的事情,不务正业,挨个team偷师。
入职的时候我只会写C,会用Linux,简单的Shell脚本,如是而已,作为一个应届生按现在的标准也许是应该被扫地出门的。
于是和sa们学了awk,perl,nginx,bind,和网管们学了cisco,h3c,学了vlan,ospf,bgp
和安全组同学们学了xss,注入,简单的ids实现
和DBA们学了MySQL的基础知识,sql语句优化,replication,高可用,数据一致性
和值班组的兄弟们一起下机房,拆机器,换盘,装系统。
哦,那时候还因为在和朋友一起玩的一个网站做技术(兼职,不给钱的,算义工?),从C到PHP到HTML/javascript再到去机房上架修服务器什么的全部要自己搞。
不务正业的结果是至少我觉得我了解了运维开发的意义是什么。正因为我对运维工作的了解,我才能为他们创造出一把顺手的利刃。
还有一个结果是光造刀不管用,偶尔也会上阵砍几个人。
运维的原罪可能就在于方向太多,大公司里的人分工明确通常知识面不够全面,而小公司里的人往往缺乏大压力的考验而缺乏非常重要的严谨与钻研的精神。
而运维开发的原罪也许在于你创造的十八样兵器并不能直接为公司带来很多人所谓的利益。所谓不重要,吃力不讨好。
到了现在的公司以后,有了一个很大的成长。
因为一切都是几乎从零开始。而且不同于做义工的网站的小打小闹,这是一家公司,至少是需要一点点规范的。
要一个人自己去机房搞定所有的事情。
要一个人研究不断出现的新技术,在合适的时间提出建议并且推进她落地。
要一个人不断切换在各种角色中,前一秒还在改一个数据统计报表的css,下一秒手机一响直接去解决slave延迟的问题。再下一秒,也许供应商,运营商,第三方云服务商,短信平台商在QQ上头像疯狂闪起,直接切换到公司第一快手的聊天模式。
这一段日子过下来,我觉得我最大的收获是开始真正在整个技术团队里,开始成为一个在所谓的技术架构方面说话还算有分量的人,成为一个通过一些黑科技让同事们眼前一亮降低了他们工作的复杂度的人,成为一个在紧急状况发生的时候能保持冷静的人(只要没有人站在我后面盯着我的屏幕),等等等等。
副作用是成为了一个快被虐死的人。公用备胎。开发没空我偶尔去写代码,测试没空我偶尔去打个压。休假出国不管去哪永远带着电脑,如果不买3G/4G上网卡就全身难受。
我曾经发誓打死不学python,不过因为帮人查bug太多,现在基本上看着文档能写的七七八八了,就是有点慢。
我曾经发誓打死不学C++(一个C程序员就是如此傲娇),但是现实很骨感,你代码都看不懂你去哪儿分析性能啊摔……
人,都是被逼出来的。
我今天再发一个誓我打死不学java,不知道能撑多久。
我并不喜欢把运维和运维开发割裂开来看。在我看来,一个好的运维是要懂开发的,而一个好的运维开发必须要知道运维的兄弟们是怎么样干什么的。
换句话说,你的命运决定了你必须做到某种意义上的全栈。哪怕你的分工很明确。我认识的那些前同事里的牛人们,在某一个方向上的专精程度百倍千倍于我,但是他们仍然做到了某种意义上的全栈。
或许我真的不是一个合格的典型的op。可我没有在这条道路上后悔过。
被我面且拒过的人快到三位数了,我觉得一个最大的问题就是
我并不需要一个操作员。
并不需要一个只会CRUD的码农。
在大公司里,肯定是需要的,但我们是小公司;在大公司里,这样的人也许永远是最底层的工程师,而无法走上技术核心、专家、科学家的序列。
我希望我的candidate喜欢问为什么。喜欢较真。学习能力和意愿强。
很高兴老板和我抱有同样的观点,副作用就是招了一年的人,面了二十来个,只过了1个,还明年才入职。FML。
如果Ta只是经验不够,那么没有关系,我会和Ta分享我的经验,并且在不那么关键的问题上允许Ta用犯错来成长;但如果Ta只是一个操作员,即便十年经验,我也会灭掉他。
因为我始终觉得一个互联网公司的运维或者说架构核心的那么一小撮人,创造力和学习能力是非常非常非常重要的。我们是打天下的特种部队,也是守天下的禁*。
再扯几句,云时代到来,很多人喊运维要失业了。
我想说谁告诉你运维就是扛服务器的。这话我们做运维的说,可以,你们不做运维的人说,滚。
底层服务化以后,高level的需求一样很多,这个节骨眼上,ops们要努力追上时代的步伐:)
我的现阶段目标是可以好好地连续睡上一周。
中期目标是可以连续休假21.75天(一个月)。
终极目标是,没有蛀牙。
似乎答的稍微有点跑题了。关于转不转行这个问题,这是一条苦逼的路,希望lz能想好;关于怎么学,每个学习环境、每个公司、每个人都有自己的学法,也不能一概而论。
重要的是,你想要做什么。
follow your heart.
如果你觉得当一个高阶操作员也很happy的话,请无视我上面说的所有话。
因为我真的真的不是一个合格的典型的op,会有太多的人不认同我的观点。
再说一次,follow your heart. 找一份工作,你有兴趣的。踏踏实实好好做。想专精或者什么都懂一点都可以。不要轻言放弃。经验没有可以积累,热情没了只能呵呵。
利益相关:
无关专业理学本科毕业6年,运维干了7年。
现某创业小公司(~50人,技术团队~20人,服务器50-60台)唯一的运维人员。
负责全部的生产环境服务器以及办公环境的维护。
负责反向代理层面的WAF以及灰度发布功能的开发。
负责日志分析和给业务部门的数据统计支撑,虽然做的很差。
参与性能调优,负责常见第三方Library/Kernel层面的troubleshooting。
CCIE。
C程序员。Perl/PHP熟练工。
从不敢说精通,水平自觉非常一般但从不放弃让自己进步的机会。
知乎上有蛮多运维方面的大牛,有很多人可以提供比我优秀地多的建议,我只谈谈我的经历.
第一张图是睡眠时间检测的app,在最近的224天里面,我的平均睡眠时间是5小时34分.
第二张图是我入行35个月内购买和查阅的书,总量大概是150-200本之间,这照片里大概是1/2.
实际上,我最近的35个月一直都是这样子的一个状态.
毕业第一年,顺从家人的意思,回老家教书,工作和我,相看两厌.大学专业学得一团糟,也不是计算机科班,有过跳槽干计算机的想法,苦于什么都不会.
毕业第二年,认识了一位姑娘,我喜欢她,短暂地我们走到了一起,最终她回家参加国企招聘,并留了下来.这段无疾而终的感情,对我影响很大.
毕业第三年,经过一年的内心挣扎和准备,说服家里人,辞去了学校的工作,通过一位同乡,在一家IT运维公司找到了IT驻场的工作,客户是运营商.
入职第一年,给路由器拉线,给存储换盘,给SAN SW配config,给小机换板卡,学网络,学存储,学Aix,学备份.打各种杂,加各种班.和一群毕业生一起,拿2000块的工资,挤8平米的房子.
入职第二年,学Linux,学shell,布服务,收日志,布监控,查故障,理告警,学配置管理,学资源管理,学性能优化,学变更管理,参加内部和外部的培训,查google,读博客,翻官网KB.考红帽认证.补大学基础课程.
入职第三年,学数据库原理,学Java,学Python,学分布式系统,学zabbix+hadoop+splunk,去了解云计算,了解openstack,去了解大数据,探索saprk.
细想这其中过程,几乎也没什么人带,前辈们做的最多的程度,就是丢给我一两个书目,一两个文档,让我去学习,去掌握,由于运营商在前几年的时候IOE的比重很大,所以至Linux起,能指导我的人也不太多,我就是这么少睡多看,自己摸索到了现在.
运维入门条件不高,就像说相声,有嘴就能说,但要卖票挣钱,要学的东西多得难以罗列.因此建议先找一份工作好好做,学学linux,虚拟化先养活自己,看微博,刷博客,看看自己的兴趣在哪里,努力的极限在哪里,保持对技术的好奇心,总能实现你的目标.
至于你要的方向和路径,其实知乎上也不少了,只是不成体系,比如:
一个新手面试 Linux 运维工作至少需要知道哪些知识?
初学 Linux,应该看什么书,从哪里下手?有哪些可以自学以及交流的网站?
运维工程师必须掌握的基础技能有哪些? 学习方案么?
选个合适的helpdesk工作环境,习惯做个YES先生。
先了解运维基本就是作为帮助和支持作为出发点,锻炼了你心智。
再从日常工作入手,网络(了解到ip/vpn/fw/route)系统(win/linux/macos/unix/bsd/等)工具命令。慢慢一层一层的钻研,然后自己用工作上的便利开始用虚拟机进行网络上流行的方案测试(LVS+Keepalived+nginx/oracle Rac/Mysql群集/ Lamp整合)等等
当你有经验。有认真看过文档,你就有去面试下一份运维工程师的机会。然后慢慢了解运维的日常需求,再向开发运维的方向走吧。
什么都是基础,但要知道运维并不简单。希望对你有用 其实很多人把事情都弄反了...
编程只是一项技能, centos和python只是一个工具...
首先是你想做什么事, 然后为了做这件事去学习需要的技能, 学习使用需要的工具...
而你是为了学习这个技能而要学习这个技能...
这样你没法持久的...
而且我见过的大部分公司的需求都从"你会什么"转化为:"你做过什么, 你为做这个克服了那些困难, 然后从中学到了什么" 运维如何通过学习python学会编程
https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md 不建议转行去做运维。
原因无他,年龄、基础以及现实的用人环境就已经限制死了,你不可能有比较好的发展。
难道你还想和刚毕业的、精力充沛的、热情澎湃的小年轻去正面的硬碰硬?
如果铁了心就是要去做,那么,我给你的建议是:
1. 别一上来就去学linux下面的命令什么的,你先看看能能否顺利的把dos给摆平,找找感觉再说。
2. 别想着样样去学,还是有侧重点比较好一些,资源很丰富、别人都会的,你大体看看就可以了,即便有差距但只要不明显,放着吧。但别人可能不花太多精力的,你倒是可以花些时间去看看,走差异化竞争之路么。
3. 多留意一下业务逻辑,别只是死背命令配参数什么的。
4. 身体!!身体!!身体!!这个是一切的根本!!!!
利益相关:
曾经的MCSE、CNE(认证novell工程师)、CCNA、MCDBA。
写过vb和foxpro程序(一年半不到)、做过硬件开发测试(6年)、做过网络运维(不止6年)......
曾经能很熟练的写dos6.x下面的批命令,但最近4年基本上不怎么接触纯技术的东西了,特别是12年到现在。 回答这个问题真有意义?我觉得更应该回答怎么复习高考。 我一直认为,运维有两条发展路线
1精通shell或者python等编程开发
2精通各种配置或者工具的运用
其中,1对环境的要求相对小些,2的话其实考验的是你之前摸过什么交换机,服务器,存储等等。你的做过的数据库规模最大是多少,一台服务器最大做到过多少并发等等等等。
当然很多人以为自己是12兼顾,实际上大多数是2 只要有心,什么时候都不晚。期待你成为高手。
事在人为,路在脚下。不要把自己当成30岁,就当20岁好了,就让小孩指挥着干活好了。记住,你不会永远这样的。
走弯路的人多的是,又没到盖棺定论的时候。向上面那个小哥学习,多看书多实践,总是有希望的。希望能坚持下来。
2014.06.11
谢谢回答问题的好心人和关注这个问题的人 我不是想靠这个成为大牛 年薪几十万 自知自己也不是天才,就是喜欢互联网和这里面发生的事,特别关注,想成为其中一份子,没别的。
目前已找到工作,休息时间还算充裕,可以学习了,也许将来我如很多人说的那样得不到没有相关工作的机会,但我会一直做下去,自己搭服务器和建站,或者app后台服务器。总有办法做下去的。
这不仅是我的爱好,更多的是寄托。
真心的谢谢回答问题的人,真的,谢谢。
回复内容:
知乎上好多答案都是那种看似答非所问,其实仁者见仁的答案。我也来说两个案例吧。
近期招过一个人,我们叫他 M君 吧,M君之前是在类似运营商、IDC这样的地方工作的。网络基础比较扎实,系统基础比较弱。在运维经理面过之后,告诉我可能是可塑之才。我面过之后觉得此人网络方面如果都是自学,那还是有一定深度的。而M君也在面试之后几次电话我,一方面表述其及其热情的学习意愿(是的,就和题主现在一样,没有别的意思,但的确是一样),一方面多方打探未来的工作机会是否有学习的空间。我让M君放心,我们小公司,别的优点不一定有,人人需做多面手的环境还是有的。
于是 M君 来了。
我交付一个任务,搭建某种 VPN 环境。告诉他由于需要尽量保证环境一致性,需要使用 XXX 系统为基础搭建。M君 多次(绝对是三次以上)向我反映,他希望用 YYY 系统为基础,因为他比较熟悉。而我则明确的告诉他,用 XXX 是大环境的需求,同时原理上 XXX 和 YYY 是一样的,如果你知其根本,你不会觉得有多痛苦。同时,我这个任务,不是那么的赶时间,对你来说,有时间给你学习的新的东西不是最好的么?
这样的对话,发生了大约 4-5 次。要知道,这样的对话在日常的工作中,即使发生一次我都会嫌烦。4-5 我绝对是耐着性子了。
后期,又有一个任务需求,其基础是需要使用 puppet,交付给 M君。我告诉 M君,我们有完整的测试环境,我们有文档,先去看文档知道如何使用测试环境。同时,你 puppet 通过 git 代码提交后,会有两个人帮你 review,最后在线上 pull 应用。
隔天,没有任何前兆,生产环境代码更新了(我们有报警)。我怒,发现 M君未读文档,直接在生产环境跳过 git 修改部署文件。
之后,M君开始使用 Git 整理文件。期间,M君叫我 review 代码,我基本随叫随到,指出错误,指出不足,道清原因,给清方向。
某日,发现线上代码错误,追问 M君 :“我 review 的时候,不是告诉你这个地方是错的!你为什么放上去?” 我也不细表M君回复了些什么了,反正在我看来都是些无意义的话。
在我细看 git log 的过程中,M君尝试未经允许的上线,至少有三次。我并不是每次都指出……为什么……因为我太累了。
然后,还有然后么?没有然后了,M君当然走了。
对于 M君,如果你能看到这段文字,我想告诉你,不是每家公司都有人可以、都有人愿意 review 你的工作的很多细节。你下次要是还有这样的机会,记得好好把握。
对于题主,我也不知道这段文字能表达什么,但有一点是肯定的,热情?热情不算什么,热情只是最必要的一个基础,但还需要很多东西。
再说一个。
之前在一家小公司,某块业务,基本就我一个人,算是独当一面。蜜月在海边,老板一个电话,奔到房间,上线调试设备。这日子有点苦…… 好不容易产品越来越好,销量越来越好。招个人吧!
花了一年,找到一个合适的人,叫他 D君 吧,D君自学能力强,工作动力强。不善表达,但工作沟通足够。工作也非常踏实。
但碍于工作机会原因,发展的一直比较缓慢。而当时我那家公司在运维上的环境开始止步不前了。在我离开这家公司后,我也将 D君 推荐到新的公司。
我问D君:“想换工作么?”
答:“想,真想!(此处省略电话若干通,大家自信脑补)”
遂推荐,D君赴约面试,新单位OK,D君 Say no...
我晕,我说你不是想么?
答:“是想,但是…………” 这里我不细说了,涉及个人信息,但总体上就是那种真的不值一提的事情。
2年后,也有家公司有个工作机会,我想来想去又想到 D君。但是上次被放鸽子的感觉依旧在心中荡漾。我鼓起勇气,再次拨通 D君 的电话,“想换工作么?”
“想,太想了!…………(这里省略N通电话,以及内容,请大家强烈脑补)”
“我这里有个机会,我可以推荐你,但是你真想换么?你可不能再放我鸽子了!”
“我保证!我是真想换工作!…………………………”
好吧,let's go..... 面试 发 offer ,约新公司上班时间。
过了15天左右,D君又联系我了 “我不去了,因为xxxx 我还是留在这里……”
行吧,我没有多说一句话。我知道我这辈子不会再给 D君 介绍工作了,即使他能力再强,即使他工作再踏实。
人啊,不能停……
所以题主,你现在要做的,其实很简单啊。找个相关的工作,好好做。
评论区的 @沈建 说,“相关工作哪里这么好找啊,运维就不见有要实习的,因为没经验。然后就恶性循环了”
说说我自己吧,
我和大多数人一样,刚开始是从实习开始的
我和大多数人一样,实习刚开始是做 HelpDesk (神马?你实习就开始做Ops了?那还不知足!) HelpDesk 么,每天装电脑,拆电脑。有人离职,有人入职,忙得很。公司两层楼,整天搬着电脑楼上楼下的跑。除了装电脑,还要装软件……嗯!其实算算,我也做了2年的 HelpDesk……
我和大多数人不一样的是,我在实习的时候已经有 MCSE 证书了。
我和大多数人不一样的是,我在实习之前就已经在大学做了两年兼职了。我在某非主流小杂志社做类UNIX板块编辑。当时是月刊。
我和一部分人不一样的是,我找到这份实习工作的时候,非常开心的往家里打电话,通知我爸爸,我找到工作了!
就说这么多吧。 不要当一个操作员。不要只会写CRUD。
不要当一个操作员。不要只会写CRUD。
不要当一个操作员。不要只会写CRUD。
最最重要的事情要说三遍。
知乎上很多答案,包括互联网界的一些刻板的印象,觉得运维(包括运维开发)门槛低,技术简单,入行快,东西杂而不专,天花板很低。
但是我想说,这是一个需要keep moving的行当。
毕业之后第一份工作是在一家大公司的运维部门里做开发。
很快你就会发现不了解业务就没法做好。陷入CRUD的无限循环里。
那时候我的理解,运维的本质就是通过一切手段,通过规划、部署、分析等步骤,预见问题和快速解决问题。
而运维开发,就是来锻造用来做上面那些事的刀枪剑戟斧钺钩叉。
所以我干了一件很无耻的事情,不务正业,挨个team偷师。
入职的时候我只会写C,会用Linux,简单的Shell脚本,如是而已,作为一个应届生按现在的标准也许是应该被扫地出门的。
于是和sa们学了awk,perl,nginx,bind,和网管们学了cisco,h3c,学了vlan,ospf,bgp
和安全组同学们学了xss,注入,简单的ids实现
和DBA们学了MySQL的基础知识,sql语句优化,replication,高可用,数据一致性
和值班组的兄弟们一起下机房,拆机器,换盘,装系统。
哦,那时候还因为在和朋友一起玩的一个网站做技术(兼职,不给钱的,算义工?),从C到PHP到HTML/javascript再到去机房上架修服务器什么的全部要自己搞。
不务正业的结果是至少我觉得我了解了运维开发的意义是什么。正因为我对运维工作的了解,我才能为他们创造出一把顺手的利刃。
还有一个结果是光造刀不管用,偶尔也会上阵砍几个人。
运维的原罪可能就在于方向太多,大公司里的人分工明确通常知识面不够全面,而小公司里的人往往缺乏大压力的考验而缺乏非常重要的严谨与钻研的精神。
而运维开发的原罪也许在于你创造的十八样兵器并不能直接为公司带来很多人所谓的利益。所谓不重要,吃力不讨好。
到了现在的公司以后,有了一个很大的成长。
因为一切都是几乎从零开始。而且不同于做义工的网站的小打小闹,这是一家公司,至少是需要一点点规范的。
要一个人自己去机房搞定所有的事情。
要一个人研究不断出现的新技术,在合适的时间提出建议并且推进她落地。
要一个人不断切换在各种角色中,前一秒还在改一个数据统计报表的css,下一秒手机一响直接去解决slave延迟的问题。再下一秒,也许供应商,运营商,第三方云服务商,短信平台商在QQ上头像疯狂闪起,直接切换到公司第一快手的聊天模式。
这一段日子过下来,我觉得我最大的收获是开始真正在整个技术团队里,开始成为一个在所谓的技术架构方面说话还算有分量的人,成为一个通过一些黑科技让同事们眼前一亮降低了他们工作的复杂度的人,成为一个在紧急状况发生的时候能保持冷静的人(只要没有人站在我后面盯着我的屏幕),等等等等。
副作用是成为了一个快被虐死的人。公用备胎。开发没空我偶尔去写代码,测试没空我偶尔去打个压。休假出国不管去哪永远带着电脑,如果不买3G/4G上网卡就全身难受。
我曾经发誓打死不学python,不过因为帮人查bug太多,现在基本上看着文档能写的七七八八了,就是有点慢。
我曾经发誓打死不学C++(一个C程序员就是如此傲娇),但是现实很骨感,你代码都看不懂你去哪儿分析性能啊摔……
人,都是被逼出来的。
我今天再发一个誓我打死不学java,不知道能撑多久。
我并不喜欢把运维和运维开发割裂开来看。在我看来,一个好的运维是要懂开发的,而一个好的运维开发必须要知道运维的兄弟们是怎么样干什么的。
换句话说,你的命运决定了你必须做到某种意义上的全栈。哪怕你的分工很明确。我认识的那些前同事里的牛人们,在某一个方向上的专精程度百倍千倍于我,但是他们仍然做到了某种意义上的全栈。
或许我真的不是一个合格的典型的op。可我没有在这条道路上后悔过。
被我面且拒过的人快到三位数了,我觉得一个最大的问题就是
我并不需要一个操作员。
并不需要一个只会CRUD的码农。
在大公司里,肯定是需要的,但我们是小公司;在大公司里,这样的人也许永远是最底层的工程师,而无法走上技术核心、专家、科学家的序列。
我希望我的candidate喜欢问为什么。喜欢较真。学习能力和意愿强。
很高兴老板和我抱有同样的观点,副作用就是招了一年的人,面了二十来个,只过了1个,还明年才入职。FML。
如果Ta只是经验不够,那么没有关系,我会和Ta分享我的经验,并且在不那么关键的问题上允许Ta用犯错来成长;但如果Ta只是一个操作员,即便十年经验,我也会灭掉他。
因为我始终觉得一个互联网公司的运维或者说架构核心的那么一小撮人,创造力和学习能力是非常非常非常重要的。我们是打天下的特种部队,也是守天下的禁*。
再扯几句,云时代到来,很多人喊运维要失业了。
我想说谁告诉你运维就是扛服务器的。这话我们做运维的说,可以,你们不做运维的人说,滚。
底层服务化以后,高level的需求一样很多,这个节骨眼上,ops们要努力追上时代的步伐:)
我的现阶段目标是可以好好地连续睡上一周。
中期目标是可以连续休假21.75天(一个月)。
终极目标是,没有蛀牙。
似乎答的稍微有点跑题了。关于转不转行这个问题,这是一条苦逼的路,希望lz能想好;关于怎么学,每个学习环境、每个公司、每个人都有自己的学法,也不能一概而论。
重要的是,你想要做什么。
follow your heart.
如果你觉得当一个高阶操作员也很happy的话,请无视我上面说的所有话。
因为我真的真的不是一个合格的典型的op,会有太多的人不认同我的观点。
再说一次,follow your heart. 找一份工作,你有兴趣的。踏踏实实好好做。想专精或者什么都懂一点都可以。不要轻言放弃。经验没有可以积累,热情没了只能呵呵。
利益相关:
无关专业理学本科毕业6年,运维干了7年。
现某创业小公司(~50人,技术团队~20人,服务器50-60台)唯一的运维人员。
负责全部的生产环境服务器以及办公环境的维护。
负责反向代理层面的WAF以及灰度发布功能的开发。
负责日志分析和给业务部门的数据统计支撑,虽然做的很差。
参与性能调优,负责常见第三方Library/Kernel层面的troubleshooting。
CCIE。
C程序员。Perl/PHP熟练工。
从不敢说精通,水平自觉非常一般但从不放弃让自己进步的机会。
知乎上有蛮多运维方面的大牛,有很多人可以提供比我优秀地多的建议,我只谈谈我的经历.
第一张图是睡眠时间检测的app,在最近的224天里面,我的平均睡眠时间是5小时34分.
第二张图是我入行35个月内购买和查阅的书,总量大概是150-200本之间,这照片里大概是1/2.
实际上,我最近的35个月一直都是这样子的一个状态.
毕业第一年,顺从家人的意思,回老家教书,工作和我,相看两厌.大学专业学得一团糟,也不是计算机科班,有过跳槽干计算机的想法,苦于什么都不会.
毕业第二年,认识了一位姑娘,我喜欢她,短暂地我们走到了一起,最终她回家参加国企招聘,并留了下来.这段无疾而终的感情,对我影响很大.
毕业第三年,经过一年的内心挣扎和准备,说服家里人,辞去了学校的工作,通过一位同乡,在一家IT运维公司找到了IT驻场的工作,客户是运营商.
入职第一年,给路由器拉线,给存储换盘,给SAN SW配config,给小机换板卡,学网络,学存储,学Aix,学备份.打各种杂,加各种班.和一群毕业生一起,拿2000块的工资,挤8平米的房子.
入职第二年,学Linux,学shell,布服务,收日志,布监控,查故障,理告警,学配置管理,学资源管理,学性能优化,学变更管理,参加内部和外部的培训,查google,读博客,翻官网KB.考红帽认证.补大学基础课程.
入职第三年,学数据库原理,学Java,学Python,学分布式系统,学zabbix+hadoop+splunk,去了解云计算,了解openstack,去了解大数据,探索saprk.
细想这其中过程,几乎也没什么人带,前辈们做的最多的程度,就是丢给我一两个书目,一两个文档,让我去学习,去掌握,由于运营商在前几年的时候IOE的比重很大,所以至Linux起,能指导我的人也不太多,我就是这么少睡多看,自己摸索到了现在.
运维入门条件不高,就像说相声,有嘴就能说,但要卖票挣钱,要学的东西多得难以罗列.因此建议先找一份工作好好做,学学linux,虚拟化先养活自己,看微博,刷博客,看看自己的兴趣在哪里,努力的极限在哪里,保持对技术的好奇心,总能实现你的目标.
至于你要的方向和路径,其实知乎上也不少了,只是不成体系,比如:
一个新手面试 Linux 运维工作至少需要知道哪些知识?
初学 Linux,应该看什么书,从哪里下手?有哪些可以自学以及交流的网站?
运维工程师必须掌握的基础技能有哪些? 学习方案么?
选个合适的helpdesk工作环境,习惯做个YES先生。
先了解运维基本就是作为帮助和支持作为出发点,锻炼了你心智。
再从日常工作入手,网络(了解到ip/vpn/fw/route)系统(win/linux/macos/unix/bsd/等)工具命令。慢慢一层一层的钻研,然后自己用工作上的便利开始用虚拟机进行网络上流行的方案测试(LVS+Keepalived+nginx/oracle Rac/Mysql群集/ Lamp整合)等等
当你有经验。有认真看过文档,你就有去面试下一份运维工程师的机会。然后慢慢了解运维的日常需求,再向开发运维的方向走吧。
什么都是基础,但要知道运维并不简单。希望对你有用 其实很多人把事情都弄反了...
编程只是一项技能, centos和python只是一个工具...
首先是你想做什么事, 然后为了做这件事去学习需要的技能, 学习使用需要的工具...
而你是为了学习这个技能而要学习这个技能...
这样你没法持久的...
而且我见过的大部分公司的需求都从"你会什么"转化为:"你做过什么, 你为做这个克服了那些困难, 然后从中学到了什么" 运维如何通过学习python学会编程
https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md 不建议转行去做运维。
原因无他,年龄、基础以及现实的用人环境就已经限制死了,你不可能有比较好的发展。
难道你还想和刚毕业的、精力充沛的、热情澎湃的小年轻去正面的硬碰硬?
如果铁了心就是要去做,那么,我给你的建议是:
1. 别一上来就去学linux下面的命令什么的,你先看看能能否顺利的把dos给摆平,找找感觉再说。
2. 别想着样样去学,还是有侧重点比较好一些,资源很丰富、别人都会的,你大体看看就可以了,即便有差距但只要不明显,放着吧。但别人可能不花太多精力的,你倒是可以花些时间去看看,走差异化竞争之路么。
3. 多留意一下业务逻辑,别只是死背命令配参数什么的。
4. 身体!!身体!!身体!!这个是一切的根本!!!!
利益相关:
曾经的MCSE、CNE(认证novell工程师)、CCNA、MCDBA。
写过vb和foxpro程序(一年半不到)、做过硬件开发测试(6年)、做过网络运维(不止6年)......
曾经能很熟练的写dos6.x下面的批命令,但最近4年基本上不怎么接触纯技术的东西了,特别是12年到现在。 回答这个问题真有意义?我觉得更应该回答怎么复习高考。 我一直认为,运维有两条发展路线
1精通shell或者python等编程开发
2精通各种配置或者工具的运用
其中,1对环境的要求相对小些,2的话其实考验的是你之前摸过什么交换机,服务器,存储等等。你的做过的数据库规模最大是多少,一台服务器最大做到过多少并发等等等等。
当然很多人以为自己是12兼顾,实际上大多数是2 只要有心,什么时候都不晚。期待你成为高手。
事在人为,路在脚下。不要把自己当成30岁,就当20岁好了,就让小孩指挥着干活好了。记住,你不会永远这样的。
走弯路的人多的是,又没到盖棺定论的时候。向上面那个小哥学习,多看书多实践,总是有希望的。希望能坚持下来。