前言:学习的课程来自极客时间的专栏《趣谈 Linux 操作系统》,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程。

Linux 系统的相关介绍不再赘述,目前比较热门的技术,比如云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 的,像团购、电商、打车、快递这些系统都是部署在服务端,也几乎都是基于 Linux 技术的。想进大公司,想学新技术,Linux 一定是一道绕不过去的坎,只有扎实掌握 Linux 操作系统相关知识,才能成为合格的软件工程师。

相比于 Windows 的“图形化界面+菜单”使用模式,Linux 上手较难,其学习过程更像一个爬坡模式,要爬的坡主要有六个,分别是:熟练使用 Linux 命令行、使用 Linux 进行程序设计、了解 Linux内核机制、阅读 Linux 内核代码、实验定制 Linux 组件、面向真实环境的开发。

Step1:熟悉 Linux 命令行
基础:会用 --help、man 查看帮助文档
进阶:sed、awk、正则、管道、grep、find、shell 脚本、vim
推荐书籍:《鸟哥的 Linux 私房菜》、《 Linux 系统管理技术手册》
参考博客:别出心裁的Linux命令学习法

Step2:通过系统调用和 glibc 编程
了解和掌握系统调用(glibc 库),并能够编程操作 Linux
推荐书籍:《 Unix 环境高级编程 》
参考博客:别出心裁的Linux系统调用学习法

Step3:了解 Linux 内核机制
可以先了解一下 Linux 内核机制,知道基本的原理和流程。Linux 内核机制非常复杂,而且其中相互关联。比如说,进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行起来进程。这些知识点要反复对照,才能理清。
推荐书籍:《深入理解 Linux 内核》、《庖丁解牛 Linux 内核分析》

Step4:阅读 Linux 内核源码
根据学习内核机制中遇到的问题或工作中要重点研究某方面技术,选择性的去研究源码,专注于核心逻辑和使用场景。(如你是研究网络的,就重点看内核协议栈的部分)
推荐书籍:《 Linux 内核源码情景分析》

Step5:实验化定制组件
因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。例如,可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。这个阶段要求较高,需要把每个细节都搞清楚。
结合专栏的两个实验加强学习和理解。

Step6:面对真实场景的开发
结合具体的业务需求,基于 Linux 环境的开发要考虑很多因素,如并发与并行、锁与保护、扩展性与兼容性等,这些都要通过真实的项目多多实践。

Linux 操作系统学习爬坡路线图

(ps:对于大多数开发者而言,如果不是做 Linux 内核开发相关,尽量认真完成前三个阶段)

课程学习方法 tips:

1. 阅读:至少读两遍,阅读过程中思考是什么、为什么、如何用,联想之前的相关知识、做过的项目,尝试解答别人的问题,不懂的知识翻阅书籍或上网查。
2. 实践:提到的命令和代码要去动手敲,其他如分析系统调用和源码模块也要试着动手去做。
3. 总结:能串联各个部分的知识、能画出知识的框架。

《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径的更多相关文章

  1. Linux 学习笔记之超详细基础linux命令 Part 14

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 13---------------- ...

  2. Linux 学习笔记之超详细基础linux命令 Part 10

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 9----------------- ...

  3. Linux 学习笔记之超详细基础linux命令 Part 1

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122   说明:主要是在REHL Server 6操作系统下进行的测试 --字符界面虚拟终端与图形界面之间的切 方法:[ ...

  4. Linux 学习笔记之超详细基础linux命令(the end)

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 14---------------- ...

  5. Linux 学习笔记之超详细基础linux命令 Part 13

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...

  6. Linux 学习笔记之超详细基础linux命令 Part 12

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...

  7. Linux 学习笔记之超详细基础linux命令 Part 11

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 10---------------- ...

  8. Linux 学习笔记之超详细基础linux命令 Part 9

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 8----------------- ...

  9. Linux 学习笔记之超详细基础linux命令 Part 8

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...

  10. Linux 学习笔记之超详细基础linux命令 Part 7

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...

随机推荐

  1. 快乐编程大本营【java语言训练班】第5课: java的数组编程

    快乐编程大本营[java语言训练班]第5课: java的数组编程 第1节. 声明数组变量 第2节. 创建数组对象 第3节. 访问数组元素 第4节. 修改数组元素 第5节. 多维数组 学习地址如下:ht ...

  2. context.startActivity(Intent intent)方法启动activity

    在一个Activity环境中用该方法启动一个一个activity不会出任何问题,但在activity之外的其他组件中使用该方法就会出现以下错误: Calling startActivity() fro ...

  3. css实现渐变字体和流光字体

    这是段渐变文本 .text{ font-size: 30px; font-weight: bold; background-image: linear-gradient(#ed3f27, #9b099 ...

  4. Python中的hashable(散列)

    Python文档中的解释: 一个对象是可散列的,那么在它的生命周期中它的hash 值是不变的. 可散列的对象需要2个方法:__hash__()方法和__eq__()方法.两个可散列的对象相等,那么它们 ...

  5. Codeforces_334_C

    http://codeforces.com/problemset/problem/334/C 求不能凑整n,和最小,数量最多的数量. #include<iostream> #include ...

  6. num05---装饰模式

    当系统需要新的功能的时候,一般都是向旧的类中添加新的代码.比如一个人这个类,需要新增穿衣的功能,那么就会在人这个类中去添加对应的穿衣方法代码,用来增强人这个类的行为功能.但是这样做,会因为新加入的字段 ...

  7. Go语言实现:【剑指offer】跳台阶

    该题目来源于牛客网<剑指offer>专题. 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 1阶:共1种跳法: 2阶 ...

  8. The Divide and Conquer Approach - 归并排序

    The divide and conquer approach - 归并排序 归并排序所应用的理论思想叫做分治法. 分治法的思想是: 将问题分解为若干个规模较小,并且类似于原问题的子问题, 然后递归( ...

  9. php 对象示例

    <?php header("content-type:text/html; charset=utf-8"); error_reporting(E_ALL); class My ...

  10. Prometheus监控k8s集合

    Prometheus监控k8s Prometheus监控k8s(1)-Prometheus简介 Prometheus监控k8s(2)-手动部署Prometheus Prometheus监控k8s(3) ...