跳至主要內容

2024年最值得收藏的Linux学习路线(建议收藏🔥)

沉默王二学习路线学习路线约 3096 字大约 10 分钟

为什么学 Linux

Linux 也称:GNU/Linux,其中 GNU 的全称是:Gnu’s Not Unix。换句话说,Linux 不是 Unix,但是借鉴了 Unix 的设计思想,所以业界把这种和 Unix 有关的系统统统归为:类 Unix 系统。

Linux 本质是指 Linux 内核,而 GNU/Linux 才是一个操作系统,但是确实有点不好记,所以还是叫 Linux 吧。

通常情况下,Linux 被打包成供服务器使用的 Linux 发行版,一些流行的 Linux 发布版,包括 Debian、Fedora 等。

根据用途可以再总结为:

  • Fedora(典型代表 CentOS)系,在国内外作为企业服务器最多的系统,没有之一
  • Debian 系(典型代表 Ubuntu),一般用于桌面、移动端、TV 这一类
  • ArchLinux 系,轻量的 Linux,适合有一定 Linux 基础,并且爱折腾的人使用,用它做桌面或是服务器都行。

为什么要用 Linux 系统呢?

Linux 是一个开源的、安全的、免费的操作系统

这说得比较虚,在我看来,Linux 之所以被推崇是因为它可以加快你的生产效率,提高产能,针对我们开发人员来说,不会 Linux,就意味着你从来没有接触过真正的生产环境,生产环境几乎都是 Linux 系统。

这就等于说,如果你想成为主力开发或者资深开发,Linux 永远绕不开。从简单的语言开发,到后期的服务器部署、分布式、集群环境、数据库相关等,Linux 都在等着你

安装 Linux 及周边

学习 Linux 之前,必须先把 Linux 安装起来,因为我们本机开发的操作系统通常是 macOS 或者 Windows。

虚拟机安装

Ubuntu 安装open in new window,Ubuntu 是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”、“我的存在是因为大家的存在",是非洲传统的一种价值观。

CentOS 6 安装open in new window,CentOS 是免费的、开源的、可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是 Linux 发行版之一。

CentOS 7 安装open in new window,更主流的版本。

购买云服务器

直接购买云服务器(阿里云、腾讯云都有提供购买渠道),我这里给大家提供一些优惠链接:

①、腾讯云open in new window,新用户专享 350 元代金券

②、阿里云open in new window,新用户专享 2000 元代金券

在线 Linux

或者直接通过在线 Linux来学习。

  • JS/UIX - Terminalopen in new window,直接进入,点击 open terminal。就可以开始把玩了!它提供非常简单的终端环境,并没有自带 gcc 等编译套件,适合用于练习基本命令和 shell 脚本。
  • copy.shopen in new window,可以全屏体验,给你一种在真实Linux上玩耍的感觉。同时支持多个发行版本哦!
  • 实验楼open in new window,选择 Linux 课程,点击进入课程并打开默认在线环境,就可以开始使用一个完整的在线 Linux 环境,几乎和本地安装的 Linux 系统没差!
  • ShellCheckopen in new window,如同它的名字,这是一个用来检查你的脚本是否存在问题的工具。

Vim

Vim 安装和配置、优化open in new window,Vim 是从 vi 发展出来的一个文本编辑器。

其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。 Vim 的第一个版本由布莱姆·米勒在 1991 年发布。

Oh My Zsh

oh-my-zsh 安装与配置open in new window,Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能。Zsh 是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本语言的交互解析器。

SSH 连接工具

Tabbyopen in new window,Tabby 是一个高度可定制化的 跨平台的终端工具,支持 Windows、macOS 和 Linux,自带 SFTP 功能,能与 Linux 服务器轻松传输文件,支持多种主题,界面炫酷,插件丰富。

XShellopen in new window,Xshell 是 Netsarang Computer 推出的的 Secure Shell、Telnet 和 Rlogin 虚拟终端。Xshell 可以为每个主机创建单独的会话,用户可以通过标签查看每个会话,方便同时操作和管理与主机的会话。

Warpopen in new window,一个超级牛叉的 terminal,号称是 21 世纪的终端,还未正式发布,就获得了两千三百万美元的融资。

MobaXtermopen in new window,分开源版和收费版,Windows 平台上比较强大的终端工具。

FinalShellopen in new window,一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件,同时支持 Windows,macOS,Linux。

Puttyopen in new window,Windows 平台上的一个免费 SSH 客户端。

iterm2open in new window,macOS 原生终端 terminal 的替代品。

其他远程链接工具还有:secureCRT、Aechoterm、WindTerm、termius 等等。

Linux 学习路线

这是我画的一幅 Linux 学习路线图,大家可以按此路线循序渐进地学习。

需要说明的是:第五项驱动开发和第六项嵌入式系统开发是并列的,也就是说,学习完内核之后,你可以选择从事不同的领域,当然嵌入式开发有时会包含驱动开发。

还有就是嵌入式开发包括硬件,软件和系统开发,假如只做硬件的话,你没有必要按照上述路线进行,系统级开发的话,前面的是必备。

详细地拆分一下:

