docs: 添加Linux相关技术文档

新增多篇Linux技术文档,涵盖基础命令、文件操作、用户权限、网络配置、进程管理、软件安装、系统监控和磁盘管理等主题。每篇文档包含详细命令示例和使用说明,适合作为Linux系统管理参考手册。

文档内容包含:
1. Linux基础命令与快捷键
2. 文件操作与查找技巧
3. 用户管理与权限配置
4. 网络配置与防火墙管理
5. 进程与服务管理方法
6. 软件包管理与安装
7. 系统资源监控命令
8. 磁盘分区与LVM管理
This commit is contained in:
wenyongda 2026-04-16 13:02:54 +08:00
parent ced925ba46
commit 57e553807d
9 changed files with 2236 additions and 3515 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,305 @@
---
title: Linux基础命令
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 命令行]
categories: [操作系统, Linux]
---
# Linux基础命令
## 简介
> 在 Linux 系统中,没有盘符的概念,只有一个盘,以 `/` 为根目录。
> Linux 没有图形化界面,通过指令操作。
> Linux 指令可以传递参数。
> 在 Linux 系统下,万事万物皆文件。
---
## Linux文件结构
Linux 系统主要目录结构如下:
| 目录 | 说明 |
|-----|------|
| `/bin` | 存放二进制可执行文件(重点) |
| `/sbin` | 存放二进制可执行文件,只有 root 用户才能访问 |
| `/etc` | 存放系统配置文件(重点) |
| `/usr` | 存放共享的系统资源 |
| `/home` | 普通用户的家目录(重点) |
| `/root` | root 用户的家目录 |
| `/dev` | 存放设备文件 |
---
## 快捷键
| 快捷键 | 功能 |
|-------|------|
| `Ctrl + u` | 删除命令行开始至光标处 |
| `Ctrl + k` | 删除光标至命令行结尾 |
| `Ctrl + a` | 光标移到最前 |
| `Ctrl + e` | 光标移到最后 |
| `Tab` | 自动补全 |
| `↑` / `↓` | 浏览历史指令 |
---
## 目录操作
### 查看IP地址
```shell
ip addr
ip a
```
### 清屏
```shell
clear
```
### 查看当前目录
```shell
pwd
```
### 跳转目录cd
**基本语法**
```shell
cd [目录路径]
```
**常用示例**
```shell
# 跳转指定目录root目录下的www
cd /root/www
# 返回跳转前的目录
cd -
# 跳转上一级目录
cd ../
# 跳转根目录
cd /
# 跳转root目录
cd ~
# 跳转至主目录(后面跟个空格即可)
cd
```
---
## 文件操作
### 列出目录内容ls
**基本语法**
```shell
ls [选项] [目录]
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-l` | 以长格式显示文件详情 |
| `-a` | 显示所有文件(包括隐藏文件) |
| `-h` | 以人类可读的方式显示文件大小 |
| `-t` | 按修改时间排序 |
| `-R` | 递归显示子目录 |
**常用示例**
```shell
# 列出当前目录下的所有文件及目录(不含隐藏的)
ls
# 以长格式显示当前目录中的文件和目录
ls -l
# 显示当前目录中的所有文件(包括隐藏文件)
ls -a
# 以人类可读的方式显示文件大小
ls -lh
# 按修改时间排序
ls -t
# 递归显示子目录
ls -R
# 显示指定文件的详细信息
ls -l /etc/passwd
```
### 创建目录mkdir
**基本语法**
```shell
mkdir [选项] 目录名
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-p` | 创建多级目录 |
**常用示例**
```shell
# 创建单级目录
mkdir test
# 创建多级目录
mkdir -p /root/test/subdir
```
### 复制文件cp
**基本语法**
```shell
cp [选项] 源文件 目标路径
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-r` | 递归复制目录 |
**常用示例**
```shell
# 复制文件到指定目录
cp aa.txt init/
# 复制目录及其内容到另一个目录
cp -r init spring/
```
### 移动/重命名文件mv
**基本语法**
```shell
mv [选项] 源文件 目标路径
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-f` | 覆盖前不提示 |
| `-r` | 强行覆盖(慎用) |
**常用示例**
```shell
# 重命名文件
mv aa.txt xiaoqiang.txt
# 移动文件到目录
mv bb.txt spring/
# 覆盖前不提示
mv -f spring aaaaa
```
### 删除文件rm
**基本语法**
```shell
rm [选项] 文件/目录
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-f` | 强制删除,无确认提示 |
| `-r` | 递归删除目录 |
> ⚠️ **注意**`rm -rf` 命令非常危险,请谨慎使用!
**常用示例**
```shell
# 删除文件
rm xiaoqiang.txt
# 强制删除文件
rm -f spring.xml
# 递归删除目录
rm -r init
# 递归强制删除(慎用!)
rm -rf bbbbb
# 删除空目录
rmdir aa
# 删除当前目录所有文件(慎用!)
rm -rf *
```
---
## 文件详情说明
执行 `ls -l` 后,文件详情格式如下:
```
drwxr-xr-x 2 root root 6 Apr 11 2018 home
```
| 位置 | 含义 |
|-----|------|
| 第1位 | `d` 表示目录,`-` 表示文件 |
| 第2-4位 | 文件创建者的权限r=读w=写x=执行) |
| 第5-7位 | 同组用户的权限 |
| 第8-10位 | 其他用户的权限 |
| 第11位 | 链接数 |
| 创建者 | 文件创建者 |
| 所属组 | 创建者所在的组 |
| 大小 | 文件占用空间(字节) |
| 日期 | 最后修改时间 |
| 名称 | 文件名或目录名 |
---
## 输出操作
### 打印输出echo
```shell
# 打印一句话
echo "Hello World"
# 向文件写入内容(会追加并换行)
echo "内容" >> file.txt
```
### 退出操作
```shell
# 退出几乎所有操作
Ctrl + c
```

