首页 简历|笔试面试

如何学习Linux?(完结)

  • 25年9月4日 发布
  • 3.9MB 共9页
如何学习Linux?(完结)如何学习Linux?(完结)如何学习Linux?(完结)如何学习Linux?(完结)如何学习Linux?(完结)

如何学习 Linux?(完结)

为什么学 Linux

Linux 也称:GNU/Linux,而其中 GNU 的全称又是:Gnu’s Not Unix。也就是说,Linux 本

质来源不是 Unix,但是借鉴了 Unix 的设计思想,所以业界把这种和 Unix 是一致设计思想

的系统归为:类 Unix 系统。

Linux 本质是指 Linux 内核,而称 GNU/Linux 则代表这是一个系统,但是确实有点不好念

和记忆,所以大家直接称作 Linux。

通常情况下,Linux 被打包成供个人计算机和服务器使用的 Linux 发行版,一些流行的主

流 Linux 发布版,包括 Debian(及其派生版本 Ubuntu、Linux Mint)、Fedora(及其相

关版本 Red Hat Enterprise Linux、CentOS)和 openSUSE、ArchLinux(这个是我补充

的)等。

根据用途可以再总结:

• Fedora(CentOS、RHEL)系,是在国内外,作为企业服务器的系统最多,没有之一

• Debian 系,一般用于桌面,移动端,TV 这一类

• ArchLinux 系,很轻量的 Linux,适合有一定 Linux 基础,并且爱折腾的人使用,用

它做桌面或是服务器都行。

• OpenSuse 系,嘛,嗯…人气相对比较差,不提也罢。

为什么要用 Linux 系统呢?大家常看到的说法是这样的:

Linux 是一个开源的,有潜力,安全,免费的操作系统

这说得比较虚,在我看来,Linux 之所以被推崇是因为它可以加快的你生产效率,提高产

能,针对我们开发人员来说,我推荐 Linux 就是因为它适合常见的编程语言做开发环境。

这就等于说,如果你是某种语言的开发者,你从事这个行业,不管你怎么学习下去,

Linux 永远绕不开。从简单的各种语言开发,到后期的服务器部署,分布式,集群环境,

数据库相关等,Linux 都在等着你。

安装 Linux 及周边

学习 Linux 之前,必须先把 Linux 安装起来,否则没有任何学习的环境,对吧?

虚拟机安装

Ubuntu 安装,Ubuntu 是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖

鲁语或豪萨语的“ubuntu”一词,意思是“人性”“我的存在是因为大家的存在”,是非洲传统

的一种价值观。

CentOS 6 安装,CentOS 是免费的、开源的、可以重新分发的开源操作系统,CentOS

(Community Enterprise Operating System,中文意思是社区企业操作系统)是 Linux 发

行版之一。

CentOS 7 安装

购买云服务器

或者直接购买云服务器(阿里云、腾讯云、华为云、百度云都有提供购买渠道)。

在线 Linux

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

Vim

Vim 安装和配置、优化,Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及

错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类

Unix 系统用户最喜欢的编辑器。 Vim 的第一个版本由布莱姆·米勒在 1991 年发布。

Oh My Zsh

oh-my-zsh 安装与配置,Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的

扩展功能。Zsh 是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本

语言的交互解析器。

b1811b39-2248-485a-8f90-535617edc333.png

SSH 连接工具

Tabby,Tabby 是一个高度可定制化的 跨平台的终端工具,支持 Windows、macOS 和

Linux,自带 SFTP 功能,能与 Linux 服务器轻松传输文件,支持多种主题,界面炫酷,插

件丰富。

XShell,Xshell 是 Netsarang Computer 推出的的 Secure Shell、Telnet 和 Rlogin 虚拟终

端。Xshell 可以为每个主机创建单独的会话,用户可以通过标签查看每个会话,方便同时

操作和管理与主机的会话。

Warp,一个超级牛叉的 terminal,号称是 21 世纪的终端,还未正式发布,就获得了两千

三百万美元的融资。

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

FinalShell,一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件,同时

支持 Windows,macOS,Linux。

Putty,Windows 平台上的一个免费 SSH 客户端。

iterm2,macOS 原生终端 terminal 的替代品。

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

Linux 学习路线

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

