首页 > > > 到什么程度才叫精通 Linux?
一般说自己精通某项技术的,要么是应届生,要么是刚工作没多久的,再者就是半桶水的人。
Linux 博大精深,我敢肯定,Linus 本人都不敢说自己精通 Linux 。Linux 可以应用的场景太多了,小到嵌入式设备,大到大型服务器,无所不在。对于 Linux 从来者而言,每个人都只是做其中的一个小方向而已。
那我们来看看,Linux 有哪些方向。
我曾经在我的公众号 良许Linux 里写过一篇文章,介绍 Linux 从业者的三大主要方向。本文也同步发表在我的知乎专栏了。专栏主要分享 Linux 基础,Linux进阶,Linux 编程,Linux 神器,Linux 趣应用,树莓派等 Linux 方向干货。
良许带你学习Linux
自我介绍一下。我是良许,本科及硕士所学专业却是机械,毕业后从零开始自学转行 IT,1 年后被世界 500 强外企所录用,目前是 Linux 工程师。业余时间运营公众号 良许Linux 及同名知乎号,这两个都是我的主要阵地,但以公众号更为重,欢迎关注交流!
对于零基础转行 IT ,以及自学 Linux ,我有自己的见解与看法,由于知乎的限制,欢迎通过我的公众号 良许Linux 与我取得联系,我一定会知无不答,言无不尽!
在正式回答问题之前,先提前透露一下,文末将分享更多 Linux 干货,别忘了拉到最后哦!
文末更多干货!!
文末更多干货!!
文末更多干货!!
下面是正文回答:
经常有人在我的交流群问我:良许,请问 Linux 要怎么学习啊?Linux 要怎么入门啊?这个问题,其实就像是:良许,请问开发一个网站要多少钱?
但是,我很能理解,因为我曾经也是这样的小白,对于 Linux 一无所知。Linux 只是一个操作系统,大家可以在上面工作、学习、开发,对于 Linux 的学习,其实你要先确定好方向,再具体说怎么学习怎么入门。
因为有太多人问了,所以我就写篇文章来统一答复一下。不过,关注我的很太多大佬了,而我毕竟是个转行的,经验方面肯定比不上正规军,所以如果我说的有不对的地方,欢迎多多批评指正!
对于 Linux 从业都而言,主要有三个方向:运维、开发、底层。下面我就对这三个方向进行展开。
这应该是很多 Linux 从业者给大家的形象吧,很多人也把我当作运维工程师,问我一堆运维方向的问题,可是我不是这个方向的,我真不会啊!