View File

@ -0,0 +1,312 @@
---
title: Linux文件操作
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 文件管理]
categories: [操作系统, Linux]
---
# Linux文件操作
## 文件查看
### cat 命令
显示文本文件内容的一部分。
```shell
cat filename
```
适用于查看小型文件:`.java``.py``.xml``.html``.js``.css` 等。
### more 命令
分页显示文本文件内容,只能向下查看,不能向上翻页。
```shell
more filename
```
### less 命令
分页显示文本文件内容,支持上下翻页。
```shell
less filename
```
**操作方式**
| 按键 | 功能 |
|-----|------|
| `PgUp` / `PgDn` | 上下翻页 |
| `↑` / `↓` | 一行一行查看 |
| `q` | 退出查看 |
### head 命令
查看文本文件的前 N 行。
```shell
# 查看前10行
head -n 10 filename
```
### tail 命令
查看文本文件的后 N 行,或实时监控文件变化。
```shell
# 查看后10行
tail -n 10 filename
# 实时监控文件变化
tail -f filename
```
---
## 文件查找
### find 命令
**基本语法**
```shell
find 路径 表达式
```
#### 按文件名查找
```shell
# 在根目录下查找文件(整个硬盘)
find / -name httpd.conf
# 在指定目录下查找
find /etc -name httpd.conf
# 使用通配符模糊查找
find /etc -name '*srm*'
```
#### 按文件特征查找
```shell
# 查找最后10分钟访问的文件
find / -amin -10
# 查找最后48小时访问的文件
find / -atime -2
# 查找空文件或空目录
find / -empty
# 查找属于指定组的文件
find / -group cat
# 查找最后5分钟修改的文件
find / -mmin -5
# 查找最后24小时修改的文件
find / -mtime -1
# 查找属于指定用户的文件
find / -user fred
# 查找大于10000字节的文件
find / -size +10000c
# 查找小于1000KB的文件
find / -size -1000k
```
**文件大小单位**`c`(字节)、`w`(双字)、`k`KB`M`MB`G`GB
#### 混合查找
```shell
# 大于10000字节且最后2分钟内修改的文件
find /tmp -size +10000c -and -mtime +2
# 用户是fred或george的文件
find / -user fred -or -user george
# 不属于panda用户的文件
find /tmp ! -user panda
```
**逻辑参数**`!`(非)、`-and``-a`(与)、`-or``-o`(或)
### du 命令
查看磁盘空间使用情况,查找占用空间较多的文件。
```shell
# 查找/root下5个最大的文件
du -ah /root | sort -nr | head -n5
# 查找当前目录下最大的5个目录
du -ah | sort -nr | head -n5
# 查找根目录下最大的目录/文件(包括子文件夹)
du -Sh / | sort -rh | head -n10
# 只看大小在GB范围内的文件
du -ah / | grep "[0-9]G\b"
# 查看各目录占用
du -sh /* 2>/dev/null | sort -rh | head -20
# 重点查看/var目录
du -sh /var/* 2>/dev/null | sort -rh | head -20
```
### 快速查找大文件
```shell
# 查找用户目录下大于100M的文件
find ~ -type f -size +100M | xargs ls -lhS
# 只显示文件大小和路径
find ~ -type f -size +100M | xargs du -h | sort -hr
```
---
## 文件压缩
### 压缩概念
1. **打包**:把多个文件打成一个包
2. **压缩**:把文件占用的大小进行压缩
### tar 命令
**基本语法**
```shell
tar [选项] 文件名
```
**常用参数**
| 参数 | 说明 |
|-----|------|
| `-c` | 建立压缩文件(打包) |
| `-x` | 解开压缩文件(解包) |
| `-z` | 使用 gzip 压缩 |
| `-v` | 显示压缩过程日志 |
| `-f` | 指定文件名 |
**常用组合**
| 命令 | 说明 |
|-----|------|
| `tar -cf` | 只打包,不压缩,不显示日志 |
| `tar -xf` | 解压文件,不显示日志 |
| `tar -cvf` | 只打包,不压缩,显示日志 |
| `tar -xvf` | 解压文件,显示日志 |
| `tar -zcvf` | 打包压缩,显示日志 |
| `tar -zxvf` | 解压(最常用) |
**示例**
```shell
# 打包压缩
tar -zcvf wwwroot.tar.gz wwwroot/
# 解压
tar -zxvf wwwroot.tar.gz
```
### tar.gz 与 tgz
两者本质相同,只是扩展名不同。都是通过 `tar` 打包后使用 `gzip` 压缩。
---
## 文件权限
### 权限说明
Linux 文件有三种权限:
| 权限 | 说明 |
|-----|------|
| `r` | 可读 |
| `w` | 可写 |
| `x` | 可执行 |
### chmod 命令
修改文件权限。
```shell
# 设置权限为755rwxr-xr-x
chmod 755 file
```
**权限数字说明**
| 数字 | 权限 |
|-----|------|
| 7 | rwx |
| 6 | rw- |
| 5 | r-x |
| 4 | r-- |
| 0 | --- |
### 查看目录权限
```shell
sudo ls -ld /OLAP
```
输出示例:
```
drwxr-xr-x 5 root root 4096 Aug 5 08:27 /OLAP
```
### 修改目录权限
```shell
# 设置权限为775
sudo chmod 775 /OLAP
```
### 更改目录所有者
```shell
# 将目录所有者更改为指定用户
sudo chown user:user /OLAP
```
---
## 路径获取
```shell
# 获取文件绝对路径
readlink -f sample.txt
# 获取文件绝对路径(不解析符号链接)
realpath -s sample.txt
# 在当前目录查找文件并显示完整路径
find $(pwd) -name sample.txt
# 显示当前目录下文件的完整路径
ls -l $PWD/sample.txt
```
---
## 文件目录大小统计
```shell
# 列出当前目录下所有文件的大小及统计总和
ls -lht
```