熟悉文件系统,shell 脚本以及常用命令

早期的 Linux 使用 Ext2 文件系统格式,CentOS 5.x 默认使用 Ext3,CentOS 6.x 默认使用 Ext4,而目前最新的 CentOS 7.x 默认使用 xfs 格式。

文件系统open in new window

shell 脚本(shell script),是一种为 shell 编写的脚本程序。

Shell 脚本编程 30 分钟入门open in new window

Linux 命令大全(手册)open in new window

列一些我自己用过的命令:

  • cat /proc/cpuinfo 查看 CPU 信息
  • top 查看系统使用情况
  • df 查看磁盘使用情况
  • free 显示系统内存情况
  • sudo 以管理员身份执行
  • ssh 远程连接
  • cd 切换目录
  • ls 查看目录列表
  • tree 打印目录树
  • mkdir 创建目录
  • rm 删除目录
  • touch 新建文件
  • cp 复制文件
  • mv 移动文件
  • find 搜索文件
  • whereis 查看可执行文件路径
  • chmod 设置目录权限
  • cat / more / less 查看文件
  • zip / tar / gzip 压缩文件
  • unzip / tar / gunzip 解压文件
  • grep / sed / awk 文本处理
  • crontab 计划任务
  • nohup 后台运行程序
  • ps 查看进程
  • kill 杀死进程
  • rpm / yum / apt / apt-get / dpkg 软件包管理
  • service / systemctl 服务管理
  • ifconfig 查看网络属性
  • netstat 查看网络状态
  • date 显示系统时间
  • rpm 安装用 RPM 来打包的软件
  • yum 基于 rpm 的软件包管理器,能够从指定的服务器自动下载 RPM 包并且安装

了解程序开发过程

学会使用文本编辑工具 Vim。

学会使用编译工具 gcc, as, 连接工具 ld, 调试工具 gdb, make 工具,会写 makefile。

学会安装配置常用的软件,以及服务搭建,比如说 FTP、MySQL、Nginx、Redis、日志服务 等等。

尝试系统编程

试着在 Linux 上用 C 语言进行系统编程,其中需要调用 Linux 系统库函数 (API)。例如,实现一个需要进行网络通信、操作文件的多线程/进程程序。以此深入了解 Linux 系统运行机制。

推荐这份 Linux 系统编程(中文版),非常 nice。球友可以直接在知识星球的置顶帖open in new window里获取网盘下载地址/或者直接从知识星球里获取。

学习 Linux 内核

Linux® 内核是 Linux 操作系统(OS)的主要组件,也是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源。

之所以称为内核,是因为它在操作系统中就像果实硬壳中的种子一样,并且控制着硬件(无论是电话、笔记本电脑、服务器,还是任何其他类型的计算机)的所有主要功能。

内核有 4 项工作:

  • 内存管理:追踪记录有多少内存存储了什么以及存储在哪里
  • 进程管理:确定哪些进程可以使用中央处理器(CPU)、何时使用以及持续多长时间
  • 设备驱动程序:充当硬件与进程之间的调解程序/解释程序
  • 系统调用和安全防护:从流程接受服务请求

这一部分内容比较深,能把它学透的基本就是大牛了,写个 OS 就不在话下。

linux 内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试题,80+内核视频open in new window

驱动开发和嵌入式系统开发

驱动开发不是必学的。

从 0 开始学 Linux 驱动开发open in new window

嵌入式开发包括很多方向,有硬件、软件,以及系统级别。

硬件要学单片机,ARM、MIPS,DSP 等各种 MCU,Verilog, RTL, 具体就不多说了,跟 Linux 关系不太大。

软件的话,需要了解交叉编译,以及嵌入式环境下 C 语言的特殊用法,例如 volatile、 位操作、寄存器操作、大小端、程序跳转等。

系统级,要了解 Linux 内核裁剪、移植、编译、调试,还有 Bootloader 、设备驱动等。

嵌入式 Linux 应用与开发实践中国大学 mooc 网open in new window

Linux 学习建议

多动手实践,建议自己购买一台云服务器,并且在本地搭建 Linux 虚拟机环境。

一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。

每个命令至少要跟着敲一遍,了解它们的作用,并通过自然地练习,熟悉常用的 Linux 命令。

记不住没关系,用文档查就行了。

先会用,再理解。

时间不多的话,可以通过面试题来了解一些 Linux 设计思想,而不是直接去深入学习内核,虽说学会了的确大有裨益,但性价比不高。

Linux 学习资源

首先推荐韩顺平老师的一周学会 Linux:

B 站地址:https://www.bilibili.com/video/BV1Sv411r7vdopen in new window

其次是狂神说的 Linux 教程:

https://www.bilibili.com/video/BV187411y7hFopen in new window

阿里云的这个 Linux 运维学习路线也不错:

https://edu.aliyun.com/roadmap/linuxopen in new window

书籍的话:

参考资料:


GitHub 上标星 10000+ 的开源知识库《二哥的 Java 进阶之路open in new window》第一版 PDF 终于来了!包括 Java 基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM 等等,共计 32 万余字,500+张手绘图,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 10000+ 的 Java 教程open in new window

微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。