Linux系统 从入门到进阶 Study Notes
Kierke

慕课网实战课程《Linux系统 从入门到进阶-全新版》学习笔记

第1章 【引言】走入Linux新世界

为什么要学习Linux

  • 众多岗位必备项 所有岗位加分项

    • 几乎计软件开发相关的岗位都需要掌握Linux。常见的招聘要求:
      • 熟练Linux环境及Shell脚本
      • 拥有2年及以上Linux下开发工作经验
      • 熟悉Linux的安装、配置、调优和排障及常见配置管理和运维工具
  • 职场小白必修课 升职加薪敲门砖

    • 职场小白需要熟悉使用工作中用到Linux的场景技术

    • 技术大拿需要掌握Linux的高阶知识和用法

  • 应用场景丰富(生产测试刚需)

  • 网站服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、软路由器等都需要使用到Linux

软件名称 应用场景 系统支持
QEMU&KVM 云计算开发底层核心 仅支持Linux系统
docker 应用部署常用形态 仅支持Linux系统
Hadoop 大数据开发常用软件 仅支持Linux系统
bash 运维脚本核心编程语言 仅支持Linux系统
PyTorch/TensorFlow 深度学习常用框架 Linux系统支持优于Windows
MySQL 业务信息存储核心组件 常部署于Linux系统上
git 常用代码版本管理工具 常部署于Linux系统上
  • 安卓鸿蒙发源地 苹果系统亲兄弟

    • 安卓和鸿蒙等操作系统,都是基于Linux系统进行开发,由Linux内核提供安全、内存管理、进程管理网络和驱动模型等功能
  • 基于Linux系统开发了诸多软件、工具、项目

    • 通过优秀的Linux开源项目进行学习,精进技术

    • 利用开源项目解决实际问题,提升工作效率

    • 创建博客系统、文件服务器、笔记系统、邮件系统等



Linux的优势 & Linux的局限

优势 说明
开源 开源意味着对系统有着绝对的控制权(未知是最可怕的事情)
能够根据业务系统实际需求,进行系统裁剪和深度定制
人人都可成为开发者,为Linux系统添砖加瓦
免费 促进了Linux系统的传播和流行
稳定性高 可以数年稳定运行而无需关机或重启
安全性强 严格的权限控制
高性能 大量开发者对系统进行了多维度优化
跨平台支持 硬件支持范围广,适用处理器包括大型主机、个人电脑、嵌入式设备等
多用户支持 不同用户可以同时登录同一个系统并共用系统资源且保证安全性
局限性 说明
不容易快速上手 有一定的使用门槛
发行版差异性大 不同的Linux发行版有较大的差异性
不适合玩游戏 游戏场景更推荐Windows系统


Linux学习方法

  • 学习方法

    • 学习语言需要交流 学习技术需要实践

    • 眼看干遍不如手动一遍

    • 左屏教程,右屏Linux系统,边学边用

  • Linux权威教程

    • 官方文档

      • 没有人比作者更懂自己的作品,
      • 任何一本单独的教程(包括本教程),都不可能像官方文档那样全面
      • 性质决定了其详尽、冗长的特性,劝退入门者
      • 对初学者不友好,适用于高阶问题的刨根问底
    • 源码

      • 面向高阶用户的终极法宝


课程内容概述

  • 基于官方文档,面向入门者、初学者和进阶用户,提供准确概括的教程

    • 基础进阶一课通

    • 软硬件全栈覆盖

    • 理论与实践结合

    • 具象化课堂呈现

篇章 内容概述
基础篇 介绍Linux系统的安装登渏录及基础指令
解析支撑Linux系统的各硬件子系统及其运行状态
阐述硬件评价体系和衡量办法
进阶篇 阐述Linux系统一切皆文件的核心思想
之后分别阐述介绍文本处理三剑客、文件操作、进程管理、Linux bash脚本以及运维管理
高阶篇 以Linux内存子系统和调度子系统为主要代表,用通俗易懂的语言,帮助学员深入理解Linux内核原理
并指导内核升级与编译
拓展篇 以Linux系统为基础,以新基建代表云计算技术为切入点,介绍虚拟机与容器的区别与联系
在真实环境中演示虚拟机和容器的运行



