Linux 学习路线 by 鱼皮。
原创不易,请勿抄袭,违者必究!
大家好,我是鱼皮,又花 1 周肝出了 Linux 学习资料全家桶,包括学习路线、命令手册、视频、书籍、文档、实战教程、社区、工具、大厂面试题等,完整分享给大家!
在阅读本文章之前,建议先观看视频,是一个比较特殊的入门教程。我通过实际上线一个项目的方式,带大家快速学习企业中常用的 Linux 命令,几分钟应该就对 Linux 有个不错的了解啦~
视频地址:https://www.bilibili.com/video/BV1ev411G7VE/
为什么学 Linux?
相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受企业青睐,甚至 90% 以上 的企业应用都是用 Linux 服务器部署的。
无论是前端、后端、算法、测试、运维等计算机相关岗位的同学,都建议学习下 Linux,大有裨益。
学习境界
首先,Linux 入门很简单,但想学的透彻难上加难!
因此,在学习之前要明确目标。
可以 Linux 的学习分为几种境界:
- 明劲,就是了解 Linux 的基本概念,会敲常用命令来应对工作。对于大多数想从事开发和运维岗位的同学,学到这就足够找到工作了。
- 暗劲,又分为两种境界,能理解 Linux 尤其是其内核的设计思想,为小圆满;能将其思想应用到系统的架构设计中,为大圆满。暗劲境界的高手,冲击大厂、做架构师、从事底层开发,都不成问题。
- 化劲,可谓出神入化,不仅熟知 Linux 的使用、思想和细节,更能推陈出新,自主创造新的系统。
当然,一般情况下,会用就够了,想进大厂最好也学习一些内核的设计思想。找到工作后,是否要深入学习完全取决于你自己。
大纲
路线
Linux 基础知识
- 发展历史
- ⭐ 特点和优势
- 应用场景
- ⭐ 常见 Linux 系统版本(推荐 CentOS 7 )
- ⭐ CentOS
- ⭐ Ubuntu
- Debian
- Fedora
- 何为开源?
Linux 环境
- 搭建方式
- ⭐ 虚拟机
- ⭐ 云服务器
- 在线工具
- WSL
- Docker 容器
- 远程连接
- ⭐ SSH
- 连接工具
- ⭐ XShell
- ⭐ MobaXterm
- SecureCRT
- Putty
Linux 常用命令
此处只列举命令名称,命令的具体用法可直接在手册中(https://www.linuxcool.com/)查询
系统信息
- uname 查看系统信息
- hostname 查看主机名
- cat /proc/cpuinfo 查看 CPU 信息
- lsmod 查看已加载的系统模块
- top 查看系统使用情况
- df 查看磁盘使用情况
- fdisk 查看磁盘分区
- du 查看目录使用情况
- iostat 查看 I / O 使用情况
- free 显示系统内存情况
- env 查看环境变量
- uptime 查看系统运行时间、用户数、负载
系统操作
- shutdown 关机
- reboot 重启
- mount 挂载设备
- umount 卸载设备
用户相关
- su 切换用户
- sudo 以管理员身份执行
- who 查看当前用户名
- ssh 远程连接
- logout 注销
- useradd 创建用户
- userdel 删除用户
- usermod 修改用户
- groupadd 创建用户组
- groupdel 删除用户组
- groupmod 修改用户组
- passwd 修改密码
- last 显示用户或终端的登录情况
文件相关
- cd 切换目录
- ls 查看目录列表
- tree 打印目录树
- mkdir 创建目录
- rm 删除目录
- touch 新建文件
- cp 复制文件
- mv 移动文件
- ln 创建文件链接
- find 搜索文件
- locate 定位文件
- whereis 查看可执行文件路径
- which 在 PATH 指定的路径中,搜索某系统命令的位置
- chmod 设置目录权限
- cat / more / less 查看文件
- tac 倒序查看文件
- head / tail 查看文件开头 / 结尾
- paste 合并文件
- zip / tar / gzip 压缩文件
- unzip / tar / gunzip 解压文件
- grep / sed / awk 文本处理
- vim 文本编辑
程序相关
- crontab 计划任务
- nohup 后台运行程序
- jobs 查看系统任务
- ps 查看进程
- kill 杀死进程
- rpm / yum / apt / apt-get / dpkg 软件包管理
- service / systemctl 服务管理
网络相关
- ifconfig 查看网络属性
- netstat 查看网络状态
- iptables 查看 iptables 规则
其他
- date 显示系统时间
- cal 显示日历
- history 显示与操作历史
- help 帮助
- alias 别名
用户管理
- 用户
- 用户组
- ACL 权限管理
- 用户切换
- 管理员
文件管理
- 文件操作
- 创建
- 修改
- 复制
- 移动
- 删除
- 文件浏览
- 文件搜索
- 文件权限
- 软硬链接
- 压缩 / 解压
文本操作
- 正则表达式
- grep
- sed
- awk
VIM 编辑器
- 基本操作
- 模式
- 快捷键
- VIM 定制
- 插件增强
送张 VIM 键盘图:
磁盘管理
- 使用情况查询
- 磁盘分区
- 挂载
驱动管理
- 驱动加载
- 驱动更新
- 网卡
- 显卡
进程管理
- 启动进程
- 杀死进程
- 查看进程
- 前台 / 后台任务
- 进程监控
计划任务
- crond 服务
- crontab 命令
网络管理
- IP
- 端口
- 主机名
- hosts
- 网络配置
- 网络状态
- 网络监控
系统管理
- 系统设置
- 日期时间
- 语言
- 字符集
- 系统服务
- 环境变量
- 日志
- 系统关机 / 重启
- 数据备份与恢复
服务管理
- 服务查看
- 启动服务
- 禁用服务
- 删除服务
- 开机自启
软件管理
- 软件包管理器
- ⭐ rpm
- ⭐ yum
- apt
- apt-get
- dpkg
- 软件安装
- 软件更新
- 软件卸载
- 源码安装
常用软件 / 服务搭建
- HTTP
- NFS
- DNS
- FTP
- mysql
- LVS Keepalived
- Apache
- Nginx
- Redis
- 日志服务
Shell 脚本编程
- 默认变量
- 运算符
- 条件
- 循环
- 执行
- 函数
- 系统函数
- 自定义函数
- 规范
- 调试方法
- 管道
- I/O 重定向
Linux 启动过程
- BIOS 启动引导
- 引导加载程序
- 内核加载
- 系统初始化(init)
- 运行级别
- 启动内核
- 执行初始化脚本
- 用户登录
Linux 内核
- 内核的组成
- 目录结构
- 版本
- 模块
- 编译
- 裁剪
具体路线图参考:
第三方工具
- Ansible
- Webmin
- 宝塔 Linux
岗位
- 后端开发(Java / Go / C )
- 底层开发(C / C )
- 运维开发
- 大数据
- 云计算
- 自动化运维
- 嵌入式开发
- 网络工程师
学习建议
多动手实践,建议自己购买一台云服务器,并且在本地搭建 Linux 虚拟机环境。
一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。
每个命令至少要跟着敲一遍,了解它们的作用,并通过自然地练习,熟悉常用的 Linux 命令。
记不住没关系,用文档查就行了。
先会用,再理解。
时间不多的话,可以通过面试题来了解一些 Linux 设计思想,而不是直接去深入学习内核,虽说学会了的确大有裨益,但性价比不高。