IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 为什么程序猿都应该学点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命令。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:37:23  更:2021-12-06 15:37:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:47:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码