一个运维人员的编程思维3
重复的事情自动化
主旨就是尽量交给机器来完成
这个很明确,人生苦短,如果一件事,被反复要求处理,正好这件事可以交给机器完成,自然可以给自己省下大笔光阴
Tip: 有那么一句话 人生苦短,我用Python ,虽然明知本意是在给 Python 打广告,但仍然很有道理呀
人不仅速度慢,还容易出错,也容易有情绪(得克服自己的怠惰,坚持每天感受早晨四点半的洛杉矶才能成就科比,但是机器是可以不睡觉的,被用到报废都不会有怨言),绝大部分逻辑处理,人的速度是根本没法和机器匹敌的,只要我们可以将它序列化,代码化,就可以自动化
一个合格的运维工程师不会反复人肉生成报表,懒惰的优秀品质会驱使他使用脚本来完成
一个合格的运维工程师不会深夜起床趁业务低点进行数据备份,懒惰的优秀品质会驱使他使用定时脚本来完成
一个合格的运维工程师不会盯着各种日志和性能曲线来关注系统健康状态,懒惰的优秀品质会驱使他使用脚本来触发通知
还有很多我觉得一个合格的运维工程师应该尽量使用脚本而不是手动来完成的,其实这些看起来再正常不过了,但是如果这方面还没有充分涉及到,说明这个运维还有很大的提升空间
想懒惰,首先得付出一点点勤奋来将自己打磨得具备懒惰的能力,而这种能力就是编码能力
Tip: 相较于手动,使用脚本对能力有更高的要求,因为交互式比较直观,使用脚本要求对整个过程和可能产生的情况了然于胸,对处理流程理解更深刻,而人往往喜欢徘徊在自己的能力舒适区,惯性与惰性驱使人拒绝成长
各种语言都可以被用来写脚本,但运维用得较多的主要是 shell、perl、python、ruby (也有用php和js的,但相对小众)
shell准确来说是一个类别,有各种版本,我个人比较喜欢用bash
查看本地shell和当前shell
[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 是一门懒人都会喜欢的语言,因为真的很方便,个人感觉,它的每一个对象都有十八般武艺,信手拈来就能用,我们可以花更多时间在思考要什么,而不是如何获取
其它语言也有应用场景,总体来说对于一个运维人员,实现一个功能,哪种方便就用哪个,因为它们都只是实现自动化的一种工具,对于某一种工具太过偏执而浪费了时间就得不偿失了
我并不是一个语言专家,也并不打算成为一个语言专家,所以也不会去分享各种语言之间相互区别的独道特性,在这里分享的只是我的思想,以上语言我都有接触,总体思路就是:完成特定任务哪种语言更容易实现就用哪个,有时甚至会穿插使用,我不是一个有 纯种语言代码洁癖 的
相关文章
- 切换到 Git 的 8 个理由
- 如何选择Linux服务器操作系统
- 五款应用让Linux桌面变成工作好帮手
- 入门:查看Linux系统的平均负载
- 用WINE在Linux/Mac上运行Windows程序
- 阿里云容器服务支持Swarm Mode
- 触类旁通,从400错误看Nginx常见故障与修复
- 5 个获取 Linux 主机信息的命令
- 如何在 Linux 下格式化 USB 设备
- 谷歌与Pivotal联手,真的能改变企业级云计算格局吗?
- 高考估分太头疼?大数据算法或成预测成绩新方式
- 告警:IO利用率飚至60%+,请及时排查优化!
- 八大 Linux/Unix 服务器内存转储工具
- 当红架构Cloud Native,怎么搭建才能成为上云助攻手?
- 原生的 exFAT 支持已经来到 Linux 平台
- 从源码探究MySQL5.7高吞吐事务量的背后操手
- 新电脑+旧系统:教你在不同机器间转移Linux
- 网易云基于Kubernetes+Docker的容器服务研发实践
- 金融圈食物链大揭秘,五分钟变身金融圈内人!
- 我安身立命的编程指导