第2章 【基础篇】Linux基础入门

拥有一个Linux系统

  • 获得一个Linux系统的机器
    • 购买公有云服务器
    • Windows系统安装虚拟机
    • 嵌入式处理器安装Linux系统
  • Windows系统安装Linux虚拟机
    • 所需工具:VMware WorkStation(桌面虚拟化工具)
    • 安装镜像:CentOS-8.2.2004-x86 64-dvd1.iso
  • Linux安装过程(略)


SSH(远程登录)

  • 什么是SSH

    • SSH,英文全称为Secure Shell Protocol(翻译为安全外壳协议)。是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境

    • SSH通过在网络中建立安全隧道以实现SSH客户端与服务器之间的连接,其最常见的用途就是远程登录系统,利用SSH来传输命令行界面和远程执行命令

  • SSH工具

    • PuTTY

    • XShell

    • MobaxTerm

    • secureCRT

  • SSH登录选项

    • 服务器的IP地址 + 端口号(SSH默认使用的是22端口)+ [用户名 & 密码] or 秘钥
1
2
# 示例
ssh root@192.168.51.2


软件仓库 & 软件包管理

  • 软件仓库概述

    • 软件仓库是存放软件的服务器或者网站,包含了软件包及索引文件。用户可通过包管理工具,便捷地进行Linux系统内的软件安装、卸载和更新

    • 软件仓库之于Linux系统,类似应用商店之于安卓系统,App Store之于I0S系统

  • 包管理工具

    • 不同的Linux发行版有不同的包管理工具

    • 不同的Linux发行版进行软件安装需要用到不同的指令

包管理工具 适用系统 安装软件(包) 卸载软件(包)
dpkg Ubuntu和Debian dpkg -i package.deb dpkg -r package
apt Ubuntu和Debian apt-get instal package apt-get remove package
rpm RHEL、CentOS rpm -ivh package.rpm rpm -e package
yum CentOS6-8 yum install package yum remove package
dnf RHEL8、CentOS8 dnf install package dnf remove package
  • 软件仓库原理
graph LR;
    A([终端用户]) -- 发送指令 yum install -y tmux--> B[本地服务器Cache] --依据repository配置/etc/yum.repos.d/--> C[远程yum服务器 package]
  • 用户发送yum安装指令后,首先会在本地服务器上进行査找,如果有对应的安装包且所需的依赖文件均存在,则进行安装
  • 若不存在所需的安装包文件,则根据yum repository信息在远程YUM服务器上进行下载该软件包及其依赖后安装
  • 若远程YUM服务器无所需的安装包,则提示无该软件


镜像源(配置)

  • CentOS默认软件仓库配置为:
1
mirrorlist=http:/mirrorlist.centosorg/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra

首先需要访问mirrorlist.centos.org网站并解析镜像仓库,则意味着每次下载程序需要绕大半个地球。我们可以配置一个镜像源,就近下载

以CentOS为例,将镜像源替换为腾讯云的方式如下:

1
2
3
4
5
6
7
8
# 切换文件夹路径到/etc/yum.repo.d/下(这里的.d表示directory,表示文件夹是yum repository的集合)
cd /etc/yum.repo.d/

#下载腾讯云的centos8 base.repo文件并命名为CentOS-Base.repo
wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.coud.tencent.com/repo/centos8_base.repo

# 更新缓存信息
yum makecache


Linux基础指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# ls 显示指定自录下的内容(ls 是list的缩写)
ls
ls -l
ls -la
ls -lha
ls -lt
ls -R
ls -l [dir]

