当前位置: 首页 > Linux

为什么程序员要学习一些linux命令?

时间:2023-04-07 01:08:53 Linux

大家好,我是xindoo,今天我想跟大家分享下我的观点——程序员应该学习一些Linux命令!这也是我这两年做后端开发的亲身经历。了解我的人可能都知道,我的职业相当“特殊”。毕业后先做运维,后转Java开发。运维经历惨不忍睹,但是转做开发后积累的运维相关经验让我受益匪浅。其中之一是熟悉大多数常用的Linux命令。记不清有多少次只用几行命令就解决了别人很久没做的事情,然后就一走了之,把自己的成就和名气都藏起来了……学linux命令有什么用出色地?使用linux命令提高日常效率的例子数不胜数,我就说几个对我有明显效果的吧。快速排查定位问题我们举一个很简单的场景。早上上班,刚坐下,突然收到服务器的告警。CPU使用率为98%!登录服务器top命令快速定位进程或线程,sar命令定位问题发生时间,使用cat、grep等命令快速查找问题发生时日志...并解决问题在几分钟内。当高手泡一杯茶解决问题时,新手还是一头雾水。关于定位性能问题的命令,之前翻译过一篇文章。10行命令耗时60秒,快速定位性能瓶颈。如果你有兴趣,你可以了解更多。数据清洗和统计数据清洗和统计的方法有很多种。比如用excel可以完成很多种类的统计工作,但是对于一些简单的统计,我可以自己写一个shell脚本,分分钟搞定,尤其是需要统计的时??候。当数据直接在服务器上时。例如,员工今天在这台机器上报告了多少错误。还有就是从日志中解析出今天某个接口的所有请求的平均耗时、最大耗时、最小耗时……像这样简单的数据清洗和统计用grep和awk分分钟就可以完成。一次非常令人印象深刻的经历。有一次我们在排查某个问题时,从两个系统中导出了两组用户数据。我们想比较两个系统中每个用户的数据差异。当时数据量还是挺大的。的。遇到这种问题你会怎么办?从服务器拉到本地,然后用excel的vlookup好像可以。服务器上的数据不允许下载怎么办?如果两组数据是数据库中的两张表,很明显这两个表是直接join的(当时也有同事提出先把数据存入数据库)。但是在linux上使用awk命令可以轻松实现这个功能。后来我也写了一篇博客,介绍了awk实现类sqljoin操作的具体方法。辅助开发的东西数不胜数。比如我用wget命令下载文件,用curl命令调试界面,用dig、ping、nc测试网络,wrk测试界面……安装X就不多说了.各种敲控制台,很geek。如何学习Linux命令上面说了很多学好Linux命令的好处,相信你会忍不住想要学习,这里我就分享一下我的一些学习方法。多练,但不必太刻意练。这是陈词滥调。如果你想精通任何事情,你需要大量的刻意练习。学习linux命令也不例外。但是我想在这里提一个建议,就是没有必要一次花太多时间去掌握某个linux命令,尤其是一些比较冷门的命令。很多命令真的不常用。如果你执着于一次掌握它的所有参数,那么长时间不用肯定会忘记。还是得再学一遍,投入产出比太低了。比如我之前学过tcpdump的使用。当时大部分参数基本都会用到,但是tcpdump在日常工作中用的太少了,而且涉及到很多网络知识。我已经很久没有使用它了。已经忘记怎么用了。对于这类工作参与度不高、不常用的命令,了解一下就够了。知道它能做什么就足够了,然后在真正需要的时候学习它。首先知道有哪些命令,然后再考虑如何使用Linux命令及其参数。不能用浩如烟海来形容,但却是数不胜数。大部分命令和参数不会用到,但也建议大家稍微记录一下。比如我今天凌晨遇到了OOM的问题。我想跟踪那段时间机器的负载。最简单的方法是使用sar命令,方便快捷。虽然具体的参数忘记了,但是man或者search一下就知道了。所以我的建议是先知道有哪些命令,然后再根据自己的需要学习如何使用具体的命令。初学者应该从最简单最常用的命令入手,比如下图中的命令。网上有很多常用命令的参考指南。我之前也写过一篇博客。我常用的Linux命令很好地利用了man和搜索引擎。在linux中,所有命令的使用都可以通过man命令查询,包括详细的使用说明。各种参数都有作用,都是由命令的开发者提供的,所以保证准确,但缺点是全是英文,有的比较长,对人不是很友好像我这样英语不是很好的人。.此外,搜索引擎也是了解如何使用linux的好工具。网上有各种相关的博客,一些入门网站(比如菜鸟教程)也有比较系统的教学内容,有时甚至可以找到解决你问题的办法。这种方式对新手比较友好,但是这种方式的缺点是内容质量参差不齐,还得做好信息的识别筛选工作。对于我不熟悉的linux命令,我日常都用这两种方法,我更喜欢第二种方法,但是当第二种方法不能解决我的问题时,我会去man集合中寻找更专业的资料。最喜欢的代码片段我可能更务实。linux命令的学习大部分是为了解决具体的问题,遇到的问题五花八门,使用的方法也各不相同。时间长了可能会重复出现,之前出现的时候用的方案早就忘记了。为了避免这种问题,我开始使用snippetsLab来记录一些常用的代码片段,把自己写的稍微复杂的、不太常用的代码片段保存起来,加上描述和标签,方便检索,如果有的话可以快速找到稍后再使用它们。后退。比如上面awk实现的join函数就有点复杂。每次让我重写也不是不可以,但是调试还是需要一些时间。与其每次都调,还不如记录下来,下次直接用。在过去的两年里,我在snippetsLab中记录了数百个代码片段。结语说实话,虽然我不建议做运维工作,尤其是在中国,但是我强烈建议大家了解运维相关的技能,尤其是各种常用的linux命令,无论你是前端还是后端——完了,不过不管你是java还是go程序员,都应该知道linux常用的命令。