学Linux到底学什么?

(本文老生长谈,由于最近在B站录了个视频,因此顺便把文稿也发出来)linux

熟悉个人朋友应该知道,我是一名Linux工程师。那么我来问你们一个问题,提到Linux,大家第一时间想到的是这是一个怎样的岗位呢?我相信会有很大一部分的朋友会想到两个字:运维。面试

file

file

听到你们这样的回答,我真的是很无奈,但也是很是的理解,由于,曾经我对Linux的了解程度也是仅限在运维的层面上。可是,有这种概念的朋友实在是太多了,因此我有必要出来给你们科普一下Linux的几个主要的从业方向。编程

其实这个话题我写过了不少的文字版本,也在直播的时候给你们科普过了,这几天也以视频的形式再给你们科普一次,今天就顺便把文稿再发出来一下。后端

Linux其实也是一个大的方向,能够细分为不少小方向。因此不少公司的岗位职责上面写着要求精通Linux,这是很是不现实的。为了能让你们更直观了解Linux的从业方向,我画了下面这张图。安全

file

我精选了一些Linux高质量电子书和视频资源,公众号「良许Linux」后台回复「Linux」免费获取服务器

从这张图来看,从大的方向来划分,Linux从业者能够分为两个方向:运维、开发。固然除了这两个方向,还有一些其它方向,但可能比较小众,就暂时不讨论了。可是,单单从这两个方向来看,又细分出了不少更小的方向,所以咱们能够看到Linux从业方向的多样性。微信

下面咱们来详细介绍各个方向的工做内容和职责。并发

Linux运维工做内容和职责

咱们首先来看运维。运维又能够根据不一样的工做内容细分为不少不一样的方向,可是,主流的分法通常就是这张图的几个方向。框架

file

由于我自己不是作运维的,对运维相关的工做也不是太了解,因此这些工做的详细内容我也没办法深刻介绍。因此有时候在个人微信群里,不少小伙伴拿一些运维相关的问题来问我,我真的是答不上来,由于我自己不是作这块的。运维

file

虽然运维也分不少方向,但不少公司,特别是中小公司,基本是一我的干完上面这些全部工做。因此,从事运维工做的话也是须要掌握很多技术的。

不论是什么方向的运维,工做内容基本均可以归纳为两句话。第一句话是:保障业务长期稳定运行。就是说,公司的服务器,你不只要学会搭建,并且要保证上面的业务要作到长期稳定运行,任何出一点点差错,运维人员可能就要背这个锅了。因此,运维人员常常自嘲本身是“背锅侠”。

file

第二句话是:保障数据安全可靠。这句话比较好理解,如今数据泄漏太严重了,像以前facebook数据泄漏事件让facebook吃了不小的罚单。因此如何保证数据的安全也是运维人员一项很是重要的工做。

file

这几个方向当中,前3个属于传统运维,通常而言工资相对比较低。后两个是这两年的热门工做,工资相对高一些。其中云计算运维要涉及到容器Docker,K8S之类的,技术要求更高。而运维开发须要学习到JS,Python之类的编程语言,会涉及到一些开发的工做。

我精选了一些Linux高质量电子书和视频资源,公众号「良许Linux」后台回复「Linux」免费获取

Linux开发工做内容和职责

以上这些就是对运维方向的介绍,咱们再来看第二大方向:开发方向。开发方向又分为两个:应用层开发底层开发。首先来看应用开发。我如今作的工做就是Linux应用开发。那应用开发到底作些什么工做呢?

通常而言,应用开发又分细分为这三个:桌面应用开发、嵌入式应用开发、服务器运用开发。

file

不论是什么应用开发,简单而言,都是在Linux下开发各类各样的应用程序。那什么又是应用程序呢?我举个例子大家就明白了。就比如在Windows下,咱们有QQ、微信、以及后面要介绍的虚拟机等,这些都统称为应用程序。这就是应用程序的概念。

