From 08929625cd79d8cb6fbda932d808022899b44001 Mon Sep 17 00:00:00 2001
From: yaml <17622739710@163.com>
Date: Thu, 19 Jun 2025 09:49:48 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?=
=?UTF-8?q?=20/?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
linux系统管理.md | 1552 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1552 insertions(+)
create mode 100644 linux系统管理.md
diff --git a/linux系统管理.md b/linux系统管理.md
new file mode 100644
index 0000000..4eab2fd
--- /dev/null
+++ b/linux系统管理.md
@@ -0,0 +1,1552 @@
+centos官网:[https://centos.org/](https://centos.org/)
+
+rockylinux官网:[https://rockylinux.org/zh-CN](https://rockylinux.org/zh-CN)
+
+nginx官网:[https://nginx.org/](https://nginx.org/)
+
+apache官网:[https://apache.org/](https://apache.org/)
+
+linux发行版本: centos redhat ubuntu debian
+
+## 第一章:linux系统管理
+### linux的目录结构及文件类型
+目录结构
+
++ which:获取命令对应的二进制文件存放位置
++ bin:命令文件 二进制文件 程序文件(普通用户)
++ sbin:命令文件 二进制文件 程序文件(管理员用户)
++ root:默认存放root用户的家目录 ~/当前用户家目录
++ home:默认存放普通用户的家目录
++ var:默认存放有变化的文件、比如日志
++ mnt:默认挂载
++ dev:默认存放设备文件
++ proc:虚拟文件
++ etc:默认存放配置文件的目录
++ tmp:临时文件
+
+
+
+文件类型
+
++ — 普通文件 (文本文件,二进制文件,压缩文件,电影,图片)
++ d 目录文件 (蓝色)
++ b 设备文件(块设备)存储设备硬盘,U盘/dev/sda,/dev/sda1
++ c 设备文件(字符设备)打印机,终端,/dev/tty1,/dev/zero
++ s 套接字文件
++ p 管道文件
++ l 链接文件(深蓝色)
+
+
+
+### vim编辑器操作及使用
+编辑模式:使用i键,进入编辑模式可以修改
+
+命令模式:默认进入命令模式,该模式可以看到文件内容,不能编辑
+
+可视模式:第一列注释 ctrl + v shift+i # Esc两下
+
+尾行命令模式::wq!
+
+
+
+| GG | 光标移动到最后一行 |
+| --- | --- |
+| gg | 光标到行首 |
+| dd | 删除光标所在行 |
+| dG | 删除光标的下面的行 |
+| u | 撤销 |
+| yy | 复制 |
+| p | 粘贴 |
+| D | 删除光标后的内容 |
+
+
+
+
+vi编辑器查找替换
+
+语法格式:行s/替换的内容/替换成谁/
+
+查找 在命令模式下输入“/”进入行尾命令模式 要查找的内容 /root
+
+ n:从上往下查看 N:从下往上查看
+
+```plain
+替换:%s/root/ROOT/ 从首行到最后一行替换,只能替换每一行第一个匹配到的
+
+%s/root/ROOT/g 从首行到最后一行,只要匹配到全部替换
+
+5,10s/.*/#&/ 5行到10行每一行开头加一个#
+
+4,9s/^#// 4行到9行每行开头的#删除
+```
+
+
+
+
+
+临时查看和取消行号
+
+```plain
+set nu
+set nonu
+set list 查看空格
+set ic 不区分大小写
+```
+
+
+
+永久设定行号
+
+```plain
+/etc/vimrc里面加 set nu
+```
+
+
+
+如果出现非正常关闭文件
+
+```plain
+
+非正常关闭,再次编辑文件以.swp结尾的隐藏文件
+
+解决方案:q退出 然后删除.swp结尾的
+```
+
+
+
+### Linux用户和组管理
+特性:多用户多任务 多个用户在同一个系统中同一时间执行的不同的任务,他们互相不影响
+
+权限管理机制:每个用户拥有自己的权限
+
+默认的自带的超级管理用户:root
+
+
+用户管理
+
++ useradd 用户名字 **创建用户**
++ useradd -u 1000 用户名字 **指定用户uid**
++ useradd -d 用户名字 /opt/xiaoshun **指定用户家目录**
++ useradd -s /bin/sh 用户名字 **指定登录shell**
++ useradd -r 用户名称 **创建系统用户**
+
+
+
+设置用户密码
+
+```plain
+passwd 用户名字 用户设置密码
+```
+
+
+
+切换用户
+
+```plain
+su - 用户名字
+```
+
+
+
+获取当前使用的用户名
+
+```plain
+id -un
+```
+
+
+
+
+
+修改用户
+
++ usermod -s /sbin/nologin 用户名 **禁止用户登录**
++ usermod -u 用户名 1000 **修改已创用户uid**
++ usermod -l 新的用户名 旧的用户名 **修改用户名**
++ usermod -L 用户名 **锁定密码**
++ usermod -U 用户名 **解开密码**
++ usermod -G 用户2 用户1 **用户1加入到用户2组里(用户1有两个组)给用户附加组**
++ usermod -aG 组名 用户名 **用户附加组 修改用户属组**
++ userdel -r 用户 **删除用户**
+
+****
+
+**添加用户发生变化的文件**
+
+```plain
+/var/spool/mail 邮箱
+
+/etc/group 存放组信息配置文件
+
+/home 家目录
+
+/etc/shadow 存放用户密码的(第二列密码是经过加密处理的)
+
+/etc/passwd 系统中的所有用户的信息
+```
+
+****
+
+**用户组管理**
+
+一个用户至少包含一个组
+
+
+
+用户组管理
+
++ groupadd 组名 创建组
++ groups 组名 查看用户组
++ groupmod -n 新组名 旧组名 修改组名字
++ groupmod -g 新GID 组名 修改GID
++ gpasswd -a 用户 组名 添加用户到组
++ gpasswd -M 用户1,用户2 组名 添加多用户到组
++ gpasswd -d 用户 组名 从组删除用户
++ groupdel 组名 删除组
+
+
+
+用户提权
+
+让普通用户具备管理员权限,执行管理员命令
+
+```plain
+ root ALL=(ALL) ALL
+```
+
+
+
+超级管理员用户 root 标识 UID 0
+
+系统用户 标识 UID 1-999 包含14和999 0<UID<999
+
+普通用户 标识 UID UID>=1000
+
+
+
+
+
+### linux系统管理权限
+基本权限UGO
+
++ U 代表user 用户 所有者
++ G 代表Group 组 所属组
++ O 代表Other 其他人
+
+-rw-r--r-- 1 user root 945 Jan 22 18:53 passwd
+
+对应的所有者:user 对应的所属组:root
+
+
+
+基本权限针对文件
+
++ r 读 4 读取文件的内容 cat vim/vi(读)
++ w 写 2 编辑该文件 vi vim(写入文件)
++ x 执行 1 执行该文件(脚本) bash sh ./ /
+
+ 就算一个文件没有执行权限,我们可以使用bash或者sh的命令执行文件,但是如果一个文件没有执行权限,不能用./或者执行文件
+
+
+
+文件的默认权限是:644
+
+目录的默认权限是:755
+
+
+
+权限设置
+
+**修改基本权限:chmod**
+
+**数字方式**:chmod 564 tiantian //这个文件权限:所有者读和执行,所属组读和写,其他人读
+
+**字母方式:** chmod u+x tiantian //增加,给tiantian文件所有者增加x权限
+
+
+
+**将/opt/dir目录下的所有内容设置权限为777,包括dir1目录下的所有文件,也包括了dir目录**
+
+```plain
+chmod 777 /opt/dir -R
+```
+
+
+
+**将/opt/dir/目录下所有内容设置权限为644,包括dir1目录下的所有文件,不包括dir目录**
+
+```plain
+chmod 644 /opt/dir/\* -R
+```
+
+
+
+修改所有者所属组:chown
+
+**修改tiantian文件所有者为user1000,所属组为group2000**
+
+```plain
+chown user1000,group2000 tiantian
+```
+
+
+
+高级权限
+
+suid权限:给命令文件设置权限,当给命令文件设置了suid权限后,无论那个用户执行该命令,都会变成这个命令文件所有者的用户去执行 符合 s 对象 u 文件
+
+```plain
+ chmod u+s 命令文件
+```
+
+****
+
+sgid权限:组继承权限 对象 g 符号s 针对目录
+
+目录的所属组假设是hr,如果设定了sgid权限,那么在该目录下创建的新文件都会继承目录的属组hr
+
+```plain
+chmod g+s 目录名
+```
+
+****
+
+sticky权限:防止别人误删除 符号 t 对象 o 针对目录
+
+```plain
+chmod o+t 目录名
+```
+
+
+
+umask
+
+umask 权限掩码 创建文件的时候,文件默认权限跟umask有关联 默认情况下,umask的值为022 所以创建的文件默认权限644,目录默认权限755
+
+修改umask:umask + 掩码 最大777 最小000
+
+文件默认权限=0666-0022=0644
+
+目录默认权限=0777-0022=0755
+
+
+
+文件属性
+
+a:能看 能追加 不能删除
+
+i:只能看,其他啥也干不了
+
+chattr: + -
+
+lsattr:查看
+
+
+
+### linux进程使用管理
+ps aux
+
+第一列:进程的拥有者
+
+第二列:PID 进程ID 唯一标识一个进程
+
+第三列:cpu使用的百分比
+
+第四列:mem(内存)使用率
+
+第七列:终端
+
+第八列:进程的状态
+
++ Ss s进程的领导者,父进程
++ S< <优先级较高的进程
++ SN N优先级较低的进程
++ R+ +表示是前台的进程组
++ Sl 以线程的方式运行
+
+最后一列:进程的名字
+
+
+
+按照cpu使用率从大到小
+
+```shell
+ps aux --sort -%cpu | less
+```
+
+****
+
+按照mem使用率从大到小
+
+```shell
+ps aux --sort -%mem |less
+```
+
+
+
+按照cpu使用率从大到小查看前四行去掉USER重定向到/tmp/1.txt上
+
+```shell
+ps aux --sort -%cpu | head -4 | grep -v USER > /tmp/1.txt
+```
+
+
+
+获取服务的pid
+
+```shell
+pidof dockerd
+```
+
+
+
+w who 都可以看到谁正在远程链接我,能够获取到对方ip地址、终端编号、对应的用户
+
+w 还可以看服务器的运行时间、用户数量、平均负载
+
+uptime 看cpu平均负载
+
+
+
+动态进程top
+
+快捷键:P:将cpu使用率排序 M:将%mem使用率排序 R:排序反转
+
+操作系统两种cpu状态 内核态 用户态
+
+
+
+top的整体信息
+
+```shell
+top分为上下两部分上面是机器整体负载情况,下面是单个进程的负载情况
+
+ load average代表cpu每1分钟,5分钟,15分钟的平均负载
+
+ us 用户空间占用cpu的百分比
+
+ sy 内核空间占用cpu的百分比
+
+ ni 调整过优先级的进程占用cpu的百分比
+
+ id cpu空闲百分比
+
+ wa io等待占用cpu百分比
+
+ hi 硬中断占用cpu百分比
+
+ si 软中断占用cpu的百分比
+```
+
+
+
+free -m/h 看内存的使用率
+
+total 总量 used使用量 free空闲量 buff/cache 缓存中的内存
+
+
+
+网络进程
+
+netstat -auntpl
+
+ss -auntpl
+
++ -a:所有
++ -u:查看upd进程
++ -p:pid
++ -n:显示数字
++ -l:监听
++ -t:查看tcp进程
+
+
+
+显示所有的 TCP 连接和监听端口,以及与之相关联的进程信息
+
+```shell
+ss -antpl
+```
+
+
+
+显示所有的 TCP 连接和监听端口,以及与之相关联的进程信息
+
+```shell
+netstat -antpl
+```
+
+
+
+显示所有的 UDP 连接和监听端口,以及与之相关联的进程信息
+
+```shell
+ss -tnupl
+```
+
+
+
+数据传输
+
+ TCP:传输控制协议
+
+ udp:用户数据报协议
+
+
+
+tcp状态
+
++ CLOSED(关闭状态)初始状态,表示TCP连接未建立
++ LISTEN(监听状态)。服务器等待客户端连接的状态
++ SYN SENT(同步已发送状态)。客户端发送连接请求后等待服务器确认的状态。
++ SYN RECEIVED(同步已接收状态)。服务器接收到客户端连接请求并发送确认后的状态。
++ ESTABLISHED(已建立状态)。表示TCP连接已成功建立,双方可以进行数据传输。
++ FIN WAIT 1(等待对方FIN报文状态)。表示TCP连接的一方发送了关闭连接请求。
++ FIN WAIT 2(等待对方关闭连接请求状态)。表示TCP连接的一方等待对方发送关闭连接请求。
++ TIME WAIT(等待状态)。表示TCP连接关闭后的等待状态,用于确保数据的可靠传输。
++ CLOSE WAIT(等待关闭状态)。表示TCP连接的一方接收到了对方的FIN报文,但尚未发送ACK。1
++ LAST ACK(最后确认状态)。表示TCP连接关闭前的最后确认状态,等待对方的FIN报文。3
++ CLOSING(关闭状态)。表示TCP连接正在进行关闭过程
+
+
+
+kill
+
++ kill -1 重新加载进程或重新加载配置文件
++ kill -9 给进程发送一个强行终止的信号
++ kill -15 正常杀死
++ kill -18 激活进程 //挂起,在次激活时服务对应进程的PID会改变不能
++ kill -19 挂起进程
+
+
+
+pkill
+
++ pkill -9 -t pts/2 //指定终端干掉
++ pkill -9 -u 用户 //干掉指定用户进程
+
+
+
+### linux磁盘分区管理
+机械硬盘(HDD)
+
+固态硬盘(SSD)
+
+分布式存储 HDFS CEPH
+
+云存储
+
+对象存储 minio OSS
+
+
+
+raid 0
+
+```shell
+raid 0分为2种,分别为单盘0和全盘0
+
+raid全盘0 最少需要2块盘 磁盘空间利用率为100% 没有冗余没有容错
+
+raid0把连续的数据分散到多个磁盘上存取
+
+raid单盘0 只需要一块磁盘 常用于新服务器安装操作系统
+```
+
+
+
+raid 1
+
+```shell
+raid 1 只能2块磁盘做。
+
+镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
+
+优点:提供数据冗余,支持容错,读速度快
+
+缺点:写速度慢,磁盘利用率不高
+
+磁盘利用率:50%
+```
+
+
+
+raid 5
+
+```shell
+raid5最少需要3块磁盘。它的校验数据分布在阵列中的所有磁盘上。
+
+优点:1.可以找回丢失的数据2.冗余磁盘,当某一块磁盘坏掉后,冗余磁盘会自动替换上去3.读写速度高4.磁盘利用率高
+
+缺点:1.磁盘越多安全性能越差
+
+利用率 n-1/n
+```
+
+
+
+raid 6
+
+```shell
+raid6: 两块存校验位。RAID6引入双重校验的概念
+
+最少需要四块磁盘,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
+
+优点:1.容错:允许两块磁盘同时坏掉。读快。
+
+缺点:1.写入速度差
+
+2.成本高
+
+3 磁盘利用率 n-2/n
+
+应用场景:对数据安全级别要求比较高的企业
+```
+
+
+
+raid1+raid5 全都是机械硬盘
+
+raid1+raid5 机械盘+固态盘 混搭
+
+raid1用机械装系统
+
+raid5用固态存数据
+
+raid1+ssd_raid5
+
+raid 阵列选型: 根据服务特点,和数据相关做有冗余的阵列,数据要求极高的就做最高的安全性raid。
+
+根据业务特点,数据重要程度,去选择冗余度高和低的raid阵列
+
+
+
+磁盘分区
+
+lsblk 查看磁盘分区
+
+MBR fdisk 命令最多分4个主分区
+
+GPT gidsk 命令可以分128个主分区
+
+磁盘大于2T不可以使用fdisk命令,必须要用gdisk命令,可以分128个主分区
+
+
+
+fdisk
+
++ n:添加分区
++ p:主分区
++ e:扩展分区
++ w:保存退出
++ q:退出不保存
+
+
+
+gdisk
+
++ n:添加分区(1-128)
++ p: 查看分区
++ d:删除分区
++ w:保存退出
++ q:退出不保存
+
+
+
+文件系统
+
++ linux:xfs ext4 ext3 nfs
++ window:NTFS FAT32
+
+格式化:磁盘或磁盘分区设定文件系统类型
+
+ 磁盘有空间,本身容量100G,现在还显示10G,但是无法存放数据,ext家族文件系统,inodes耗尽造成无法存储文件
+
+
+
+格式化方式
+
++ mkfs.xfs -f 设备名称
++ mkfs.ext4 设备名称
+
+
+
+临时挂载(重启失效)
+
++ mount 设备名称 挂载点(目录)
++ umount 设备名称 挂载点 (目录)
+
+mount -o rw centos-7-x86 64-Minima1-2009.iso /opt/centos/ 把镜像挂载在opt/centos目录上 rw是读写权限
+
+
+
+永久挂载
+
+```plain
+ 第一列:设备(设备名称。设备uuid标识)
+
+ 第二列:挂载点(本质就是目录)
+
+ 第三列:文件系统类型(xfs ext4 nfs)
+
+ 第四列: 属性 rw remount defaults
+
+ 第五列+第六列: 0 0 不备份 不检查
+```
+
+```plain
+/dev/sdc /opt/1 ext4 defaults 0 0
+```
+
+
+
+uuid挂载
+
+blkid /dev/sda
+
+/dev/sda: PTUUID="770490bd" PTTYPE="dos"
+
+```plain
+UUID="25d22b48-8e46-494b-a12c-ae80a4297808" /opt/1 xfs defaults 0 0
+```
+
+
+
+物理卷
+
++ pvcreate /dev/磁盘名称(sdb) **创建物理卷**
++ pvremove /dev/磁盘名称(sdb) **删除物理卷**
++ pvs **查看物理卷**
++ pvmove /dev/sdb /dev/sdd **数据迁移 sdb-->sdd**
+
+****
+
+卷组
+
++ vgcreate 卷组名(vg1)/dev/磁盘名(sdb) **创建卷组**
++ vgextend 卷组(vg1) /dev/磁盘名(sdb) **将物理卷加入到卷组**
++ vgremove 卷组名(vg1) **删除卷组**
++ vgreduce 卷组名(vg1) /dev/磁盘名(sdb) **将物理卷从卷组中移除**
++ vgs **查看卷组**
+
+****
+
+逻辑卷
+
++ lvcreate -L 磁盘容量大小(2G) -n 逻辑卷名(lv1) 卷组名(vg1) **创建逻辑卷**
++ lvremove /dev/卷组名(vg1)/逻辑卷名(lv1) **删除逻辑卷**
++ lvextend -L 磁盘容量(+5G) -n /dev/卷组名(vg1)/逻辑卷名(lv1) **逻辑卷扩容**
++ lvreduce -L 20G /dev/centos/root **自定义逻辑卷的容量**
++ lvs 查看逻辑卷
+
+
+
+扩容/分区
+
++ **pvcreate /dev/sdb 创建物理卷**
++ **vgextend centos /dev/sdb 将物理卷加入centos卷组**
++ **lvextend -L +5G /dev/centos/root 逻辑卷扩容5G**
++ **xfs_growfs 要扩容的lv的path(/dev/centos/root) 整合文件系统**
+
+扩容完要整合文件系统
+
+
+
+
+
+准备一个正在被使用逻辑卷并且文件系统ext4
+
+```plain
+ - lvcreate -L 2G -n lv2 vg1
+ - mkfs.ext4 /dev/vg1/lv2
+ - mkdir /opt/lv2
+ - vi /etc/fstab /dev/vg1/lv2 /opt/lv2 ext4 defaults 0 0
+ - mount -a 验证 df -Th
+ - lvextend -L 5G /dev/vg1/lv2
+ - 判断文件系统为ext4 所以使用
+ - resize2fs /dev/vg1/lv2
+```
+
+
+
+逻辑卷格式化流程
+
++ 先取消挂载
++ 在删除逻辑卷
++ 删除卷组
++ 删除物理卷
++ 格式化
+
+
+
+
+
+swap交换分区 防止内存溢出造成系统奔溃
+
+swap分区大小设置规则
+
+内存小于4G时,推荐不少于2GB的swap空间
+
+内存4GB~16GB,推荐不少于4GB的swap空间
+
+内存16GB~64GB,推荐不少于8GB的swap空间
+
+内存64GB~256GB,推荐不少于16GB的swap空间
+
+
+
+制作swap分区
+
+先用fdisk做一个分区
+
+```plain
+mkswap /dev/sdb 格式化分区
+
+swapon /dev/sdb 激活swap分区
+
+swapoff /dev/sdb 关闭swap分区
+```
+
+
+
+文件链接
+
+软链接
+
++ ln -s 源文件(/roo/zhangsan) 目的地(/opt)
++ 普通文件和目录都支持软连接
++ 软连接源文件跟链接文件inode号不同
++ 软连接源文件删除后,链接文件不可用
++ 软连接可以跨分区
+
+
+
+硬链接
+
++ ln 源文件 目的地
++ 文件可以创建硬链接,目录不可以
++ 硬链接inode不变
++ 硬链接源文件删除后,链接文件可以使用
++ 硬链接不可以跨分区
+
+
+
+### linux文件find查找
+find 位置/路径 条件 值 动作
+
+
+
+条件
+
++ -name 文件名字
++ -type 文件类型 普通文件 f 其他和文件类型一样
++ -size 文件大小 +5M 大于5M 5M 在5M范围内
++ -user 查找所有者
++ -group 查找属组
++ -perm 权限 指定 644 755
++ -mtime 修改时间 atime 访问时间 ctime 改变时间 mtime 修改时间
+
+
+
+多条件
+
++ -a and // 条件都要满足
++ -o or //条件满足其中一个
+
+
+
+动作
+
+__
+
+_find /opt -name "3" -exec mv {} /mnt ;_
+
++ -exec ; 格式
++ {} 承接查到的内容
++ mv 文件操作命令
+
+
+
+find /opt/ -name "*2" |xargs -i mv {} /mnt
+
+
+
+
+
+linux压缩解压缩
+
+window: .rar .zip
+
+linux:.zip .tar.gz tar.bz2 .tar.xz
+
+
+
+打包压缩:tar czf 路径/压缩包的名字 压缩的文件
+
+```shell
+tar czf /opt/docker-ce.tar.gz docker/
+```
+
+
+
+
+
+解压缩:tar xzf 压缩包名字
+
+指定位置解压: -C
+
+tar tf 不解压直接查看内容
+
+```shell
+tar xzf docker-ce.tar.gz -C /root/
+```
+
+
+
+
+
+查看/etc目录下所有以.conf结尾的文件并进行压缩,压缩到/opt目录下命名为conf.tar.g
+
+```shell
+
+ find /etc -name "\*.conf" |xargs -i tar rf /opt/conf-1.tar.gz{}
+```
+
+
+
+zip包
+
+解压缩:unzip 压缩包名字
+
+指定位置解压: unzip -d /opt/ nextcloud-22.0.0.zip
+
+
+
+gunzip
+
+解压.gz结尾的包 如果没有gunzip,使用yum -y install gzip
+
+
+
+
+
+### linux软件包管理
+
+
+rpm包管理
+
+rpm网站:[https://rpmfind.net/](https://rpmfind.net/)
+
+二进制包 .rpm结尾 有依赖关系
+
++ rpm -qa | grep 服务名 **找安装包**
++ rpm -ql 服务名 **启动服务**
++ rpm -e s1-5.02-1.e17.x86 64.rpm **卸载**
++ rpm -qa **获取已经安装的所有包**
+
+```shell
+软件名字 版本号 发行版本 平台架构 后缀
+```
+
+
+
+
+
+yum软件包管理
+
++ install
++ remove
++ reinstall 重新安装
++ provides 查找包名
++ info 查找包的详细信息
++ update 更新服务
++ list 列出所有包
++ repolist 列出所有的仓库
++ clean all 清除缓存
++ makecache fast 快速生成缓存
+
+
+
+yum list | grep show
+
+```shell
+yum list --showduplicates docker-ce(服务名全称) 列出你可以安装的版本都有哪些
+yum -y install docker-ce-3:20.10.12-3.el7 指定版本安装
+```
+
+
+
+内网下载
+
+```shell
+dnf -y install --downloadonly --downloaddir=docker-ce/ docker-ce-3:20.10.24-3.el9.x86_64
+
+--downloadonly 只下载不安装
+--downloaddir 指定安装目录
+dnf -y install ./*rpm 内网直接安装
+```
+
+
+
+yum仓库
+
+```shell
+[base]
+
+name=CentOS-\$releasever - Base - mirrors.aliyun.com 指定仓库的名字
+
+baseurl= 仓库地址
+
+enabled=1 1开启 0关闭 仓库是否启用
+
+gpgcheck=1 是否校验 1开启 0关闭
+
+gpgkey=
+```
+
+
+
+源码包
+
+
+
+源码编译安装(nginx)
+
+```shell
+源码编译安装(nginx) https://nginx.org/ nginx的官网
+```
+
+
+
+1.获取nginx的源码包
+
+```shell
+wget https://nginx.org/download/nginx-1.24.0.tar.gz
+
+tar xf nginx-1.24.0.tar.gz
+```
+
+
+
+2.编译安装准备所需要的环境
+
+```shell
+yum -y install apr apr-util ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
+```
+
+
+
+3.配置
+
+```shell
+./configure --prefix=指定位置(/opt/nginx)
+```
+
+
+
+4.编译
+
+```shell
+make
+```
+
+
+
+5.安装
+
+```shell
+make install
+```
+
+
+
+测试
+
+```shell
+获取项目源码包:wget
+安装解压工具:yum -y install unzip
+解压源码包:unzip love.zip
+拷贝源码到网站发布目录下:cp -r love/\* /opt/nginx/html/
+
+启动nginx : /opt/nginx/sbin/nginx 执行的是安装目录下的sbin目录下nginx的文件
+关闭nginx: killall -9 nginx
+```
+
+
+
+
+
+## 第二章:linux网络协议
+### linux网卡解析
+
+
+### DNS解析
+1. **输入网址**:
+
+用户在浏览器中输入网址([例如www.example.com](http://xn--www-uc0ep96b.example.com/))并按下回车。
+
+2. **本地 DNS 缓存查询**:
+
+计算机首先检查本地 DNS 缓存,看看是否已经保存了该域名对应的 IP 地址。
+
+3. **向本地 DNS 服务器发起请求**:
+
+如果本地 DNS 缓存中没有找到对应的 IP 地址,计算机会向本地 DNS 服务器发起请求。
+
+4. **递归查询开始**:
+
+本地 DNS 服务器开始递归查询过程,向根域名服务器发起查询请求。
+
+5. **向根域名服务器查询**:
+
+根域名服务器知道整个互联网的域名分布情况,但它不知道具体域名对应的 IP 地址。根域名服务器会将查询转发给顶级域名服务器。
+
+6. **向顶级域名服务器查询**:
+
+顶级域名服务器知道每个顶级域名([如.com](http://xn--bvs.com/)、.net、.org等)的权威 DNS 服务器地址。本地 DNS 服务器向顶级域名服务器查询该域名的权威 DNS 服务器的 IP 地址。
+
+7. **向权威 DNS 服务器查询**:
+
+顶级域名服务器返回权威 DNS 服务器的 IP 地址后,本地 DNS 服务器向权威 DNS 服务器发起查询请求,请求该域名对应的 IP 地址。
+
+8. **返回 IP 地址**:
+
+权威 DNS 服务器查询到该域名对应的 IP 地址后,将其返回给本地 DNS 服务器。
+
+9. **返回给客户端**:
+
+本地 DNS 服务器收到 IP 地址后,将其缓存,并将其返回给客户端(例如您的计算机)。客户端收到 IP 地址后,就可以使用它来建立与目标网站的连接,开始浏览网页或进行其他网络活动。
+
+
+
+
+
+
+
+## 第三章:linux常用命令指南
+### linux重定向
++ 0 标准输入
++ 1 标准正确输出
++ 2 标准错误输出
++ > 覆盖
++ >> 追加
+
+1> 标准正确输出重定向覆盖
+
+1>> 标准正确输出重定向
+
+2> 标准错误输出重定向覆盖
+
+2>> 标准错误输出重定向追加
+
+& === 1+2 混合输出
+
+
+
+重定向案例
+
+```shell
+cat >>/opt/tiantian.b <\| 管道的作用 前一条命令执行后的结果交给后一条的执行
+
+
+
+### linux三剑客
++ cat 参数-n(显示行号)文件名
++ head 指定行数 从前往后 默认看前10行
++ tail 指定行数 从后往前 默认看后10行
++ tail -f 实时的查看
++ more less 翻页查看
+
+
+
+sort 排序 默认从小到大
+
++ -r 反转
++ -n 按照数值排序
++ -k 指定字段(按列分)
+
+
+
+uniq 去重复(只能对一个字段,必须要排序在去重复)
+
++ -c 去重
+
+
+
+awk 字符处理工具
+
+cat 1.txt | awk -F':' 'NR==10{print $5}' ##NR指定目标所在行
+
+awk `$NF 最后一列 $``(NF-1) 倒数第二列
+
++ -F 指定分隔符
+
+
+
+grep 过滤
+
++ -v 反向查找,只打印不匹配的行
++ -i 忽略大小写进行匹配
++ -n 显示匹配行的行号
+
+
+
+
+
+wc 统计
+
++ -l 统计行数
+
+
+
+
+
+access.log 日志文件 nginx访问日志
+
+
+
+获取到所有的ip地址
+
+```shell
+cat access.log | awk '{print \$1}'
+```
+
+
+
+获取到所有ip的个数(统计某一网站访问次数:统计某一网站pv量)
+
+```shell
+cat access.log | awk '(print \$1)' | wc -l
+```
+
+
+
+获取所有的IP地址(去重)(统计某个网站访问的人有那些)
+
+```shell
+cat access.log | awk '{print \$1}' | sort -n | uniq
+```
+
+
+
+统计某一网站访问人数(uv)
+
+```shell
+cat access.log | awk '{print \$1}' | sort -n | uniq | wc -l
+```
+
+
+
+每个ip地址的个数(每次ip访问的次数)
+
+```shell
+cat access.log | awk '{print \$1}' | sort -n | uniq
+```
+
+
+
+获取访问次数前三的人/ip地址
+
+```shell
+cat access.log | awk '{print \$1}' | sort | uniq -c | sort -rn | head -3
+```
+
+
+
+
+
+### linux基础命令
+ls参数使用
+
+```bash
+ls -l :显示文件的详细信息 或者 使用 ll
+ls -lh :以单位显示
+ls -i :显示文件的inode号
+ls -a :显示隐藏文件
+```
+
+
+
+date时间使用
+
+date:查看时间和日期、修改时间和日期
+
+```bash
+ 获取当前日期:date +%F F:日期
+
+ 获取当前时间:date +%H:%M:%S H:时 M:分 S:秒
+
+ 获取周几: date +%w w:周
+
+ 获取日期+时间 date +%F-%T
+
+ touch `date +%F` 创建当前时间的文件
+
+ date -s 3:00 //指定时间
+```
+
+
+
+
+
+## 第四章:linux常用服务管理
+### ntp时间服务
+timedatectl set-timezone Asia/Shanghai 设置时区为上海
+
+
+
+安装时间服务
+
+```shell
+yum -y install ntp
+```
+
+
+
+修改配置文件
+
+```shell
+restrict default nomodify ##不允许客户端登录,也不允许客户端修改
+
+server 127.127.1.0 ##使用本地的bios时间,自己跟自己同步
+
+fudge 127.127.1.0 stratum 10 ##定义级别,范围0-16,越小越精准
+```
+
+
+
+启动服务
+
+```shell
+systemctl start ntpd && systemctl enable ntpd
+```
+
+
+
+同步阿里云时间
+
+```bash
+ntpdate ntp.aliyun.com
+```
+
+
+
+### 计划任务服务
+一次性计划任务
+
+
+
+安装一次性计划任务服务
+
+```bash
+yum -y install at && systemctl start atd
+```
+
+
+
+时间:只能指定某一个时间点
+
+任务/命令/动作
+
+1:00 5/1/2024 ##小时:分钟 月:日:年
+
+
+
+案例
+
+```bash
+[root@localhost ~]# at 8:01
+at> touch /opt/test
+at> ##ctrl +d 结束计划任务创建
+job 2 at Thu Apr 10 08:01:00 2025
+```
+
+
+
+at -l 查看计划任务
+
+at -d 任务序列号
+
+
+
+循环性计划任务
+
+crontab执行时间计算 ([https://tool.lu/crontab/](https://tool.lu/crontab/))
+
+
+
+crond服务
+
+```bash
+systemctl status crond ## 默认开机自启
+```
+
+
+
+ crontab -e 创建计划任务
+
+ crontab -l 查看计划任务
+
+ crontab -r 删除计划任务
+
+/var/spool/cron 里面存放了循环计划任务的文件 以用户命名
+
+
+
+### ftp服务
+服务端:
+
+安装vsftp服务
+
+```bash
+yum -y install vsftpd
+```
+
+
+
+启动服务并设置开机自启
+
+```bash
+systemctl start vsftpd && systemctl enable vsftpd
+
+## 浏览器或者文件资源管理器访问测试
+```
+
+
+
+
+
+客户端:
+
+安装lftp服务
+
+```bash
+yum -y install lftp
+```
+
+
+
+
+
+连接服务端
+
+```bash
+lftp 192.168.198.129
+```
+
+
+
+
+
+基本概要
+
+```bash
+/var/ftp/ ## 对外共享目录,要共享的文件放到该目录下
+
+/var/log/xferlog ## 用户的上传和下载都会被该文件记录 vsftpd日志文件
+
+mirror ## 下载目录
+
+get ## 下载文件
+```
+
+
+
+
+
+开启匿名用户上传模式
+
+```bash
+mkdir /var/ftp/date
+
+chmod 777 /var/ftp/date/
+```
+
+
+
+修改文件实现上传功能
+
+```bash
+anon_upload_enable=YES # 是否允许匿名用户上传文件
+anon_mkdir_write_enable=YES # 是否允许匿名用户允许创建目录
+```
+
+
+
+验证上传功能
+
+```bash
+lftp 192.168.198.129
+
+put +文件名(绝对路径)上传的文件本地有
+
+mirror -R 目录名(绝对路径) 上传的目录本地有
+
+注意:
+1.对外共享目录自身不能使用777权限,否则会报错
+2.上传文件前先要进入对应的目录下,否则无法上传
+3.所有服务器都要关闭防火墙和SELinux
+```
+
+
+
+### 密钥远程管理服务
+ssh服务
+
+/etc/ssh/sshd_config 服务端配置文件
+
+/etc/ssh/ssh_config 客户端配置文件
+
+/root/.ssh/ 密钥存放的位置
+
+
+
+ssh-keygen 生成密钥
+
++ id_rsa 私钥
++ id_rsa.pub 公钥
++ authorized_keys 存放对方的公钥
+
+
+
+
+
+拷贝私钥到B机器
+
+```plain
+scp id_rsa 192.168.0.1:/root
+```
+
+
+
+
+
+给192.168.0.1机器拷贝密钥(默认是公钥)
+
+```plain
+ssh-copy-id 192.168.0.1
+```
+
+
+
+
+
+scp远程拷贝
+
+```plain
+scp -r 源文件/源目录 192.168.0.1:/root
+```
+