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

1 抛弃旧文化,迎接Linux命令新文化

Linux第一步,从Windows思惟,切换到Linux的“命令行+文件”模式 linux

在Linux中,作什么都有相应命令。通常就在bin或者sbin目录下,数量繁多。若是你事先不知道该用哪一个命令,很难经过枚举的方式找到。所以,在这样没有统一入口的状况下,就须要你对最基本的命令有所掌握。面试

一旦找到某个命令行,替代输入框的是各类各样的启动参数。正则表达式

这些参数怎么填,bash

  • 通常能够经过 -h 查看help,就能找到相应的配置项
  • 还能够经过man命令,查看文档

不管是什么命令行工具,最终的配置通常会落到一个文件上,只要找到了那个文件,文件中会有注释,也能够挨个儿看下去,基本就知道如何配置了。网络

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

2 经过系统调用或者glibc,掌握程序设计

命令行工具也是程序,只不过是别人写的程序。从用别人写的程序,到本身可以写程序,经过程序来操做Linux,这是第二个要攻克的困难。运维

用代码操做Linux,能够直接使用Linux系统调用,也可使用glibc的库。socket

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 命令行

相关文章
相关标签/搜索