一样的,若是在Linux下也开发一些相似这种的应用程序,就是属于应用开发。在Windows下,咱们看到的那些应用程序大部分是带图形界面的,然而,在Linux下的应用程序,有些会带有界面,而至关一部分是不带界面的。

Linux下带界面的应用程序所使用的开发工具之一就是QT,因此有个岗位就叫做QT工程师,作的就是这个活。固然QT程序是可移植的,Linux下一样一套代码能够不用做任何修改就能够在Windows下编译运行。

嵌入式Linux应用开发又是什么?不少嵌入式设备,好比一些机器人玩具,一些智能家居设备,以及汽车的中控等,不少跑的是Linux系统。那对应的咱们也须要给这些设备开发一些应用程序,就是所谓的嵌入式Linux应用开发。这些应用程序一般是不带界面的,它们一般会在后台默默运行,完成相应的业务工做。固然也有一些嵌入式应用程序是带界面的,但其实不少也是直接跑QT的。

file

应用开发的第三个方向就是服务器后台开发。这个其实也是后端,不少服务器后端是用Java进行开发,但也有一些是用C++开发而后跑在Linux系统上,好比微信的后台就是使用C++开发的。

不论是使用什么开发语言,都须要考虑事件处理、高并发之类的需求,同时也要学会使用框架,要站在巨人的肩膀上,才走得更快更远。

我精选了一些Linux高质量电子书和视频资源,公众号「良许Linux」后台回复「Linux」免费获取

咱们再来看看Linux底层开发。其实,只要有接触到Linux,都会据说过内核、文件系统、uboot之类的名词,这些就是底层开发人员每天打交道的东西。

file

通常而言,内核、文件系统、uboot的移植不少芯片厂商都已经给你作好了,你只需学会维护便可。而对于内核裁剪、定制之类的工做,那就须要底层工程师来作了。

除此以外,你还要学会开发驱动,这部分的工做应该是比较多的。什么是驱动开发呢?你们知道,在Linux下一切皆文件,设备也是。因此应用工程师须要操做硬件,好比IO口,只需操做对应的设备文件便可。那这个设备文件怎么实现对IO口进行操做?这就是驱动开发的工做了。不少公司对驱动开发的需求比较大,因此诞生出一个专门的岗位叫驱动开发工程师。

而随着物联网的发展,如今不少设备,特别是智能家居类的设备,不少跑的是安卓系统。因此在嵌入式设备上移植一个安卓系统,也是底层开发工程师的一个工做内容。固然不是全部的底层开发工程师须要作这个工做,一切视公司的业务而定。但若是有时间,底层开发相关的工做都应该要学会。

以上就是Linux从业者的主要工做方向,介绍了这么多方向后,不少人开始晕乎了:我到底该从事哪一个方向?

对于运维和开发两个大方向,在薪资方面运维可能会比较低,并且运维的工做可能会比较琐碎,服务器一旦宕机就要第一个冲到前线,基本是7X24小时待命。并且,运维的天花板相对比较低,可能工做过三五年就到顶了。

而开发方向天花板就比较高一些了,并且薪资会相对比较高。对于应用和底层,应用方向的需求比较大,一般而言一个公司只需一个底层工程师便可,却须要养一大群的应用工程师。因此底层工程师就业面会比较小一些,一般比较好的去处就是那些芯片厂商。可是,相对而言底层工程师的工资会比应用工程师要高一些。

对于这些方向的介绍,只是目前市面上的一些实际情况。我没有建议你别作运维,也没有建议你去作应用开发,一切都是看我的兴趣与意愿。只要本身工做得开心,才是最关键的。

看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创做的最大动力!

  1. 关注原创公众号「良许Linux」,第一时间获取最新Linux干货!
  2. 公众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提高、简历等资料。
  3. 关注个人博客:lxlinux.net
相关文章
相关标签/搜索