重复的事情自动化
主旨就是尽量交给机器来完成
这个很明确,人生苦短,如果一件事,被反复要求处理,正好这件事可以交给机器完成,自然可以给自己省下大笔光阴
Tip: 有那么一句话 人生苦短,我用Python ,虽然明知本意是在给 Python 打广告,但仍然很有道理呀
人不仅速度慢,还容易出错,也容易有情绪(得克服自己的怠惰,坚持每天感受早晨四点半的洛杉矶才能成就科比,但是机器是可以不睡觉的,被用到报废都不会有怨言),绝大部分逻辑处理,人的速度是根本没法和机器匹敌的,只要我们可以将它序列化,代码化,就可以自动化
一个合格的运维工程师不会反复人肉生成报表,懒惰的优秀品质会驱使他使用脚本来完成
一个合格的运维工程师不会深夜起床趁业务低点进行数据备份,懒惰的优秀品质会驱使他使用定时脚本来完成
一个合格的运维工程师不会盯着各种日志和性能曲线来关注系统健康状态,懒惰的优秀品质会驱使他使用脚本来触发通知
还有很多我觉得一个合格的运维工程师应该尽量使用脚本而不是手动来完成的,其实这些看起来再正常不过了,但是如果这方面还没有充分涉及到,说明这个运维还有很大的提升空间
想懒惰,首先得付出一点点勤奋来将自己打磨得具备懒惰的能力,而这种能力就是编码能力
Tip: 相较于手动,使用脚本对能力有更高的要求,因为交互式比较直观,使用脚本要求对整个过程和可能产生的情况了然于胸,对处理流程理解更深刻,而人往往喜欢徘徊在自己的能力舒适区,惯性与惰性驱使人拒绝成长
各种语言都可以被用来写脚本,但运维用得较多的主要是 shell、perl、python、ruby (也有用php和js的,但相对小众)
shell准确来说是一个类别,有各种版本,我个人比较喜欢用bash
查看本地shell和当前shell
代码语言:javascript复制[root@h102 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/usr/bin/tmux
[root@h102 ~]# echo $SHELL
/bin/bash
[root@h102 ~]#
shell 结合 crontab ,sed,awk,grep,正则还有管道就已经可以应付绝大部分的日常处理
但是要进行更灵活和复杂的逻辑处理 shell 就有些力不从心了(不是不能完成,只是会很啰嗦)
perl 有强大的文本处理能力,即便是一行 perl 脚本也可以完成相当复杂的处理,一般我会把一些常用到的写出来后,收集保存起来,以便下次再用
python 不得不说是目前最为主流的运维脚本语言,各种库都非常丰富,拿来就能用,省力又省心
ruby 是一门懒人都会喜欢的语言,因为真的很方便,个人感觉,它的每一个对象都有十八般武艺,信手拈来就能用,我们可以花更多时间在思考要什么,而不是如何获取
其它语言也有应用场景,总体来说对于一个运维人员,实现一个功能,哪种方便就用哪个,因为它们都只是实现自动化的一种工具,对于某一种工具太过偏执而浪费了时间就得不偿失了
我并不是一个语言专家,也并不打算成为一个语言专家,所以也不会去分享各种语言之间相互区别的独道特性,在这里分享的只是我的思想,以上语言我都有接触,总体思路就是:完成特定任务哪种语言更容易实现就用哪个,有时甚至会穿插使用,我不是一个有 纯种语言代码洁癖 的