相信很多朋友应该对良许有所了解了,良许是转行进入 IT 行业的,由机械行业强行转行到 Linux ,算是进入IT行业了。但是,我从事的工作是 Linux 应用开发方向,而不是运维方向!因此,当很多朋友拿一些运维相关的问题来问我,我答不上来的时候,还请多多理解,我也不是万能的!
我不是说运维方向怎么不好,只是说,这是两个不同的方向。我是做 Linux应用开发方向 的,但不代表关于 Linux 的什么都懂。就好比你们天天用 Windows 电脑,但你们会在 Window 下开发个应用程序就会不那么容易。
由于我自己也是转行学习,所以我的底子相对计算机专业同学来讲肯定要薄弱。但是,我也是在不停的学习专业技能,丰富自己的知识,提高自己的技能。下面我结合自己的自学经历,谈一谈自己对于Linux 学习的一些经验与看法。
关于 Linux 应用开发方面的学习经验我已经毫无保留的把我的学习经验全部分享到了我的文章《Linux应用开发自学之路》,点击下文即可查看:
Linux 常用命令怎么学?
关于 Linux 的常用命令怎么学习,我想谈一谈自己的看法,大家听听就好,可能不一定对每一个人都有用。不管是做 Linux 哪个方向的,Linux 的一些基本操作、常用命令是肯定需要过关的。对于这些基本操作,百度上「Linux 常用命令」会出来一堆的资料。这些资料里,挑一个最顺眼的看就可以了。
虽然在圈内有很多人极力推荐 《鸟哥的 Linux 私房菜》 这本书,但说实话,这本书确实写的非常棒,我并不是很推崇它。为什么我不是很推崇这本书呢?因为对于运维人员来讲,这是一本必备书,但如果仅仅是学习 Linux 的基本操作的话,完全没必要这本书。为啥呢?因为这本书面面俱到,对于初学者来讲,肯定是量太大了,初学者看到这么全面这么信息量大的书籍,会第一时间感觉到无从下手,有很强烈的盲从感。
众所周知,Linux 的命令有千千万万,内置命令啊,外置命令啊,还有很多需要下载的不常用的命令。但常用的命令可能也就那么二三十个,你可以按照实际操作需要对常用命令进行分类,比如:系统类,文件操作类,网络类等等,这样会比较方便记忆。所以,先把那些命令全部学完之后,再去拓展更高级的命令。有些命令你可能一辈子都用不到,所以千万不要要求自己全部掌握 Linux 所有命令。
Linux 应用开发是什么?
在我转行成功之后,很多朋友得知我在做 Linux 应用开发,并且做得还不错,就一直在追问我,Linux 应用开发到底要做些什么?我通常会拿 Windows 应用程序来解释:
QQ 是 Windows下的一个应用程序是吧?Windows 是操作系统,而 QQ 就是跑在 Windows 操作系统上的一个应用程序。而 Linux 应用开发就是在 Linux 操作系统上开发一个类似于 QQ 这样的应用程序。
所以我个人对 Linux 应用开发的总结是:Linux 应用开发更偏向的是 开发 这两个字,而运维更偏向的是 Linux 系统的运行状态维护。
字面意义不一样,它们背后的本质也不一样,所做的事情当然不一样。
对于 Linux 应用开发的学习请查看下文《Linux应用开发自学之路》:
Linux 底层开发学习方法
说完 Linux 应用开发,其实Linux 还有一个重要的方向是底层开发。很多公司,特别是小公司,因为成本原因,人手不够啊,经常是底层开发人员由应用开发人员一并兼任,所以,底层开发也是嵌入式开发人员需要掌握的技能之一。
对于底层开发,一般涉及到四个方面:bootloader 引导加载、内核、驱动程序、根文件系统。学好这四个方面,你基本上就是一个合格的底层开发工程师。
bootloader
bootloader 简单来说其实就是一个相对而言较为复杂的裸板程序。虽然复杂了一些,但还是很多人把它看懂了,更有甚者,很多高手甚至自己动手写了另外一个功能相同的 bootloader 。要知道,这可是非常有难度的,要完全理解 bootloader 的底层原理才能做到。
bootloader 基本上都会涉及到比较底层的操作,相当于直接面对硬件层面,因此开发人员首先需要有一定的硬件知识。对这一方面如果想要学习的话,可以参考的书籍是:《ARM体系架构与编程》,《嵌入式Linux应用开发完全手册》,除此之外,可以参考韦东山的1期视频。
内核
内核是一堆非常庞大的代码的集合,很多新手谈“核”色变,想要把它看完、读懂、吃透要花费很多的时间。当然,对于新手,千万不要要求自己去看懂内核,除非你是学生。对于内核,可以参考两本书:《Linux内核完全注释》,《Linux内核源代码情景分析》。
驱动程序
同样的,驱动程序这一底层开发环节也是和 bootloader 一样,需要开发人员直接面对硬件层面,因此开发人员如果没有对硬件知识有足够的了解是很难进行下去的。要想写好驱动,一定要学会看原理图,读懂芯片手册。没有别的办法,多练吧。对于驱动,可以参考的书有:《Linux设备驱动开发》,《Linux设备驱动开发详解》,《嵌入式Linux应用开发完全手册》,除此之外,可以参考韦东山的2期视频。
根文件系统
根文件系统首先是内核启动时所加载的第一个文件系统,所有的内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
Tips:
对于底层开发的学习,跟任何学习知识一样,没有任何捷径可走,就是要做到多看、多理解、多练,熟能生巧罢了。有时可能会比较繁琐,比如有时候出现写了很多代码,改了很多参数,但是却一直没达到预期效果。遇到这种情况,一定要沉住气,静下心来,一步步排查,找到问题的症结点。