View File

@ -0,0 +1,226 @@
---
title: Linux用户与权限
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 用户管理]
categories: [操作系统, Linux]
---
# Linux用户与权限
## 用户管理
### 查看用户
```shell
# 查看当前用户
who am i
# 查看当前登录用户数量
who --count
```
### 用户组管理
```shell
# 创建用户组
groupadd groupname
# 删除用户组
groupdel groupname
```
### 用户管理
```shell
# 创建用户并指定用户组
useradd username -g usergroup
# 设置用户密码
passwd username
# 切换用户
# 从 root 切换到其他用户不需要输入密码
# 从其他用户切换到 root 需要输入密码
su username
# 退出登录
exit
```
---
## 权限管理
### Linux文件权限
Linux 文件有三种权限:
| 权限 | 说明 |
|-----|------|
| `r` | 可读 |
| `w` | 可写 |
| `x` | 可执行 |
### chmod 命令
修改文件权限。
```shell
# 数字方式设置权限
chmod 755 file
```
**权限数字说明**
| 数字 | 权限 | 说明 |
|-----|------|------|
| 7 | rwx | 读、写、执行 |
| 6 | rw- | 读、写 |
| 5 | r-x | 读、执行 |
| 4 | r-- | 只读 |
| 0 | --- | 无权限 |
**755 权限含义**`rwxr-xr-x`
- 所有者:读、写、执行
- 所属组:读、执行
- 其他用户:读、执行
---
## sudo权限
### 开启sudo权限
#### 1. 添加sudoers文件写权限
```shell
chmod u+w /etc/sudoers
```
#### 2. 编辑sudoers文件
```shell
vim /etc/sudoers
```
找到 `root ALL=(ALL) ALL` 这行,在其下面添加:
```
username ALL=(ALL) ALL
```
#### 3. sudoers配置选项
```shell
# 允许用户执行sudo命令需要输入密码
username ALL=(ALL) ALL
# 允许用户组里的用户执行sudo命令需要输入密码
%usergroup ALL=(ALL) ALL
# 允许用户执行sudo命令不需要输入密码
username ALL=(ALL) NOPASSWD: ALL
# 允许用户组里的用户执行sudo命令不需要输入密码
%usergroup ALL=(ALL) NOPASSWD: ALL
```
#### 4. 撤销sudoers文件写权限
```shell
chmod u-w /etc/sudoers
```
---
## ACL权限
> ACL访问控制列表提供更细粒度的权限控制允许为特定用户或组设置特定权限。
### 安装ACL工具
```shell
# Ubuntu/Debian
sudo apt install acl -y
# Fedora/AlmaLinux
sudo dnf install acl -y
```
### 设置ACL权限
```shell
# 为指定用户设置读写权限
sudo setfacl -m u:user:rwx /OLAP
```
### 验证ACL权限
```shell
getfacl /OLAP
```
**输出示例**
```
getfacl: Removing leading '/' from absolute path names
# file: OLAP
# owner: user
# group: user
user::rwx
group::r-x
other::r-x
```
### 设置默认ACL权限
让新创建的文件和子目录自动继承特定权限:
```shell
sudo setfacl -dm u:user:rwx /OLAP
```
---
## 目录权限修改
### 查看目录权限
```shell
sudo ls -ld /OLAP
```
**输出示例**
```
drwxr-xr-x 5 root root 4096 Aug 5 08:27 /OLAP
```
### 修改目录权限
```shell
# 设置权限为775rwxrwxr-x
sudo chmod 775 /OLAP
```
这样目录的所有者和所属组的用户都可以读写,其他用户只有读取和执行权限。
### 将用户加入目录所属组
```shell
# 将用户加入root组不推荐root组权限过高
sudo usermod -aG root user
```
重新登录或重启系统以使组变更生效。
### 更改目录所有者
```shell
# 将目录所有者更改为指定用户
sudo chown user:user /OLAP
```
这样用户将拥有对目录的完全控制权。

