关于linux:为什么程序猿都应该学点linux命令

4次阅读

共计 2313 个字符,预计需要花费 6 分钟才能阅读完成。

大家好,我是 xindoo,明天和大家分享下一个我的观点——程序猿都应该学点 Linux 命令!这也是这两年我做后端开发的切身体会。意识我的人可能都晓得,我职业生涯比拟“非凡”,我毕业后先是干的运维,而后再转的 Java 开发。运维的经验苦不堪言,但积攒下来的运维相干教训却让我在转开发后受益匪浅,其中一项就是相熟大部分罕用的 Linux 命令。我曾经记不清多少次只用几行命令搞定他人半天都没搞定的事儿,而后拂袖离去,深藏功与名……

学好 linux 命令有啥用?

用 linux 命令日常提效的例子不可胜数,我说一些对我的显著作用。

疾速排查和定位问题

举个很简略的场景,早上去下班,刚坐下忽然收到服务器的报警,CPU 使用率 98%!登陆服务器 top 命令能够疾速定位到是哪个过程或者线程,sar 命令定位出问题产生工夫点,用 cat、grep 等命令疾速找到出问题时的日志……,分分钟解决问题。当高手泡杯茶的功夫解决问题时,老手还手足无措。

对于性能问题定位的命令,我之前翻译过篇文章 10 行命令 60 秒疾速定位性能瓶颈有趣味能够理解下。

数据荡涤和统计

数据荡涤和统计的办法很多,就比方用 excel 就能够实现很多类型的统计工作,但针对一些简略的统计,我本人写个 shell 脚本也能分分钟搞定,尤其是当须要被统计的数据是间接在服务器上时。比方这台机器上服务明天员工报过多少次 error。还有从日志中解析出某个接口明天所有申请的均匀、最大、最小耗时…… 像这种简略的数据荡涤和统计,我用 grep、awk 也能分分钟实现。

印象比拟深的一个经验,有次咱们在排查某个问题时,从两个零碎中导出了两份用户数据,想比照下每个用户在两个零碎里的数据差别,过后数据量还是挺多的。这种问题你会怎么办?从服务器上拉到本地,而后用 excel 的 vlookup 如同也行。当服务器上数据不容许下载呢?

这两份数据如果是数据库里的两个表,很显著就是将两个表间接 join 起来 (过后也有共事提出先将数据入库)。但在 linux 上用 awk 命令能够很容易实现这个性能,起初我也把具体方法写了一篇博客 awk 实现类 sql 的 join 操作。

辅助开发

辅助开发的事就不可胜数了,比方我用 wget 命令下载文件,用 curl 命令调试接口,用 dig、ping、nc 测试网络,用 wrk 压测接口……

装 X

这个就不多说了,在控制台各种敲,很 geek。

如何学习 Linux 命令

以上说了好多学好 linux 命令的长处,我置信你必定按捺不住想要学了,这里我分享一些我的学习办法。

多练习,但没必要太刻意练习

这个也算是陈词滥调了,如何货色想要纯熟,都须要大量的刻意练习,学习 linux 命令也不例外。但我这里给一个忠告,就是没必要一次性花太多的工夫去熟练掌握某个 linux 命令,尤其是有些比拟冷门的命令。很多命令的确很不罕用,如果你执着于一次性把握其所有参数,但长期不应用必定还是会遗记,到时候还是得从新学,投入产出比太低。

比方我之前学习过 tcpdump 的应用,过后大部分的参数根本都会用了,但 tcpdump 在日常工作中应用的太少了,而且也波及到大量网络的常识,我曾经很长时间没有用过了,曾经遗记怎么应用了。像这种工作中不太波及,也不罕用的命令,理解下就能够了,晓得它能干什么足以,等真正有需要的时候再去学。

先晓得有什么样的命令,再思考怎么去用

Linux 命令及其参数不能用浩如烟海来形容,但也算是不可胜数了,索性大部分的命令及参数是不会用到的,但也举荐大家略微记录下。就比方我明天早上遇到一凌晨 OOM 的问题,我想去追溯那段时间机器的负载状况,最简略的形式就是用 sar 命令,方便快捷,尽管我早已遗记具体的参数,但 man 或者搜寻下立马就晓得了。

所以我的倡议是先晓得有什么样的命令,而后再按需要去理解具体命令的应用形式。初学者应该从最简略最罕用的命令开始学起,比方下图中的命令。

网上有很多常用命令的参考指南,我之前也写过一篇博客我罕用的 Linux 命令

善用 man 和搜索引擎

在 linux 中,所有命令的应用形式都能够通过 man 命令来查问,包含具体的示意,各种参数的作用都有,都是命令的开发者提供了,必定保障准确无误,不过毛病是都是英文的,而且有些篇幅较长,对像我这种英文不太好的人不是很敌对。

另外,搜索引擎也是理解一个 linux 如何应用的好工具,网上有各种相干博客,有些入门网站(比方菜鸟教程)也有比拟体系化的教学内容,甚至有时候还能够找到你问题的解决方案。这种形式对老手比拟敌对,但这种形式的毛病是内容品质参差不齐,本人要做好信息的分别和筛选。

对于我不相熟的 linux 命令,我日常是两种办法都应用,比拟偏向于第二种,但在第二种无奈解决我问题时我会去看 man 珍藏,去寻找更业余的材料。

珍藏代码片段

我可能比拟偏实用主义,学 linux 命令大多数状况都是为了解决具体的问题,而我遇到的问题各式各样,应用的办法也不一样,可能时隔良久才会反复呈现,等呈现时之前用的解决方案早就遗记了。为防止这种问题,我开始用 snippetsLab 记录一些罕用的代码片段,将本人写的略微简单且不是很罕用的代码片段保存起来,加上形容和标签不便检索,等之后如果再用到能够疾速找回。

比方像上文中 awk 实现 join 的性能,略微有点简单,每次让我从新写也不是写不进去,但还是须要花点工夫调试的。这种与其每次都调,还不如记录下来下次贴过来间接应用。这两年我曾经在 snippetsLab 中记录了数百条代码片段了。

结语

说真的,尽管我不举荐做运维这个工作,尤其是在国内,但我十分倡议大家理解下运维相干的技能,尤其是各种罕用的 linux 命令,不论你是前端还是后端、不过是 java 还是 go 程序猿,都应该理解罕用的 linux 命令。

正文完
 0