那运维方向主要做一些什么工作?
首先,是服务器维护
保证服务器正常运行不宕机,这是最最基本的要求。服务器一旦宕机,公司找的第一个一般是运维工程师,所以,很多运维工程师都自嘲是「背锅侠」。
然后,需要给开发人员提供一个可靠的服务器运作环境和技术支持
我所知道的很多公司的开发环境是由开发人员自己搭建好的,但是,也有些公司将这部分工作内容交给运维工程师,而开发人员就专注于写代码。
当然,还包括对各种服务的配置,如FTP,DNS,APACHE,IPTABLE,ORACLE,MYSQL等。
除此之外,还要对服务器状态进行监控,如CPU内存占用,进程僵死崩溃,磁盘空间,异常登陆等。当然,还要负责系统进行升级,备份等等工作。
那些之前问我问题的小伙伴,你们看看,是不是包含在这里?没关系,其实我的内心还是很(xiang)淡(ma)定(ren)的。
那么,运维工程师需要学一些什么?
运维工程师需要懂很多的命令,然后就是上面提到的开发环境的搭建,各种服务的配置,以及日常的维护之类,都需要会。很多的操作其实通过脚本就能很方便完成,所以运维工程师很多还需要懂 Shell 及 Python。推荐的入门书籍:鸟哥 Linux 私房菜。
这就是我的老本行啦~啊,不对,我的老本行是机械……
应用开发及底层开发方向就要写比较多的代码了,相对而言运维工程师就不需要写很多代码。
Linux 应用开发工程师主要做一些什么工作?
简单而言,Linux 应用开发工程师主要在Linux 环境下开发各种应用程序,就如同你们在 Windows 下开发的应用程序一样(比如QQ,PC微信等)。这些应用程序有些带有界面,也有很多是不带界面的。带界面的很多是由 QT 开发,当然也有其他的开发工具。
Linux 应用开发工程师需求量相对比较多,行业分布也比较广。方向主要有两个,一个是服务器方向,另一个是嵌入式方向。
几乎所有的科技公司都有服务器,所以在很多行业都有 Linux 应用工程师的身影。而嵌入式方向,也就是我现在的方向,就是在嵌入式平台上开发应用程序,其实道理都是一样的。
那么 Linux 应用开发工程师需要掌握什么技能?
首先肯定要熟悉 Linux 平台的 API ,包括 IO 操作,进程间通讯, Linux 环境,网络通讯,等等,推荐看 APUE 这本神书。当然还需要懂脚本语言,包括 Shell, Python ,都需要懂。还有数据库的操作,比如 MySQL,Sqlite,至少要懂一个。
对于编程语言的话,大多数情况下是使用 C/C++ 。如果你需要做界面开发,可能还需要懂 QT 。
除此之外,你还需要懂一些行业规范,这个是应用工程师的必备技能。
底层开发工程师相对而言需求就会少一些,一个公司通常会养一堆的应用开发工程师,但底层开发工程师可能就配备了一两个。为什么?因为现在很多底层移植、适配的工作都由芯片厂商都帮你做好了,你们很多情况下只需做维护就好了。
所以,底层开发工程师的一个很好去处就是芯片厂商,如果对这块有兴趣的朋友,芯片厂商是一个很好的去处。
当然底层开发工程师不仅仅做维护了,也是会根据公司的业务需求做一些定制。除此之外,还会做驱动开发的工作。
那底层开发工程师需要掌握什么技能?
虽然说移植之类的工作现在很多都由芯片厂商完成,但uboot,文件系统,内核这类的移植技能肯定要掌握。然后,驱动开发也肯定要会,因为这部分工作的份量还是不少的。
而在做底层开发工作时,还有一个重要的技能,就是芯片手册的查看。如果你不会查看芯片手册,那后面的移植啊,驱动开发之类的工作都无从谈起。
有些公司可能还会对内核进行裁剪定制,那么,就需要对内核源码比较了解了,这部分要求就相对比较高了。
所以,Linux 从业都三个主要方向的工作内容都不一样,所需的技能也不同。一般我们是选择其中一个方向,进行深入研究,有精力时再去学习其它方向,拓宽技术广度。
所以说,想要精通 Linux ,没那么容易。
前面提到过,我是半路出家,由机械自学转行 IT 。我牺牲了所有的周末、晚上、节假日,以及陪女朋友逛街的时间,终于成功转行,并被世界500强外企所录用。对于我转行的经历,可以查看下面这篇文章,如果你有转行方面的困惑,也欢迎与我交流!
我的转行经历:Linux应用开发自学之路转行的过程是痛苦的,但收获是可喜的。为了更好的学习,我疯狂收集资料,涵盖了 IT 领域各个方面,比如:Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大数据,单片机,算法,小程序,易语言,安卓,ios,PPT,软件教程,前端,软件测试,简历,毕业设计,公开课,等等。有需要资料的朋友,欢迎在 我的公众号:良许Linux 后台回复「知乎」,即可获取专属资料。

不管在公众号还是知乎,我主要分享以下 Linux 干货(限于篇幅,各专题只列出少数几篇文章):
主要包括 Linux 环境搭建、常用工具、一些基础命令、性能优化等等。
Linux环境搭建 | 手把手教你安装Linux虚拟机
Linux环境搭建 | VMware下共享文件夹的实现
Linux常用工具 | 使用notepad++远程编辑虚拟机文档 Linux常用工具 | 全能终端神器——MobaXterm
Linux常用命令 | 10个非常有趣的Linux命令
Linux常用命令 | Linux下find与exec的联手干大事
Linux性能优化 | Linux性能检测常用的10个基本命令
主要包括 Linux 命令高级用法,常用命令行工具,一些技巧等等。
Linux命令高级用法 | Linux下 ls 命令的高级用法8例
Linux命令高级用法 | 5分钟 more 命令从入门到精通
Linux命令行工具 | 程序员轻松绘图神器
Linux命令行工具 | Linux里隐藏的计算器,你知道它的奥秘吗?
Linux常用技巧 | 让你提高效率的Linux技巧
Linux常用技巧 | Linux下日志文件过大解决方案
当然,直接看文字太乏味了,而视频教程肯定效果会更好。于是我也开始录一些视频,定期发布到公众号及各大视频网站。下面先放两个:
我被Linux嘲笑了https://
SSH到服务器指定目录https://先大概分享这些,后续再整理 Linux 编程,Linux 神器,Linux 趣应用,树莓派等文章。
---------------
❤️ 看完三件事: 如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙:

原文作者:;如有侵权,请联系管理员删除。