为什么程序猿都应该学点linux命令?

简介: 学点linux命令的作用

大家好,我是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命令。

目录
相关文章
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
144 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
580 6
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
106 3
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
89 2
|
30天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
56 14
Linux 10 个“who”命令示例
|
10天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
32 8
|
19天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
106 20
|
20天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
50 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
37 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解