先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
#### yum搜索
yum list | grep lrzsz
#### yum安装
yum是先下载再安装
yum install 文件名
yum -y install 文件名
#### yum卸载
yum remove 文件名
-y:对于一些询问表示yes
yum -y remove 文件名
### yum的周边 - yum的整个生态问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/8c9306ffc80b4b8688dac35e8f0c8d13.png)
**1、yum如何得知目标服务器的地址和下载链接?**
配置文件里面会记录下载的地址
ls /etc/yum.repos.d/
这里面对应的都是yum的本地仓库名
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0053ab3c84e847f6909b45697ea09518.png)
其中CentOS-Base.repo就是yum源,可以更改yum源
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/35f5c6d9f095452dab63d5d1e2502347.png)
扩展软件源
yum install -y epel-release
**2、云服务器谁提供的?**
既得利益者提供的
**3、谁提供软件?**
大家愿意写的人开发的
## vim
写代码:vim
编代码:gcc/g++
调代码:gdb
维护项目结构、自动化编译:make/makefile
### 快速介绍vim
**vim是一款多模式的编辑器,vim里面还有很多的子命令,来进行代码的编写操作**
1、进入vim后一般没法写入,需要模式切换,i – insert插入模式
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f7d5daa39ca44e1fb791825a7980cb10.png)
2、写完后按esc退出插入模式 -> shift+;(也就是:)进入低行模式 -> wq(保存并退出)-> 回车
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0d72090ef61c4610b1604cbf90206e99.png)
3、gcc编译,运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ef575d49cfdb445d98bce7d1f62b897f.png)
### vim的模式
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/88b047f0726c47d1a4961ec578e78236.png)
#### 命令模式
插入模式 -> 命令模式:esc
#### 插入模式
命令模式 -> 插入模式 :i/a/o
#### 低行模式
命令模式 -> 低行模式:shift + ;(也就是:)
低行模式 -> 命令模式:esc
### 常见模式 – 命令、低行
#### 命令模式 – 光标的移动
将光标定位到最右侧结尾处:shift+4($)
将光标定位到最左侧开头处:shift+6(^)
将光标定位到文本的最后一行:shift+g(G)
将光标定位到文本的最开始一行:gg
将光标定位到特定一行,例如第五行:5 shift g
h:左
j:下
k:上
l:右
w:以单词为单位向后移动
b:以单词为单位向前移动
#### 命令模式 – 复制粘贴、剪贴、删除
n+yy:复制所在行/多行
n+p:在下一行进行粘贴一次/n次
u:撤销编辑操作,undo
ctrl+r:对刚刚的撤销进行撤销
n+dd:删除/剪切当前行/多行
dd、p:剪切
#### 命令模式 – 小写/大写
shift+`(~):大小写快速切换
#### 替换模式
n+r:替换当前光标所在字符/n个字符
shift+r:替换模式
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/49597213549348a7b7fbe76dbc7febcd.png)
#### 命令模式 – 删除
n+x:删除光标所在字符/后面n个字符(往后删)
n+shift+x:往前删
#### 命令模式 – 查找
shift+3(#):高亮要查找的函数名
n:下一个查找到的函数名/字符串
#### 低行模式
wq:报存并退出
w!:强制写
q!:强制退出
wq!:强制保存并退出
!指令:可以在低行模式执行shell指令
/搜索的内容:
?搜索的内容
vs 文件名:会形成一个并在旁边对比
set nu:调出行号
set nonu:取消行号
vim test.c 行号:光标直接定位到指定行
shift+zz:保存并退出vim(不建议用)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7816968d993e4f738d268d3bbbcb208f.png)
光标在哪个窗口就是在编辑哪个窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/15ecca1fa2004adfa2e4c1d69de0d958.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fdcd3ae7b49c4c0a81ac3db38b938f68.png)
#### 多窗口的光标移动
ctrl+ww
#### 批量化注释/去注释
**批量化注释**
1、ctrl+v:进入VISUAL BLOCK模式
2、按hjkl进行区域选择
3、shift+i:从VISUAL BLOCK模式切换成插入模式
4、//
5、按esc
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4c35be547051444280c4f4a538e60071.png)
**批量化去注释**
1、ctrl+v:进入VISUAL BLOCK模式
2、hjkl选择区域
3、按d
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/48d8b238f4c7449a9bf92f75079a5b79.png)
### 配置问题
1、进入用户家目录下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/842456c6fab04417bd3a1d2548ea131f.png)
2、创建.vimrc
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/46ebf80b7a5b49f8a5c55e591a8f6d7a.png)
3、vim .vimrc进行配置
set nu //显示行号
set cursorline //突出显示当前行
hi Cursorline cterm=bold ctermbg=black ctermfg=green guibg=green //粗体显示选中行,用黑色框,字体标绿
set cursorcolum //设置列高亮
set autoindent //自动缩进
set softtabstop=4 //统一缩进为4
set tabstop=4 //tab缩进为4
set cindent
set shiftwidth=4
set smartindent //提供自动缩进
syntax on //语法高亮
inoremap ’ ‘’i //自动补齐
inoremap " “”i
inoremap < <>i
inoremap ( ()i
inoremap [ []i
inoremap { {}O
>
> 简便配置方法:
> `curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh`
> 一定在普通账号下运行
>
>
>
### 解决sudo的白名单
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/df8a358e82a74887ab220487fc1429e8.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4d0da8b843934877b6ebba6a65877b2d.png)
得有root账户改
vim /etc/sudoers
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/35b12ba4408e4f0984c6057c05b3c941.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2e6de0f0694a4c52bc8441efedb85e81.png)
## gcc/g++
### 程序的翻译过程及gcc选项
编译C语言是默认是a.out,如果想要指定名称的话,下列两种方法。
默认形成
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d990e85c32e04286b30253a95c4c059c.png)
指定名称
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/88ad0ac71b084f0f940500b8cea1d487.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/270ebed3e10c475e9d42a047109b37e6.png)
凡是和 -o 紧邻的是形成的可执行程序
1 #include <stdio.h>
2 #define M 100
3
4 int main()
5 {
6 printf(“hello linux\n”);
7 printf(“hello linux: %d\n”, M);
8 //printf(“hello linux\n”);
9 //printf(“hello linux\n”);
10 //printf(“hello linux\n”);
11 //printf(“hello linux\n”);
12 //printf(“hello linux\n”);
13
14 return 0;
15 }
#### 预处理
头文件展开:本质在预处理的时候,将头文件内容拷贝至源文件
去注释
宏替换
条件编译
gcc -E test.c -o test.i
-E : 从现在开始进行程序的翻译过程,预处理做完的时候就停下来
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/01cf6793fdf042f7a11ca8792e6ceaef.png)
上面多出的八百多行代码都是头文件展开
##### 条件编译
条件编译的本质:对代码进行裁剪
1 #include <stdio.h>
2 #define VERSION1 1
3 // #define VERSION2 2
4
5 int main()
6 {
7 printf(“hello linux\n”);
8 #ifdef VERSION1
9 printf(“hello version1.0\n”);
10 #elif VERSION2
11 printf(“hello version2.0\n”);
12 #else
13 printf(“hello free version\n”);
14 #endif
15 //printf(“hello linux\n”);
16 //printf(“hello linux\n”);
17 //printf(“hello linux\n”);
18 //printf(“hello linux\n”);
19 //printf(“hello linux\n”);
20
21 return 0;
22 }
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d0eeb5ac21524b69b8a7b110e133db83.png)
将test.c里面的两个宏都注释掉,可以在gcc指令里面添加宏 -D
gcc test.c -o test.exe -D VERSION1=1
gcc test.c -o test.exe -DVERSION1=1
//可以连着也可也不连着
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/13a934a2bd484473b875dd9012646ca7.png)
>
> 应用场景
> 1、对于软件的专业版与社区版,维护一份代码,可以用条件编译对里面的功能进行裁剪
> 2、头文件定义上,防止头文件被重复包含
>
>
>
#ifndef __CODE_H__
#define __CODE_H__
// XXXX
#endif
#### 编译
**C -> 汇编**
从test.c开始也许, -S 从现在开始进行语言的翻译,当编译工作完成就停止
gcc -S test.i -o test.s
形成汇编语言
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2f140e16a48d4c4a82dc8c07a9a4e46c.png)
#### 汇编
汇编 -> 二进制,可重定位目标二进制文件(**不能执行**)
test.o : 可重定位目标二进制文件
gcc -c test.s -o test.o
vim是文本编辑器,所有对于二进制展现出来是乱码
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9666e318041149cebdbab8171ba2aca4.png)
#### 链接
将可执行程序与库关联起来
gcc -o test test.o
ldd 命令可以查询一个可执行文件所依赖的库
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2d2d50be2245424fb48f6e725e1c4cb4.png)
其中/lib64/libc.so.6就是所用的C语言的库
### g++
**1、编译失败问题**
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4365990856624e298db359373fbde234.png)
输入下列指令
sudo yum -y install gcc+ gcc-c++
**2、编译形成指定名称的可执行程序**
C语言也可以用g++编译,g++的选项与gcc一样
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ab7e8cd176e84038a789b65f5ddc1991.png)
g++ test.c -o mybincpp
g++ -o mybincpp test.c
### 动静态库的理解 – 链接
我们所写的代码都是代码+调用的库
库让我们写一份代码不用从零开始
都是文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/844ece53fbfd48919a09d13924308278.png)
下面这个是个动态库
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4a3ff0d356334a5f807e86f78fe752ed.png)
去掉lib(所有库都以这个开头),去掉.so.6,所有这个库是个c库
动态库 -> 动态链接
静态库 -> 静态链接
>
> **动态库**
> 优点:节省资源,不会出现太多的重复代码 — 资源(磁盘、内存、网络(如果你在一个网站上传一份重复很多的代码,那别人下载也是在浪费资源)等)
> 缺点:对库的依赖性比较强,一旦库丢失,所以使用这个库的程序都无法运行
> **静态库**
> 优点:不依赖库,同类型平台中都可以直接运行使用
> 缺点:可执行程序体积比较大,比较浪费资源 — 资源(磁盘、内存、网络(如果你在一个网站上传一份重复很多的代码,那别人下载也是在浪费资源)等)
>
>
>
#### 动态链接、动态库
被多个使用者共享使用,一旦缺失,所有程序都不可以运行了!!
我们调用哪个库,只是在代码中指明库的地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/84dc31d899ad45ae89449f66e1e536e0.png)
### 静态链接、静态库
代码中我们用到哪个库,直接硬拷过来,成为静态链接
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/346d331faeb94127b87b93e0c4f9cda9.png)
ldd
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-5nuhaO0b-1713461247051)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!