Route_of_Linux
爬过六个陡坡,对Linux了如指掌
本文是极客时间App中刘超老师趣谈Linux操作系统的学习路径课程的学习笔记
抛弃旧思维习惯,熟练使用命令行
要从Windows的思维习惯,切换成Linux的命令行+文件的使用模式。
Linux中,无论做什么事情,都会有相应的命令工具,用户需要对最基本的命令有所掌握;在知道命令后,可以通过help或者man命令进行配置项和文档的查看。大部分的命令的行为模式都很像,经过练习熟练掌握后,几乎不需要搜索就可以完成大部分的操作。
爬上第一个坡后,就会看到:很有技巧的命令sed和awk、神奇的正则表达式、灵活的管道和强大的bash,也可以自动化的去处理一些事情。
推荐书籍:《鸟哥的Linux私房菜》和《Linux系统管理技术手册》
通过系统调用或者glibc,学会自己进行程序设计
命令行是别人写的程序,自己也可以写程序,即用自己的代码操作Linux,可以使用Linux系统调用,也可以使用glibc库。Linux中的系统调用非常多,每个函数都非常复杂,传入的参数、返回值、调用的方式等等都有讲究。你会发现,平时你用的一个简单的命令行程序,需要N个系统调用组合才能完成。需要掌握很多Linux操作系统的原理,否则无法理解为什么应该这样调用。
爬上第二个坡后,会发现:你曾经学习的理论是有用的。使用过fork,会理解进程树;使用了信号量,会了解进程同步机制;使用了socket,会了解网络应用层和传输层的分界线。
推荐书籍:《UNIX环境高级编程》
了解Linux内核机制,反复研习重点突破
进一步了解内核的原理,有助于你更好地使用命令行和进行程序设计,让你的运维和开发水平上升一个层次。需要先了解一下Linux的内核机制,知道基本的原理和流程即可。一旦学起来你会发现,Linux内核机制也非常复杂,而且其中相互关联。如:进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行进程。需要把知识点反复对照,才能理清。
爬上第三个坡后,会发现:Linux这个复杂的系统也开始透明起来,可以知道背后发生的事情,可以在出现异常情况时,大概知道背后发生的事情,并在出现异常情况时,比较准确的定位到问题所在。
推荐书籍:《深入理解LINUX内核》
阅读Linux内核代码,聚焦核心逻辑和场景
阅读代码,代码是精准的。在工作中需要重点研究某方面技术的时候,如果涉及内核,这个时候了解原理已经不够了,需要查看代码。开始阅读代码时,不能在乎一城一池的的是,要聚焦于核心逻辑和使用场景。
爬上第四个坡以后,会对:操作系统的原理烂熟于心,可以有能力把现在正在做的东西和Linux内核结合起来,会有重点性突破。
推荐书籍:《Linux内核源代码情景分析》
实验定制化Linux组件,没人能阻当你成为内核开发工程师
Linux有源代码,可以参考现有的实现进行自己模块的定制。可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。这里难度较大,细节较多。在阅读源代码时一定要仔细,一个细节的bug会导致实验失败。
爬上第五个坡以后,已经没有什么能够阻挡你成为已经一名内核开发工程师。
面向真实场景开发,实践没有终点
真正的高手都是在实战中摸爬滚打出来的。如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。

Route_of_Linux的更多相关文章
随机推荐
- STC 核心板 入门记
写在开始 STC核心板,它的软件十分全面,想要什么都有,非常适合新手入门. 上一次电赛刚结束,现在反正也啥也不太会,干脆学个这个吧. 顺便写篇博客记录一下. 记录第一次烧写 周四下单,周六到货.中午拿 ...
- linux中nginx中配置端口转发
域名指向主机IP地址,通过域名:8080才能访问网站,去掉后面的8080:或者其他的端口号,直接使用域名访问网站 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...
- JS-根据身份证获取 出生日期和性别
一.根据身份证获取出生日期和性别/** * 根据身份证获取出生日期(yyyy-MM-dd) * @param psidno * @returns {birthday:yyyy-MM-dd} * @co ...
- 微信小程序UI自动化: minium文档部署
目录 参考资料 1. 在线文档(临时) 2. 本地部署 参考资料 https://git.weixin.qq.com/minitest/minium-doc 1. 在线文档(临时) 其实上面的链接里面 ...
- AtCoder 1807 食塩水
题意 有 \(n\) 瓶食盐水,第 \(i\) 瓶为质量 \(w_i\),浓度 \(p_i\%\) 的食盐水,需要选出 \(k\) 瓶食盐水混合在一起,问最大浓度. \(\texttt{Data Ra ...
- Innerclasses
内部类只能让它的外部类访问,其他同包的类也无法访问!方法里也能建内部类 1 public class Innerclasses { 2 public static void main(String[] ...
- [Luogu P4147] 玉蟾宫 (网格DP)
题面 传送门:https://www.luogu.org/problemnew/show/P4147 Solution 裸的求极大子矩阵 感谢wzj dalao的教学 首先,有一个很显然但很重要的结论 ...
- [Luogu P2278] [HNOI2003]操作系统
题面 传送门:https://www.luogu.org/problemnew/show/P2278 Solutiton 挺简单的一道模拟题,拿堆模拟一下题目意思就好 堆中有两个关键字,分别是优先级和 ...
- Runnable接口和Callable接口的区别
Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已:Callable接口中的call()方法是有返回值的,是一个泛型,和Future.Fut ...
- Verilog小总结
Verilog小总结 基础 assign assign作为一个组合逻辑常用的语句,可认为是将电线连接起来,当然它能做的不仅仅是将一个输入直接输出,它能把输入信号进行逻辑运算后再输出.当assign左右 ...