爬过六个陡坡,对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的更多相关文章

随机推荐

  1. 在 Istio 中实现 Redis 集群的数据分片、读写分离和流量镜像

    Redis 是一个高性能的 key-value 存储系统,被广泛用于微服务架构中.如果我们想要使用 Redis 集群模式提供的高级特性,则需要对客户端代码进行改动,这带来了应用升级和维护的一些困难.利 ...

  2. 【Flutter 混合开发】添加 Flutter 到 Android Activity

    Flutter 混合开发系列 包含如下: 嵌入原生View-Android 嵌入原生View-iOS 与原生通信-MethodChannel 与原生通信-BasicMessageChannel 与原生 ...

  3. new 正则

    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理. 匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z]数字 ...

  4. 【Flutter 1-5】运行Flutter的第一个项目——计数器

    创建项目 创建Flutter项目有很多种方法,各个IDE工具也都集成了创建Flutter项目的快捷操作.我们这里列举三种方式:使用命令行创建.使用Android Studio创建和使用VSCode创建 ...

  5. symfony3.4 配置高效的邮箱swiftmailer插件

    网站经常需要邮件发送,symfony里面swiftmailerBundle是一个非常并且稳定的发送邮件的第三方插件. 我们来看一下symfony里面的邮件怎么配置. 第一步我们先下载bundle: c ...

  6. JAVA学习线路:day14-网络编程

    心得: 我是一名正在自学的java的即将毕业的大学生 总结笔记是为了让自己更好的理解和加深印象.可能不是那么美观,自己可以看懂就好 所有的文档和源代码都开源在GitHub: https://githu ...

  7. 浅谈HiZ-buffer

    最近在看基于GPU的遮挡裁剪相关的技术,它本身也是GPU-Driven Rendering Pipleline的其中一环.这项技术充分利用compute shader并行计算的威力,在加速遮挡查询的效 ...

  8. JAVA每日一题20201109

    一.标识符的规则? 1.严格区分大小写,不能使用关键字,保留字,不能重复 2.数字不能开头 二.标识符的命名规范 包名:XXXYYYZZZ 类名,接口名:XxYyZz 变量名,方法名:xxxYyyZz ...

  9. 【SpringBoot】08.SpringBoot整合jsp

    SpringBoot整合jsp 1.修改pom文件加入两个坐标jstl标签库和jasper <project xmlns="http://maven.apache.org/POM/4. ...

  10. 释放至强平台 AI 加速潜能 汇医慧影打造全周期 AI 医学影像解决方案

    基于英特尔架构实现软硬协同加速,显著提升新冠肺炎.乳腺癌等疾病的检测和筛查效率,并帮助医疗科研平台预防"维度灾难"问题 <PAGE 1 LEFT COLUMN: CUSTOM ...