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的更多相关文章
随机推荐
- C#Socket通讯(1)
前言 因为自己需要开发一款自己的游戏,因为设计网络方面,所以我找了很多的资料,再加上考虑到Unity游戏客户端直接连接数据库很容易导致数据库泄露,再加上网上很多的服务端都是用控制台做的,所以我就想做个 ...
- B. Game of the Rows 解析(思維)
Codeforce 839 B. Game of the Rows 解析(思維) 今天我們來看看CF839B 題目連結 題目 有如下圖片所示的飛機座位\(n\)排,和\(k\)隊士兵,每隊數量不一定. ...
- 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...
- Java学习的第十五天
1.今天复习了第四章的内容 重新看了看方法参数问题,final修饰的关键字 2.今天没问题 3.明天学习多态变化
- Java_静态代理与Lambda
静态代理 要点: 公共接口 真实角色 代理角色 public class StaticProxy { public static void main(String[] args) { You you ...
- JVM常用调优工具介绍
前言 王子在之前的JVM文章中已经大体上把一些原理性问题说清楚了,今天主要是介绍一些实际进行JVM调优工作的工具和命令,不会深入讲解,因为网上资料很多,篇幅可能不长,但都是实用的内容,小伙伴们有不清楚 ...
- Scrapy分布式爬虫,分布式队列和布隆过滤器,一分钟搞定?
使用Scrapy开发一个分布式爬虫?你知道最快的方法是什么吗?一分钟真的能 开发好或者修改出 一个分布式爬虫吗? 话不多说,先让我们看看怎么实践,再详细聊聊细节~ 快速上手 Step 0: 首先安装 ...
- 利用sklearn实现knn
基于上面一篇博客k-近邻利用sklearns实现knn #!/usr/bin/env python # coding: utf-8 # In[1]: import numpy as np import ...
- cmd的基本命令
使用方法Windows键+R键输入cmd回车 Windows 系统常用小工具 工具名称 cmd 命令 含义 计算器 calc 与 "工具名称" 相同 记事本 notepad 与 & ...
- Oracle数据库操作相关
1. 导出dmp 文件 (1)导出数据库所有的用户数据: exp system/manage@ORCL file=D:\oracle_dmp\data1.dmp full=y (2)导出指定的用户数据 ...