d881ed4c-bc80-443b-b6b7-15b3c673e5c7.png

需要说明的是:第五项驱动开发和第六项嵌入式系统开发是并列的,也就是说,学习完内

核之后,你可以选择从事不同的领域,当然嵌入式开发有时会包含驱动开发。

还有就是嵌入式开发包括硬件,软件和系统开发,假如只做硬件的话,你没有必要按照上

述路线进行,系统级开发的话,前面的是必备。

详细地拆分一下:

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

早期的 Linux 使用 Ext2 文件系统格式,CentOS 5.x 默认使用 Ext3,CentOS 6.x 默认使用

Ext4,而目前最新的 CentOS 7.x 默认使用 xfs 格式。

文件系统

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

Shell 脚本编程 30 分钟入门

Linux 命令大全(手册)

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

• 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。

935ebe3b-daf7-48c5-8207-74495c3ab8f4.png

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

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

务 等等。

尝试系统编程

试着在 Linux 上用 C 语言进行系统编程,其中需要调用 Linux 系统库函数 (API)。例

如,实现一个需要进行网络通信、操作文件的多线程/进程程序。以此深入了解 Linux 系

统运行机制。

d6223bfb-d34b-4fa6-9077-0773707f5844.png

推荐这份 Linux 系统编程(中文版),非常 nice。球友可以直接在知识星球的置顶帖里获

取网盘下载地址/或者直接从知识星球里获取。

学习 Linux 内核

Linux® 内核是 Linux 操作系统(OS)的主要组件,也是计算机硬件与其进程之间的核心

接口。它负责两者之间的通信,还要尽可能高效地管理资源。

之所以称为内核,是因为它在操作系统中就像果实硬壳中的种子一样,并且控制着硬件

(无论是电话、笔记本电脑、服务器,还是任何其他类型的计算机)的所有主要功能。

内核有 4 项工作:

• 内存管理:追踪记录有多少内存存储了什么以及存储在哪里

• 进程管理:确定哪些进程可以使用中央处理器(CPU)、何时使用以及持续多长时间

• 设备驱动程序:充当硬件与进程之间的调解程序/解释程序

• 系统调用和安全防护:从流程接受服务请求

a711e2c6-0f31-4326-9362-3e207d423314.png

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

linux 内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试

题,80+内核视频

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

驱动开发不是必学的。

从 0 开始学 Linux 驱动开发

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

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

Linux 关系不太大。

软件的话,需要了解交叉编译,以及嵌入式环境下 C 语言的特殊用法,例如 volatile、 位

操作、寄存器操作、大小端、程序跳转等。

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

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

Linux 学习建议

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

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

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

令。

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

先会用,再理解。

时间不多的话,可以通过面试题来了解一些 Linux 设计思想,而不是直接去深入学习内

核,虽说学会了的确大有裨益,但性价比不高。

Linux 学习资源

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

B 站地址:https://www.bilibili.com/video/BV1Sv411r7vd

1a647aef-c5f2-4dcb-a4b3-cf8185bf1abc.png

其次是狂神说的 Linux 教程:

https://www.bilibili.com/video/BV187411y7hF

057c385f-6939-4288-aa01-fe2d5bd0830f.png

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

https://edu.aliyun.com/roadmap/linux

书籍的话:

• 《鸟哥的 Linux 私房菜 —— 基础篇》

• 《深入理解 Linux 网络: 修炼底层内功,掌握高性能原理》

• 《深入理解 LINUX 内核(第三版)》

• 《Linux 是怎样工作的》

• 《Linux 内核完全剖析》

参考资料:

• https://github.com/judasn/Linux-Tutorial

• https://zhuanlan.zhihu.com/p/26859197

• https://gitee.com/liyupi/code-roadmap

• https://www.redhat.com/zh/topics/linux/what-is-the-linux-kernel

开通会员 本次下载免费

所有资料全部免费下载! 推荐用户付费下载获取返佣积分! 积分可以兑换商品!
普通用户: 3.78元
网站会员:
本次下载免费

开通网站会员 享专属特权

  • 会员可免费

    下载全部资料!

  • 推荐用户下载

    获取返佣积分!

  • 积分可以

    兑换商品!

一键复制 下载文档 联系客服