Linux再学习(一)-学习路线规划x

发布时间:2020-08-26 来源: 主持词 点击:

 Linux 再学习(一)- 学习路线规划 1 抛弃旧文化,迎接 Linux 命令新文化 Linux 第一步,从 Windows 思维,切换到 Linux 的“ 命令行+ 文件”模式 模式 在 Linux 中,做什么都有相应命令。一般就在 bin 或者 sbin 目录下,数量繁多。如果你事先不知道该用哪个命令,很难通过枚举的方式找到。因此,在这样没有统一入口的情况下,就需要你对最基本的命令有所掌握。

 一旦找到某个命令行,替代输入框的是各种各样的启动参数。

 这些参数怎么填, 一般可以通过 -h 查看 help,就能找到相应的配置项 • 还可以通过 man 命令,查看文档 无论是什么命令行工具,最终的配置一般会落到一个文件上,只要找到了那个文件,文件中会有注释,也可以挨个儿看下去,基本就知道如何配置了。

 攻克了第一个困难了。这个时候,你能看到一些很美丽的风景,例如一些很有技巧的命令 sed 和 awk、很神奇的正则表达式、灵活的管道和 grep、强大的 bash。你可以自动化地做一些事情了,例如处理一些数据,会比你使用 Excel 要又快又准,关键是不用框框点点,在后台就能完成一系列操作。在处理数据的同时,你还可以干别的事情,半夜处理数据,第二天早上发个邮件报告,这都是 Excel 很难做到的事情。

 2 通过系统调用或者 glibc ,掌握程序设计 命令行工具也是程序,只不过是别人写的程序。从用别人写的程序,到自己能够写程序,通过程序来操作 Linux,这是第二个要攻克的困难。

 用代码操作 Linux,可以直接使用 Linux 系统调用,也可以使用 glibc 的库。

 Linux 的系统调用非常多,而且每个函数都非常复杂,传入的参数、返回值、调用的方式等等都有多讲究。

 这里面需要掌握很多 Linux 操作系统的原理,否则无法理解为什么应该这样调用。

 刚开始学 Linux 程序设计的时候,你会发现它比命令行复杂得多。

 因为你的角色再次变化。

 如果说使用命令行的人是吃馒头的,那写代码操作命令行的人就是做馒头的。看着简简单单的一个馒头,可能要经过 N 个工序才能蒸出来。同样,你会发现,你平时用的一个简单的命令行,却需要N 个系统调用组合才能完成。其中每个系统调用都要进行深入地学习、读文档、做实验。

 经过一段时间的学习,你攻克了这些东西。这时候,你已经很接近操作系统的原理了,你能看到另一番风景了。

 大学里学的那些理论,你再回去看,现在就会开始有感觉了。

 树,调用了 fork 进程同步机制,调用信号量 • 网络应用层和传输层的分界线,调用 socket 都明白了!

 3 再三研究 Linux 内核 当你已经会使用代码操作 Linux 时,你肯定很希望揭开这层面纱,看看系统调用背 系统调用背后到底做了什么 后到底做了什么。

 进一步了解内核的原理,有助于你更好地使用命令行和进行程序设计,能让你的面试及开发水平更上一层楼,但是不建议直接看源码,因为 Linux 代码量太大,很容易迷失。

 最好的办法是,先下 了解一下 Linux 内核机制,知道基本的原理和流程 内核机制,知道基本的原理和流程。

 不过,Linux 内核机制也非常复杂,而且其中相互关联。

 比如说,进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行起来进程。这些知识点要反复对照,才能理清。

 但是一旦攻克!你会发现 Linux 这个复杂的系统开始透明起来。

 无论你是运维,还是开发,你都能大概知道后发生的事情,并在出现异常的情况时,比较准确地定位到问题所在。

 Linux 内核机制是我们重点学习部分,基于最新 4.x 的内核。

 辅助学习,推荐《深入理解 LINUX 内核》。

 这本书言简意赅地讲述了主要的内核机制。看完这本书,你会对 Linux 内核有总体的了解。不过这本书的内核版本有点老,不过对于了解原理来讲,没有任何问题。

 4 阅读 Linux 内核代码,聚焦核心逻辑场景 在看内核原理的书的时候经常遇到这种问题,有的地方实在是难以理解,或者不同的书说的不一样,这时候该怎么办呢?其实很好办,Linux 是开源的呀,我们可以看代码呀,代码是精准的。哪里有问题,找到那段代码看一看,很多问题就有方法了。

 另外,当你在工作中需要重点研究某方面技术的时候,如果涉及内核,这个时候仅仅了解原理已经不够了,你需要看这部分的代码。

 但是开源软件代码纷繁复杂,一开始看肯定晕,找不着北。这里有一个诀窍,就是一开始阅读代码不要纠结一城一池的得失,不要每一行都一定要搞清楚它是干嘛的,而要聚焦于核心逻辑和使用场景。

 一旦爬上这个坡,对于操作系统的原理,你应该就掌握得比较清楚了。就像蒸馒头的人已经将面粉加工流程烂熟于心。这个时候,你就可以有针对性地去做课题,把所学和你现在做的东西结合起来重点突破。

 虚拟化的,就重点看 KVM • 研究网络的,就重点看内核协议栈 推荐《LINUX 内核源代码情景分析》 这本书最大的优点是结合场景进行分析,看得见、摸得着,非常直观,唯一的缺点还是内核版本比较老。

 5 实验定制化 Linux 组件 从只看内核代码,到上手修改内核代码,这又是一个很大的坎。

 因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。

 例如,你可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。

 6 面向实战开发 如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。

 7 总结

 参考 Linux 命令行 趣谈 Linux 操作系统

相关热词搜索:学习 路线 规划

版权所有 蒲公英文摘 www.zhaoqt.net