爬过六个陡坡,对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. Windos--jar包注册成服务

    1.下载资源 链接: https://pan.baidu.com/s/16asJXGudsRN23Rwra_qGZw 提取码: w2gv 解压后有五个文件 1.1注意事项 1.把你的生成的jar包放入 ...

  2. git添加空文件夹

    最近刚接触git这个工具,发现git是不能提交空文件的:找了下资料,找到了解决提交文件夹的办法,现在记录一下. git是不允许提交一个空的目录到版本库上的,可以在空文件夹下面添加.gitkeep文件, ...

  3. Linux入门到放弃之三《常用命令(帮助命令,文件压缩和解压,关机、重启,加载光盘...)》

    1.获得命令帮助: man命令的用法: 命令:man find ( 获取find命令的帮助文档 ) 2.复制/root/install.log 到/tmp: ( 确认root目录下是否存在instal ...

  4. 三种方式获取SSMS连接密码

    内网渗透是有的时候会遇到对方SSMS没断开连接正连着别的机器的mssql此时有两种方法可以获取sa密码 当密码强度较弱时可以使用第一只方式,第一种方式解不开的情况下可以使用后面二种方式 1.直接查询s ...

  5. APP反编译Xposed-Fdex2脱壳

    1.首先手机安装Xposed(app) 2.安装Fdex2(app) 3.打开Fdex2 4.点击要脱壳的app 5.adb pull (点击脱壳app时候弹出的来的路径) 保存本地路径 6.完结-. ...

  6. K8S 使用 SideCar 模式部署 Filebeat 收集容器日志

    对于 K8S 内的容器日志收集,业内一般有两种常用的方式: 使用 DaemonSet 在每台 Node 上部署一个日志收集容器,用于收集当前 Node 上所有容器挂载到宿主机目录下的日志 使用 Sid ...

  7. Excel基础—为什么学习Excel

    吾生也有涯,而知也无涯 点赞再看,养成习惯 自从个人计算机开始普及以后,Excel就得到了广泛的传播,工作学习生活中不处不存在Excel的影子,不论是考勤,工资还是其他的统计等等,都离不开Excel. ...

  8. vue父组件促发子组件中的方法

    实现在父组件中促发子组件里面的方法 子组件: <template> <div> 我是子组件 </div> </template> <script& ...

  9. net core webapi多版本控制与nswag 交互

    前言 首先希望webapi 支持多版本,swagger针对不同的版本可进行交互.netcore 基于Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer 包, ...

  10. vscode 插件配置指北

    Extension Manifest 就像 chrome 插件使用 manifest.json 来管理插件的配置一样,vscode 的插件也有一个 manifest,而且就叫 package.json ...