View File

@ -0,0 +1,565 @@
---
title: Linux磁盘管理
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 磁盘管理]
categories: [操作系统, Linux]
---
# Linux磁盘管理
## 磁盘空间查看
### df 命令
查看磁盘整体情况。
```shell
# 统计磁盘整体情况
df -lh
```
### du 命令
查看目录占用空间。
```shell
# 查看根目录下文件夹大小
du -sh /*
```
---
## 安装与分区
### Linux分区顺序
1. **boot 分区**:引导启动分区,通常 200-500M
2. **swap 分区**:缓存分区,通常为物理内存的 2 倍
3. **根分区(/**:剩余空间分配给根分区
4. **home 分区**:可选
---
## LVM扩容
### 旧有卷扩容
`/home` 部分空间合并至 `/` 下。
#### 1. 查看当前分区
```shell
df -h
```
#### 2. 查看卷的文件系统类型
```shell
mount | grep home
```
#### 3. 安装备份工具
```shell
dnf install -y xfsdump
```
#### 4. 备份 /home
```shell
xfsdump -f ~/sdb_dump/ /home -M sdb_home -L sdb_home_1
```
#### 5. 卸载 /home
```shell
umount /home/
df -h
```
#### 6. 移除逻辑卷
> ⚠️ 删除前请确保重要文件已备份!
```shell
lvremove /dev/mapper/almalinux-home
```
#### 7. 扩展根分区
```shell
# 扩展根分区增加8.7G
lvresize -L +8.7G /dev/mapper/almalinux-root
lsblk
```
#### 8. 扩展文件系统
```shell
xfs_growfs /
df -h
```
#### 9. 重新创建 home 逻辑卷
```shell
lvcreate -L 9G -n home almalinux
lsblk
```
#### 10. 扩展剩余空间给 home
```shell
lvextend -l +100%FREE -n /dev/mapper/almalinux-home
lsblk
```
#### 11. 格式化并挂载
```shell
# 格式化
mkfs.xfs /dev/mapper/almalinux-home
# 挂载因lv名称和挂载点不变无需修改/etc/fstab
mount -a
df -Th
```
#### 12. 还原数据
```shell
xfsrestore -f sdb_dump /home/
```
---
### 新加卷扩容
#### 1. 查看现有分区大小
```shell
df -Th
```
#### 2. 查看扩容后磁盘大小
```shell
lsblk
```
#### 3. 创建分区
```shell
fdisk /dev/sda
```
**fdisk 操作步骤**
- 输入 `n` 创建新分区
- 选择分区类型(主分区/扩展分区)
- 设置分区大小
- 输入 `w` 保存更改
#### 4. 刷新分区并创建物理卷
```shell
partprobe /dev/sda
pvcreate /dev/sda4
```
#### 5. 查看卷组
```shell
vgdisplay
```
#### 6. 将物理卷扩展到卷组
```shell
vgextend rl /dev/sda4
```
#### 7. 查看逻辑卷
```shell
lvdisplay
```
#### 8. 扩展根分区逻辑卷
```shell
lvextend -l +100%FREE /dev/rl/root
```
#### 9. 刷新根分区
```shell
xfs_growfs /dev/rl/root
```
---
## 分区格式转换
### Microsoft 基本数据 → Linux 文件系统
#### 1. 查看当前分区类型
```shell
fdisk -l
```
#### 2. 转换分区类型
```shell
fdisk /dev/sdb
# 输入 t 命令(转换分区类型)
t
# 输入 20Linux file system
20
# 输入 w写入更改
w
```
#### 3. 手动挂载硬盘
```shell
mkdir /sdb
mount -t ext3 /dev/sdb1 /sdb
```
#### 4. 查看挂载结果
```shell
df -Th
```
#### 5. 设置自动挂载
查看硬盘UUID
```shell
blkid /dev/sdb1
```
编辑 `/etc/fstab`
```shell
vim /etc/fstab
# 添加以下行
UUID=7d592b46-68dc-41c2-bdb3-7ee410f0bb33 /sdb ext3 defaults 0 0
```
重载配置:
```shell
systemctl daemon-reload
```
---
### ext3 升级 ext4
#### 1. 确认当前文件系统类型
```shell
df -Th | grep /dev/sdb1
```
#### 2. 卸载目标分区
> ⚠️ 不能对正在使用的根分区操作
```shell
umount /dev/sdb1
```
#### 3. 检查并修复文件系统
```shell
e2fsck -f /dev/sdb1
```
#### 4. 将 ext3 转换为 ext4
```shell
tune2fs -O has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize /dev/sdb1
```
#### 5. 查看转换是否成功
```shell
dumpe2fs -h /dev/sdb1 | grep features
```
确认输出中包含:`extent``huge_file``flex_bg``uninit_bg``dir_nlink``extra_isize`
#### 6. 再次检查文件系统
```shell
e2fsck -f /dev/sdb1
```
#### 7. 挂载并验证
```shell
mount -t ext4 /dev/sdb1 /sdb
df -Th | grep /dev/sdb1
```
#### 8. 修改 /etc/fstab
```shell
/dev/sdb1 /sdb ext4 defaults 0 0
```
---
### NTFS → ext4
#### 1. 确认目标分区
```shell
lsblk -f
```
#### 2. 卸载分区
```shell
sudo umount /dev/sda1
```
#### 3. 格式化为 ext4
```shell
sudo mkfs.ext4 /dev/sda1
```
#### 4. 验证结果
```shell
lsblk -f
```
---
## 挂载卷
### Windows 网络共享位置
#### 1. 创建挂载目录
```shell
mkdir -p /mnt/wdshare/
```
#### 2. 安装依赖
```shell
dnf install -y cifs-utils
```
#### 3. 挂载
```shell
mount -t cifs -o username=user,password=backup //192.168.0.1/备份 /mnt/wdshare/
```
#### 4. 永久挂载
编辑 `/etc/fstab`
```shell
//192.168.0.1/备份 /mnt/wdshare/ cifs username=user,password=backup 0 0
```
重载配置:
```shell
sudo systemctl daemon-reload
sudo mount -a
```
---
### NTFS 分区
#### 1. 识别NTFS分区
```shell
sudo parted -l
```
#### 2. 创建挂载点
```shell
sudo mkdir /mnt/ntfs1
```
#### 3. 安装依赖
```shell
sudo apt update
sudo apt install fuse -y
sudo apt install ntfs-3g -y
```
#### 4. 挂载分区
```shell
sudo mount -t ntfs-3g /dev/sda1 /mnt/ntfs1/
```
#### 5. 验证挂载
```shell
df -Th
```
#### 6. 永久挂载
编辑 `/etc/fstab`
```shell
/dev/sda1 /mnt/ntfs1 fuseblk defaults 0 0
```
重载配置:
```shell
sudo systemctl daemon-reload
```
---
## Swap配置
### 创建Swap分区
#### 1. 查看当前Swap大小
```shell
free -h
```
#### 2. 创建Swap文件
```shell
# 创建4G的swap文件
dd if=/dev/zero of=/home/swap bs=1024 count=4194304
```
> `count` 值 = 大小(M) × 1024
#### 3. 格式化Swap分区
```shell
mkswap /home/swap
```
#### 4. 启用Swap
```shell
swapon /home/swap
```
#### 5. 设置自动挂载
编辑 `/etc/fstab`
```shell
/home/swap swap swap default 0 0
```
---
### 关闭Swap
```shell
swapoff /home/swap
```
---
### 修改Swap使用率
`swappiness` 值表示使用 swap 的倾向:
- `0`:最大限度使用物理内存
- `100`:积极使用 swap
#### 1. 查看当前值
```shell
cat /proc/sys/vm/swappiness
```
#### 2. 临时修改
```shell
sysctl vm.swappiness=60
```
#### 3. 永久修改
编辑 `/etc/sysctl.conf`
```shell
vm.swappiness=60
```
应用更改:
```shell
sysctl -p
```
---
## 内核升级
### CentOS 7.9 内核升级
#### 1. 查看当前内核版本
```shell
uname -a
```
#### 2. 查看系统版本
```shell
cat /etc/redhat-release
```
#### 3. 导入公钥
```shell
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
```
#### 4. 安装ELRepo
```shell
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
```
#### 5. 安装新内核
```shell
yum --enablerepo=elrepo-kernel install kernel-ml -y &&
sed -i s/saved/0/g /etc/default/grub &&
grub2-mkconfig -o /boot/grub2/grub.cfg
```
#### 6. 重启系统
```shell
reboot
```
#### 7. 验证内核版本
```shell
uname -a
```

View File

@ -0,0 +1,220 @@
---
title: Linux系统监控
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 系统监控]
categories: [操作系统, Linux]
---
# Linux系统监控
## CPU信息
### lscpu 命令
查看 CPU 的统计信息。
```shell
lscpu
```
**输出示例**
```
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 2
Core(s) per socket: 10
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
Stepping: 7
CPU MHz: 999.963
CPU max MHz: 3200.0000
CPU min MHz: 1000.0000
BogoMIPS: 4400.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 14080K
```
### 查看 CPU 详细信息
```shell
cat /proc/cpuinfo
```
**输出示例**
```
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
stepping : 7
microcode : 0x5003303
cpu MHz : 999.963
cache size : 14080 KB
physical id : 0
siblings : 20
core id : 0
cpu cores : 10
```
---
## 内存信息
### free 命令
概要查看内存情况。
```shell
free -m
```
**输出示例**单位MB
```
total used free shared buff/cache available
Mem: 31595 14770 3182 253 13643 16150
Swap: 65535 0 65535
```
### 查看内存详细使用
```shell
cat /proc/meminfo
```
**输出示例**
```
MemTotal: 32354112 kB
MemFree: 3377564 kB
MemAvailable: 16657484 kB
Buffers: 725916 kB
Cached: 12127832 kB
SwapCached: 0 kB
Active: 21031256 kB
Inactive: 5694748 kB
```
---
## 硬盘信息
### lsblk 命令
查看硬盘和分区分布。
```shell
lsblk
```
**输出示例**
```
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 447.1G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 380G 0 part /
└─sda4 8:4 0 64G 0 part [SWAP]
sdb 8:16 0 2.2T 0 disk
└─sdb1 8:17 0 2.2T 0 part /test
```
### fdisk 命令
查看硬盘和分区的详细信息。
```shell
fdisk -l
```
**输出示例**
```
磁盘 /dev/sda480.1 GB, 480103981056 字节937703088 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 4096 字节
I/O 大小(最小/最佳)4096 字节 / 4096 字节
磁盘标签类型gpt
Disk identifier: F6E9395D-610B-4BB3-B289-8F6A96811113
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 799426559 380G Microsoft basic
4 799426560 933644287 64G Linux swap
```
---
## 网卡信息
### 查看网卡硬件信息
```shell
lspci | grep -i 'eth'
```
**输出示例**
```
04:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
04:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
```
### 查看所有网络接口
```shell
ifconfig -a
```
**输出示例**
```
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:66:fe:52:a2 txqueuelen 0 (Ethernet)
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.20 netmask 255.255.255.0 broadcast 192.168.6.255
ether 2c:ea:7f:a9:fc:76 txqueuelen 1000 (Ethernet)
```
---
## 综合监控
### top 命令
动态显示进程和系统资源使用情况。
```shell
top
```
### htop 命令
更友好的交互式进程查看器(需安装)。
```shell
# 安装
yum install -y htop
# 运行
htop
```

View File

@ -0,0 +1,183 @@
---
title: Linux网络配置
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 网络配置]
categories: [操作系统, Linux]
---
# Linux网络配置
## 配置网络
### 编辑网络配置文件
```shell
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
```
### 配置文件示例
```shell
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=08913b58-0bc2-42c5-8b59-6782e0029d7b
DEVICE=ens33
ONBOOT=yes
```
> **重要**:修改 `ONBOOT=yes` 以启用网络。
### 重启网络服务
```shell
systemctl restart network
```
### 查看IP地址
```shell
ip addr
```
---
## 端口映射
### 使用 iptables 映射端口
```shell
# 将80端口映射到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
```
**参数说明**
- `--dport`:目标端口
- `--to-port`:来源端口
### 查看 iptables 规则
```shell
iptables -t nat -L -n -v
```
输出示例:
```
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
12925 4377K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 redir ports 80
```
---
## 防火墙配置
### firewall-cmd 命令
CentOS 7 防火墙管理工具。
#### 放行端口
```shell
# 放行特定端口(永久生效)
firewall-cmd --add-port=6379/tcp --permanent
```
#### 移除端口
```shell
# 移除已放行的端口
firewall-cmd --permanent --remove-port=8080/tcp
```
#### 查询端口
```shell
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
```
#### 查看开放端口
```shell
# 查看所有开放的端口
firewall-cmd --list-all
```
#### 重载防火墙
```shell
# 修改配置后需重载生效
firewall-cmd --reload
```
#### 指定作用域放行
```shell
# 在public作用域放行端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
```
**参数说明**
| 参数 | 说明 |
|-----|------|
| `--zone` | 作用域 |
| `--add-port` | 添加端口,格式为端口/协议 |
| `--permanent` | 永久生效,无此参数重启后失效 |
---
## 网络状态查看
### netstat 命令
```shell
# 查看监听中的端口
netstat -lnp | grep 8080
```
**参数说明**
| 参数 | 说明 |
|-----|------|
| `-l` | 显示监控中的服务器的 Socket |
| `-n` | 直接使用 IP 地址 |
| `-p` | 显示程序识别码和名称 |
---
## 网卡信息查看
### 查看网卡硬件信息
```shell
lspci | grep -i 'eth'
```
输出示例:
```
04:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
04:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
```
### 查看所有网络接口
```shell
ifconfig -a
```

View File

@ -0,0 +1,192 @@
---
title: Linux软件安装
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 软件安装]
categories: [操作系统, Linux]
---
# Linux软件安装
## 包管理器
### rpm 命令
本地安装软件包。
```shell
# 安装rpm包
rpm -ivh package.rpm
# 卸载rpm包
rpm -e package
```
---
### yum 命令
CentOS 软件包管理器,需要配置源。
#### 常用命令
```shell
# 安装软件
yum install -y package
# 更新软件
yum update package
# 删除软件
yum remove package
# 搜索软件
yum search package
# 清理缓存
yum clean all
# 生成缓存
yum makecache
```
#### 更换阿里源
```shell
yum install -y wget &&
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &&
yum clean all &&
yum makecache
```
---
### dnf 命令
Fedora/AlmaLinux 软件包管理器yum 的替代)。
#### 常用命令
```shell
# 安装软件
dnf install -y package
# 更新系统
dnf update
# 删除软件
dnf remove package
# 搜索软件
dnf search package
# 清理缓存
dnf clean all
```
---
## wget 下载工具
### 基本语法
```shell
wget [参数] [URL地址]
```
### 基本示例
```shell
# 下载文件
wget https://example.com/file.zip
# 指定保存文件名
wget -O 图片名.png https://www.baidu.com/img/bd_logo1.png
```
### 记录和输入文件参数
| 参数 | 说明 |
|-----|------|
| `-o` | 把记录写到文件中 |
| `-a` | 把记录追加到文件中 |
| `-d` | 打印调试输出 |
| `-q` | 安静模式(没有输出) |
| `-v` | 冗长模式(缺省设置) |
| `-nv` | 关掉冗长模式 |
| `-i` | 下载文件中出现的 URLs |
| `-F` | 把输入文件当作 HTML 格式 |
### 下载参数
| 参数 | 说明 |
|-----|------|
| `-t` | 设定最大尝试链接次数0 表示无限制) |
| `-O` | 把文档写到文件中 |
| `-nc` | 不要覆盖存在的文件 |
| `-c` | 接着下载没下载完的文件 |
| `-N` | 不要重新下载文件除非比本地文件新 |
| `-S` | 打印服务器的回应 |
| `-T` | 设定响应超时的秒数 |
| `-w` | 两次尝试之间间隔秒数 |
| `-Q` | 设置下载的容量限制 |
| `--limit-rate` | 限定下载速率 |
---
## 常用软件安装
### 安装 Vim 编辑器
```shell
yum install -y vim
```
### 安装 screenFetch
```shell
# 下载安装包
wget https://github.com/KittyKatt/screenFetch/archive/master.zip
# 安装 unzip
yum install unzip
# 解压
unzip master.zip
# 移动到系统目录
mv screenFetch-master/screenfetch-dev /usr/bin/screenfetch
```
---
## 环境变量配置
### 配置 Java 环境变量
#### 1. 解压并移动 JDK
```shell
mv jdk1.8.0_301/ /usr/
```
#### 2. 编辑 profile 文件
```shell
vim /etc/profile
```
在文件末尾添加:
```shell
export JAVA_HOME=/usr/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin
```
#### 3. 重新加载配置
```shell
source /etc/profile
```

View File

@ -0,0 +1,156 @@
---
title: Linux进程与服务管理
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 进程管理]
categories: [操作系统, Linux]
---
# Linux进程与服务管理
## 进程管理
### ps 命令
查看进程状态。
```shell
# 查看前台进程
ps
# 查看所有进程详细信息
ps -aux
# 查看所有进程详细信息含父进程ID
ps -ef
```
**输出字段说明**
| 字段 | 说明 |
|-----|------|
| UID | 用户 |
| PID | 进程ID |
| PPID | 父进程ID |
> 父进程ID为1表示系统进程。
### top 命令
动态显示进程状态。
```shell
top
```
### 查找特定进程
```shell
# 查看所有进程并搜索指定进程
ps -aux | grep network
```
### kill 命令
根据 PID 终止进程。
```shell
# 终止进程
kill PID
# 强制终止进程
kill -9 PID
```
---
## 服务管理
### systemctl 命令
操作系统服务。
**基本语法**
```shell
systemctl [操作] 服务名
```
**常用操作**
| 操作 | 说明 |
|-----|------|
| `status` | 查看服务状态 |
| `stop` | 终止服务 |
| `start` | 启动服务 |
| `restart` | 重启服务 |
| `enable` | 设置开机自启 |
| `disable` | 禁用开机自启 |
**示例**
```shell
# 查看MySQL服务状态
systemctl status mysqld
# 启动网络服务
systemctl start network
# 设置服务开机自启
systemctl enable mysqld
# 启动并设置开机自启
systemctl enable --now mysqld
```
### 常见服务名称
| 服务 | 服务名 |
|-----|------|
| 网络服务 | `network` |
| 防火墙服务 | `firewalld` |
| MySQL | `mysqld` |
| Containerd | `containerd` |
| BuildKit | `buildkit` |
---
## 网络状态
### netstat 命令
查看网络连接状态。
```shell
# 查看监听中的端口
netstat -lnp | grep 8080
```
**参数说明**
| 参数 | 说明 |
|-----|------|
| `-l` | 显示监控中的服务器的 Socket |
| `-n` | 直接使用 IP 地址,不通过域名服务器 |
| `-p` | 显示正在使用 Socket 的程序识别码和名称 |
---
## Shell脚本
### shebang 说明
Shell 脚本开头通常包含 `#!/bin/bash`,这行称为 **shebang****hashbang**
```shell
#!/bin/bash
echo 'Hello, World!'
```
**作用**:告诉系统使用 `bash` 作为脚本的解释器,无需在运行时指定。
**注意事项**
- `#!``/bin/bash` 之间的空格无关紧要
- 使用 `#!/bin/zsh` 表示使用 zsh 解释器