Contents

Linux常见问题

Linux 系统在线扩容磁盘空间

参考资料

磁盘分区与挂载

扩展磁盘容量

假设在 VMware Workstation 中将磁盘容量扩展了 10GB。

  1. 启动虚拟机,查看现有分区挂载情况:
1
df -TH

记录需要扩容的文件系统名称,例如 /dev/sda3

  1. 查看磁盘分区情况:
1
2
3
fdisk -l
# 或者
lsblk

此时会发现磁盘空间增加了 10GB。

如果遇到报错:GPT PMBR size mismatch

1
2
sudo parted -l
# 然后输入 Fix
  1. 使用 fdisk 创建新分区:
1
fdisk 磁盘路径

按照提示输入 pn,直到显示分区已设置为 Linux 类型并设置大小,输入 wq 退出。

再次执行 fdisk -l,会发现多了一个新分区,假设为 /dev/sda4

挂载分区(可选)

如果需要将新分区挂载到文件夹:

1
mount /dev/sda4 /new

分区扩容(LVM 模式)

创建卷组

如果没有卷组,先创建:

1
2
3
vgcreate 卷组名 空闲分区
# 例如
vgcreate vg1000 /dev/sda4

初始化物理卷

1
2
3
4
5
vgdisplay    # 查看并记住 VG Name(此时 Free PE 为 0)
partprobe    # 使分区表生效
sudo pvcreate -ff -y /dev/sda4    # 将新分区初始化为物理卷
vgextend VGName 新分区名    # 扩展卷组,例如 vgextend vg1000 /dev/sda4
vgdisplay    # 再次查看,此时 Free PE 有空间了

执行扩容

1
2
3
lvextend -l +100%FREE 需要扩容的分区 新分区
# 例如
lvextend -l +100%FREE /dev/mapper/centos-root /dev/sda4

根据文件系统类型执行相应命令:

1
2
3
4
5
6
7
8
# 查看文件系统类型
cat /etc/fstab

# ext 类型
resize2fs 需要扩容的分区

# XFS 类型
xfs_growfs 需要扩容的分区

最后确认:df -lh

根目录扩容