# cd 切换当前目录(cd 是 change directory的缩写)
cd
cd ~
cd .
cd ..
cd ../..
cd -
cd [dir]

# cp 复制文件或文件夹(cp 是 copy的缩写)
# 注意:CentOS 8等系统中,cp命令默认是cp-i指令的重命名
cp [file] [newfile]
cp -r
cp -i
cp -f
cp -b

# mv 将文件/目录移动到其他位置(move的缩写)
# 注意:CentOS 8等系统中,mv命令默认是mv-i指令的重命名
# 重命名
mv [src_file] [dest_file]
mv -i
mv -f
mv [src_file] [dir]

# cat 连接文件并打印到标准输出设备上(concatenate的缩写)
cat [file]
# 将[file]文件的行号和内容打印到显示器上
cat -n [file]
# 将[src file]文件的行号和内容输出至dest file中
cat -n [src file]> [dest file]
# 将文件[src file_1]和[src file 2]的内容输出到dest file中
cat [src file_1][src file 2]>[dest file]
# 清空[dest file]文件内容
cat /dev/null > [dest file]

# head 查看文件的开头部分的内容
head -n [lines] [file]
head -c [chars] [file]
head [file]

# tail 查看文件的尾部的内容
tail -n [lines] [file]
tail -c [chars] [file]
tail -f [file]
tail [file]

# rm 删除一个文件或者目录(remove的缩写)
# 注意:CentOS 8等系统中,rm命令默认是rm-i指令的重命名
rm [file]
rm -i [file]
rm -f [dir]

# touch 修改文件或者目录的时间属性,或创建新文件
# # 如果[file]文件不存在,则创建[file]文件,如果[file]文件存在,则修改[file]文件的时间
touch [file]

# more & less 适用于多页内容展示
# more和less的基础功能相同-显示文件的第一页,按向下按钮可继续浏览,但是less提供更丰富的功能,包括向上翻页、搜索、跳转等
more [file]
cat [file] | more
less [file]
cat [file] | less

# date 显示或设定系统的目期与时间
date
date +"%Y-%m-%d"
# 设定时间,s set
date -s "%Y-%m-%d HH:MM:SS"
# 查看文件a.txt的修改时间,r-reference
date -r [file]

# wc 文件字符信息统计(word count的缩写)
# 输出[file]的行数、字数,以及字节数,等于wc -lwc [file]
wc [file]
wc -l [file]
wc -w [file]
wc -c [file]
# 输出[file 1]和[file 2]的行数、字数以及字节数,以及总的信息
wc [file 1][file 2]


系统常用指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
clear
pwd
指令 --help
# 管道指令,对前一个指令的输出进行处理
|
reboot
#立即关机,h-halt停止
shutdown -h now
# [min]分钟之后关机,若[min]为空则表示1分钟后关机
shutdown -h [min]
shutdown -c