如果需要在根目录 / 上扩容(参考:https://blog.csdn.net/xwmrqqq/article/details/109828166):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 1. 进入 fdisk
fdisk /dev/sda

# 2. 删除原分区,输入 d
# 3. 重新创建分区,输入 n(注意起始扇区要一致)
# 4. 输入 p 确认大小,wq 保存退出

# 4. 通知系统分区表变化
partprobe /dev/sda

# 5. 对文件系统扩容
resize2fs 挂载在根目录的分区

# 6. 确认结果
df -lh

注意事项

  • 执行操作前建议备份重要数据
  • fdisk 操作时谨慎删除和创建分区,避免数据丢失
  • LVM 扩容时确保卷组和逻辑卷名称正确
  • 调整文件系统大小时使用与文件系统类型匹配的命令

Python 版本切换

Ubuntu 系统一般自带 Python2,如果还安装了 Python3,可按以下步骤切换版本。

方法一:修改软链接

1
2
3
4
5
6
7
# 1. 删除原有软链接
sudo unlink /usr/bin/python
sudo unlink /usr/bin/python3

# 2. 创建新软链接指向 Python3
sudo ln -s /usr/bin/python3.8 /usr/bin/python
sudo ln -s /usr/bin/python3.8 /usr/bin/python3

注意:Python 安装在 /usr/bin 目录,库安装在 /usr/local/lib/pythonxx(xx 为版本号)。

pip 镜像加速

1
pip3 install opencv-python -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

Java 安装

1
2
3
4
5
6
7
8
# 安装 OpenJDK
sudo apt install openjdk-8-jdk-headless

# 查看安装路径
whereis jvm
cd /usr/lib/jvm
cd java-8-openjdk-amd64/
ls

配置环境变量,编辑 vi ~/.bashrc,添加:

1
2
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre

VMware 复制粘贴问题

1
2
3
sudo apt autoremove open-vm-tools
sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop

网络配置

设置子网和主机名

参考:https://zhuanlan.zhihu.com/p/455097916

VMware 虚拟网络编辑器配置

  1. 打开 VMware,编辑 → 虚拟网络编辑器,点击更改设置(管理员权限)
  2. VMnet0 确认为桥接模式
  3. 选中 VMnet8,选择 NAT 模式,修改子网 IP(如 192.168.10.0)
  4. 点击 NAT 设置,修改网关 IP(如 192.168.10.2)

Windows 网络适配器配置

  1. 控制面板 → 网络和 Internet → 查看网络状态和任务
  2. 点击更改适配器设置
  3. 双击 VMnet8 → 属性 → 双击 Internet 协议版本 4
  4. 修改默认网关、DNS 服务器与 VMware 中一致,备用 DNS 为 8.8.8.8

Ubuntu 配置

参考:https://blog.csdn.net/qq_19734597/article/details/104087091

1
sudo vim /etc/netplan/里面的文件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33: # 网卡名称
      dhcp4: no
      dhcp6: no
      addresses: [192.168.10.101/24]
      gateway4: 192.168.10.2
      nameservers:
        addresses: [192.168.10.2, 8.8.8.8]

CentOS 配置

1
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改 BOOTPROTO=staticONBOOT=yes,添加 IPADDRGATEWAYDNS1

Ubuntu 系统初始配置

1
2
3
4
5
6
7
sudo apt update
sudo apt upgrade
# 修改 hostname
# 配置固定 IP
# 设置中文
sudo apt install net-tools    # 安装 ifconfig
sudo apt install vim          # 安装 vim

VNC 配置

编辑配置文件:

1
vi ~/.vnc/xstartup
 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
#!/bin/bash
# 启动 D-Bus 会话
# D-Bus 是一个消息总线系统,用于应用程序之间的通信
export $(dbus-launch)
# 禁用动态键盘布局系统
export XKL_XMODMAP_DISABLE=1
# 取消设置 SESSION_MANAGER 环境变量
# 通常用来指定会话管理器
unset SESSION_MANAGER

# 启动 GNOME 面板、GNOME 设置守护进程、Metacity 窗口管理器、Nautilus 文件管理器、GNOME 终端
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

# [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
# [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

# 设置桌面背景为纯色灰色
xsetroot -solid grey
# 启动 VNC 配置工具,`-iconic` 参数使它在系统托盘中运行
vncconfig -iconic &
# 启动一个终端仿真器窗口,大小为 80x24,位置在屏幕的 (10,10) 处,窗口标题为 VNC 桌面
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# 启动 GNOME 会话
gnome-session &

# 设置 VNC 服务器参数,这里定义了 VNC 服务器的数量和权限(root)
VNCSERVERS="2:root"
# 为第一个 VNC 服务器设置参数,这里定义了 VNC 窗口的几何尺寸为 800x600
VNCSERVERARGS[1]="-GEOMETRY 800x600"

操作 VNC 服务器:

1
2
vncserver -kill :1    # 杀死进程(:1 是显示号)
vncserver :1          # 启动服务

免密登录

配置 SSH 密钥实现免密码登录:

1
2
3
4
5
6
7
8
# 1. 在客户端生成密钥对
ssh-keygen -t rsa

# 2. 将公钥复制到目标服务器
ssh-copy-id 用户名@服务器IP

# 3. 之后即可免密登录
ssh 用户名@服务器IP

Nginx 安装配置

FTP 安装配置

CentOS 7.9 安装 MySQL

参考资料

卸载预装 MariaDB

避免与 MySQL 发生冲突:

1
2
rpm -qa | grep -i mariadb
rpm -ev --nodeps mariadb-libs-5.5.68-1.el7.x86_64

方式一:yum 在线安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
yum install -y wget
wget -i -c https://repo.mysql.com//mysql80-community-release-el7-8.noarch.rpm

# 指定版本安装
yum -y install mysql80-community-release-el7-8.noarch.rpm
yum -y install mysql-community-server-8.0.25 \
               mysql-community-client-8.0.25 \
               mysql-community-client-plugins-8.0.25 \
               mysql-community-common-8.0.25 \
               mysql-community-libs-8.0.25

# 或者直接安装最新版本
yum -y install mysql-community-server

systemctl start mysqld

方式二:离线包安装

假设包在 ~/mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
mkdir /opt/mysql8
mv mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar /opt/mysql8/
tar -xvf mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar

# 按顺序安装(建议)
rpm -ivh \
  mysql-community-common-8.0.25-1.el7.x86_64.rpm \
  mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm \
  mysql-community-libs-8.0.25-1.el7.x86_64.rpm \
  mysql-community-client-8.0.25-1.el7.x86_64.rpm \
  mysql-community-server-8.0.25-1.el7.x86_64.rpm \
  --relocate /=/opt/mysql8

systemctl start mysqld

参数说明:-i 安装,-v 详细输出,-h 显示进度

权限配置

如果启动时报错 Fatal error: Please read "Security" section...

检查 my.cnf 配置:

1
2
3
4
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

需要将上述路径权限赋予非 root 用户:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 创建 mysql 组和用户
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

# 更改目录权限
sudo chown -R mysql:mysql /var/lib/mysql
sudo chown -R mysql:mysql /var/run/mysqld
sudo chown -R mysql:mysql /var/log/mysqld.log
sudo chmod -R 777 /var/lib/mysql
sudo chmod -R 777 /var/run/mysqld
sudo chmod -R 777 /var/log/mysqld.log

# 初始化数据库
sudo /usr/bin/mysqld --initialize --user=mysql
sudo systemctl start mysql
sudo mysql_secure_installation

rpm 与 yum 对比

rpm yum
Red Hat Package Manager Yellowdog Updater Modified
用于 安装、查询、卸载和验证 RPM 软件包 使用 sudo yum install xxx.rpm 命令时,yum检查软件包的依赖关系,并尝试解决这些依赖
通过 sudo rpm -i xxx.rpm 命令安装软件包时,直接与 RPM 数据库交互 它还提供了 更新、删除和查询 软件包的功能

调试方式

1
2
3
4
mysqld --verbose --debug

# 或者查看日志
cat /var/log/mysqld.log

后续配置

1
2
3
4
5
6
7
8
# 设置开机启动
systemctl enable mysqld

# 查看初始密码
grep 'password' /var/log/mysqld.log

# 登录
mysql -u 'root' -p'初始密码'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-- 修改密码策略
SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password.policy = low;

-- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

-- 设置远程登录
USE mysql;
UPDATE USER SET HOST = '%' WHERE USER = 'root';
FLUSH PRIVILEGES;

常见问题

MySQL 启动问题

  • 参考:https://www.jianshu.com/p/6f054faf04a4
  • 参考:https://blog.csdn.net/Shockang/article/details/118061120

yum 无法使用

如果遇到 mirrorlist.centos.org Unknown error

  1. 下载阿里云 Base 源:http://mirrors.aliyun.com/repo/Centos-7.repo
  2. 通过 FTP 上传到 /etc/yum.repos.d/(注意备份)
  3. 编辑文件,将 http 改为 https
  4. 清除缓存并重新生成:yum clean all && yum makecache
  5. 安装 wget:yum install -y wget

虚拟机相关

中文路径转英文

https://blog.csdn.net/Andy86666/article/details/106328819

1
2
export LANG=en_US
xdg-user-dirs-gtk-update

恢复中文:

1
2
export LANG=zh_CN.UTF-8
xdg-user-dirs-gtk-update

设置 root 密码:

1
2
sudo passwd root
# 要求长度不小于 8

安装 VMware Tools

1
2
3
4
sudo apt-get update
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop
reboot

安装 Kali Linux

  • 镜像下载:https://mirrors.aliyun.com/kali-images/kali-2025.2
  • 参考:https://blog.csdn.net/m0_74030222/article/details/143866270

拓展与后续学习建议

  • SSH 安全加固:学习 SSH 密钥管理、禁用密码登录、修改默认端口等安全措施
  • 系统监控:掌握 tophtopvmstatiostat 等监控工具的使用
  • 防火墙深入:学习 iptablesfirewalld 的详细规则配置
  • 自动化运维:学习 Ansible、SaltStack 等自动化工具
  • 容器化部署:深入学习 Docker 和 Kubernetes
  • 备份恢复:建立完善的系统备份和恢复机制