# du 显示目录或文件的大小(du -disk usage的缩写)
# 显示当前文件夹下的总大小,以千字节为单位
du
# 显示当前文件夹下总大小,以字节为单位,s-summarize
du -s
# 以人类可读的单位显示文件夹总大小,h-human-readable
du -sh
du -sh [dir]
du -h ./*

# df 显示磁盘使用情况(disk free的缩写)
df
df -h

# ping 检测主机网络连通性
# 测试当前主机与[主机名称或IP地址]的连通性 需按Ctrl +C手动终止
ping [主机名称或IP地址]
# 仅执行[num]次
ping [主机名称或IP地址] -c [num]
# 以固定间隔ping
ping [主机名称或IP地址] -i [second]

# tar 将多个文档存档或从存档中恢复单个文件(tape archive (磁带存档)的缩写)
# c create,f file,j bzip2,v verbose,x extract,z gzip
# 将[file/dir]压缩为[tar name].tar.gz文件
tar -zcvf [tar name].tar.gz [file/dir]
# 将[file/dir]压缩为[tar name].tar文件
tar -cvf [tar name].tar [file/dir]
# 将[file/dir]压缩为[tar namel.tar.bz2文件
tar -jcvf [tar namel.tar.bz2 [file/dir]
#列出[tar name].tar.gz的文件
tar -tzvf [tar name].tar.gz
tar -zxvf [tar name].tar.gz

# find 在指定目录下查找文件
# 在当前文件夹下查找文件名以fie开头,以txt结尾的文件/文件夹
find ./ -name file*txt
# 在当前文件夹下查找类型为f(file)的文件
find ./ -type f
# 在当前文件夹下查找类型为d(directory)的文件
find ./ -type d

# 任务处理相关指令
Ctr + C
# 暂停当前正在运行的任务
Ctrl + Z
# 恢复被挂起的任务
fg N
# 查看后台任务ID
jobs
# 后台运行[process]指令
[process] &
# 输出重定向
>
# 后台执行不输出
>/dev/null &
# 查看cmd的详尽文档
man [cmd]



vim编辑器

为什么要学vi/vim

  • Linux系统一切皆文件,文件编辑必不可少,
  • 是大多数发行版系统自带的文本编辑器,在任何场景下都可以使用
    • 无网络连接 ->无法远程登录;
    • 无桌面系统 ->无法使用鼠标;
    • 磁盘容量小 ->无法安装其他编辑器

vi和vim的区别

  • 部分发行版预安装vi,但是未安装vim
  • vim是vi的升级版,两者基础指令无差别区别

vim的三种模式

  • 命令模式(Command mode)
  • 插入模式(Insert mode)
  • 底线命令模式(Last line mode)

命令

1
2
3
4
vim [file namel # 进入vim
# 存在 ->打开;
# 不存在 ->新建缓存&打开;
# 若不保存,则文件并不会新建
  • 底线命令模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 命令模式下按: 进入底线命令模式

# 保存相关常用命令
q 不保存,直接退出
q!不保存,并强制退出
e!放弃所有修改,从上次保存文件开始再编辑
w 保存文件,但不退出
w! 强制保存,不退出
wg或x 保存,并退出
wg!强制保存,并退出

# 行号相关常用命令
:set number 显示行号
:set nonumber 隐藏行号

# 搜索相关常用命令
:/word 在文件中搜索word关键字
:%s/[ori]/[mod]/g 将[ori]文字替换成[mod]

# 删除相关常用命令
:start,endd 删除文档start行-end行内容
  • 插入模式
1
# 按i/a/o (input)可进入插入模式
  • 命令行模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 删除相关常用命令
x 删除当前光标所在处的字符
dd 删除当前行-delete
[Number]dd 删除两行,如2dd,删除两行

# 复制相关常用命令
yy 复制整行文本到文件缓冲区-yank
p 将复制的文本粘贴到光标下一行-paste

# 跳转相关常用命令
gg 跳转到文档的第一个字符
G 跳转到文档的最后一个字符
0/Home 跳转到当前行首字符
$/End 跳转到当前行末字符
w光标移动到下一个单词-word

# 撤销相关常用命令
u 撤销上-步-undo
Ctrl+r重做上一步 redo

# 方向键替代相关常用命令
HJKL-在键盘没有上下左右的情况下代替(左下上右)

# 块编辑相关常用命令
Ctrl + V 块选择模式
Ctrl + I 块编辑模式
ESC-退出块编辑



第3章 【基础篇】Linux系统的硬件基石




标题二




Reference




Remark

  1. tar指令还不算特别熟悉需要再深入学习
  2. vim 的块模式需要再熟悉一下,vim还是需要多实践,实践中遇到不会的记录下来
  3. 第三章好需要再看看
  4. top指令还需要继续深入学习呢
1
2
3
4
5
<font color=red></font>
![]()
<img src="" title="图片名称" alt="图片无法正常加载展示!" width="100%" height="100%" >
<img src="" width="70%">
****