系统优化

3205 字
16 分钟
系统优化

系统优化#

[TOC]


yum仓库优化#

如果默认的仓库里面没有,就去找额外的仓库了

📌 安装软件的应用市场、YUM仓库 YUM源 在安装软件的时候通过仓库的链接下载

(1)国产操作系统安装软件的yum仓库在国内,不需要修改

(2)默认没有扩展的仓库,需要配置

(3)如果默认和扩展的仓库都没有需要的软件怎么办?

Terminal window
'去下载官网仓库、比如下载nginx'
/etc/yum.repos.d/nginx.repo --> 指向nginx.org的官方网站
yum -y install nginx # 这样就可以下载Nginx了
======================================
/etc/yum.repos.d/kylin_x86_64.repo --> 麒麟默认的yum源,指向kylin服务器
Terminal window
# yum仓库优化 - 国内镜像源
# 国内的仓库地址 阿里源 & 清华源
# https://developer.aliyun.com/mirror/
======================================
# Kylin操作系统部署扩展仓库epel
# 打开阿里源 https://developer.aliyun.com/mirror/
# 找到epel仓库对应的版本号
# 使用wget命令将配置文件保存到本地
'Kylin v10 是通过Centos7内核更改的'
1)下载epel仓库配置文件
[root@Kylin ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
wget -O 下载到指定目录并改名
[root@Rocky ~]# yum -y install epel-release
# 👆 Rocky Linux下载安装扩展源
2)查看结果
[root@Kylin ~]# ll /etc/yum.repos.d/
总用量 8
-rw-r--r-- 1 root root 664 8月 4 2022 epel.repo
-rw-r--r-- 1 root root 701 9月 8 2022 kylin_x86_64.repo
'epel.repo 已成功下载'
✅️ epel仓库配置文件已就位
# 测试仓库是否成功配置(见图片)

image-20260622140042428
image-20260622140042428

这个sl软件,就是从我们的 epel扩展仓库 下载来的

Centos 7操作系统#

Terminal window
# CentOS 7 - YUM源优化
1)备份原有yum源
[root@oldboy ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2)下载阿里云Base源
[root@oldboy ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 用curl -o(小o),因为这个命令最小化安装的时候自带
# wget命令 系统里面可能没有
⚠️ 推荐用curl -o(小写)命令,两个命令都是下载阿里yum源
# wget方式(可选): wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
'都是下载到指定位置并改名'
3)下载epel扩展仓库
[root@oldboy ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
'为什么要有这个扩展仓库?'
# 如果在安装软件的时候,没有在CentOS-Base.repo中找到官方的下载链接
# 那么yum会自动去epel.repo指向的链接处去查找
# 相当于epel.repo给yum提供了更多的下载渠道
📌 /etc/yum.repos.d/epel.repo 是EPEL仓库的配置文件
# 为CentOS/RHEL提供官方仓库未包含的额外软件包
'提供的软件类型: htop、nginx等'
'开发工具和依赖库'
4)查看yum源列表
[root@oldboy ~]# yum repolist
# 查看配置的所有仓库
======================================
yum clean all #清理老旧的缓存信息
yum makecache #更新yum缓存
yum -y update #升级所有包的同时,升级软件和系统内核

Rocky 10仓库优化#

#!/bin/bash
set -e
# 0. 备份旧配置(防止误操作)
BACKUP_DIR="/etc/yum.repos.d/backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
mv /etc/yum.repos.d/*.repo "$BACKUP_DIR/" 2>/dev/null || true
echo "✅ 旧 repo 文件已备份至: $BACKUP_DIR"
# 1. rocky.repo — 核心仓库
cat > /etc/yum.repos.d/rocky.repo << 'EOF'
[baseos]
name=Rocky Linux $releasever - BaseOS - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[appstream]
name=Rocky Linux $releasever - AppStream - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[crb]
name=Rocky Linux $releasever - CRB - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/CRB/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
EOF
# 2. rocky-extras.repo
cat > /etc/yum.repos.d/rocky-extras.repo << 'EOF'
[extras]
name=Rocky Linux $releasever - Extras - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[plus]
name=Rocky Linux $releasever - Plus - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/plus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
EOF
# 3. rocky-addons.repo(默认禁用)
cat > /etc/yum.repos.d/rocky-addons.repo << 'EOF'
[highavailability]
name=Rocky Linux $releasever - HighAvailability - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/HighAvailability/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[nfv]
name=Rocky Linux $releasever - NFV - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/NFV/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[rt]
name=Rocky Linux $releasever - RT - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/RT/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[sap]
name=Rocky Linux $releasever - SAP - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/SAP/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
[saphana]
name=Rocky Linux $releasever - SAPHANA - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/SAPHANA/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
EOF
# 4. rocky-devel.repo(默认禁用)
cat > /etc/yum.repos.d/rocky-devel.repo << 'EOF'
[devel]
name=Rocky Linux $releasever - Devel - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/devel/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
EOF
# 5. rocky-security.repo(默认禁用)
cat > /etc/yum.repos.d/rocky-security.repo << 'EOF'
[security]
name=Rocky Linux $releasever - Security - Aliyun
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/security/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10
EOF
# 6. epel.repo
cat > /etc/yum.repos.d/epel.repo << 'EOF'
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Aliyun
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever_major
gpgcheck=1
enabled=1
[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug - Aliyun
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/debug/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever_major
gpgcheck=1
enabled=0
[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source - Aliyun
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever_major
gpgcheck=1
enabled=0
EOF
# 7. 确保 GPG Key 存在(如果缺失则尝试从阿里云下载)
if [ ! -f /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10 ]; then
echo "⚠️ 未找到 Rocky 10 GPG Key,正在尝试下载..."
curl -fsSL -o /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10 \
https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-10 || true
fi
# 8. 清理并重建缓存
echo "🔄 正在重建 DNF 缓存..."
dnf clean all
dnf makecache
echo "✅ 所有仓库配置完成!"

安装常用工具#

Terminal window
yum install -y vim tree wget bash-completion bash-completion-extras lrzsz tar zip net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect cowsay sl ntpdate
# 下面两个工具已包含在上面命令中
Terminal window
🐴 娱乐时间
[root@Kylin ~]# yum -y install cowsay
[root@Kylin ~]# cowsay "我会说话"
______
< 我会说话 >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

优化ssh连接速度#

Terminal window
# ssh连接优化
1)注释GSSAPIAuthentication
[root@oldboy ~]# sed -i '/^GSSAPIAuthentication/s@^@#@g' /etc/ssh/sshd_config
# 原来是 yes,注释掉 --> 开头换为#
2)追加优化配置
[root@oldboy ~]# cat >>/etc/ssh/sshd_config<<EOF
UseDNS no
# 相当于网络命令的-n选项,不解析为主机名,直接成IP地址
GSSAPIAuthentication no
# 关闭GSS认证
EOF
3)验证配置
[root@oldboy ~]# grep GSSAPIAuthentication /etc/ssh/sshd_config
#GSSAPIAuthentication yes
GSSAPIAuthentication no
'我们注释的是yes --> 追加的是no' 显示指定为no
4)重启sshd服务
[root@oldboy ~]# systemctl restart sshd
5)最终检查
[root@oldboy ~]# egrep '^(GSSAPIAuthentication|UseDNS)' /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
# 检查通过
# 注: sshd_config后面讲解sshd服务会有详解,目前配置即可

时间同步#

  • 📌 硬件时间 BIOS系统

    • 是计算机主板上由独立电池供电的硬件时钟所维护的时间,它在计算机关机时也能持续运行
    • 确保系统启动时有一个初始时间基准
  • 📌 系统时间 操作系统

    • 我们当前看到的时间

⚠️ 在企业中硬件时间和系统时间都必须保证正确

🧣timedatectl#

Terminal window
[root@db03 ~]# timedatectl
Local time: Fri 2026-03-13 20:54:12 CST
Universal time: Fri 2026-03-13 12:54:12 UTC
RTC time: Fri 2026-03-13 12:54:12
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
# 三种时间类型:
# Local time (本地时间): 根据设置的时区(这里是Asia/Shanghai)计算出的时间
# Universal time (UTC): 全球通用的标准时间,Linux内核内部按UTC运行
# RTC time (硬件时钟): 主板上的实时时钟,由电池供电,关机也会继续运行
1)查看timedatectl子命令
[root@db03 ~]# timedatectl
# (tab两次)
list-timezones set-local-rtc set-timezone status
ntp-servers set-ntp show timesync-status
revert set-time show-timesync
# set-timezone: 时区
# set-time: 时间
2)列出可用时区
[root@db03 ~]# timedatectl list-timezones | head -10
'列出可以使用的时区'
Africa/Abidjan
Africa/Algiers
.............
3)查看时区 time zone部分
[root@oldboy network-scripts]# timedatectl status
Local time: Sun 2025-12-07 21:39:29 CST
Universal time: Sun 2025-12-07 13:39:29 UTC
RTC time: Sun 2025-12-07 13:39:28
Time zone: Asia/Shanghai (CST, +0800)
# 主要是这里查看时区
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
4)修改时区
[root@oldboy network-scripts]# timedatectl set-timezone Asia/Shanghai
# 如果不正确,修改时区为亚洲/上海

date#

查看系统时间

Terminal window
[root@Kylin ~]# date
2025年 11月 03日 星期一 10:49:43 CST
基本语法:
date [选项] +"格式"
[root@Rocky ~]# date +"%F_%H_%M"
2026-06-22_16_13
  • 其中 +格式 是你想要的输出格式,以加号 + 开头
    • ⚠️ 这个格式外面最好用双引号括起来

✅ 常用格式

格式说明
%F显示年月日(如:2025-11-03)
%Y四位数年份(如:2025)
%m月份(01–12)
%d日期(01–31)
%T以hh:mm格式显示时间(等价%H:%M:%S)
%H小时(00–23,24小时制)
%M分钟(00–59)
%S秒(00–60)
%w星期几(0=周日,1-6=周一至周六)
Terminal window
# 标准格式(年-月-日 时:分:秒)
[root@oldboy ~]# date +"%F %H:%M:%S"
2025-12-27 10:52:32
[root@oldboy ~]# date +"%F %T"
2025-12-27 10:59:48
# %T等价%H:%M:%S

clock#

查看硬件时间

Terminal window
[root@Kylin ~]# clock
2025-11-03 10:50:48.472533+08:00

date -s#

修改系统时间(做测试)

Terminal window
[root@Kylin ~]# date -s 20081010
2008年 10月 10日 星期五 00:00:00 CST

同步系统时间#

Terminal window
[root@Kylin ~]# date
2008年 10月 10日 星期五 00:00:54 CST
'这里时间是错误的'
1)安装自动同步工具
[root@Kylin ~]# yum -y install ntpdate
'先安装这个自动同步的工具'
2)时间同步
[root@Kylin ~]# ntpdate ntp1.aliyun.com
3 Nov 10:55:24 ntpdate[5121]: step time server 118.31.40.99 offset +538570277.756436 sec
[root@Kylin ~]# date
2025年 11月 03日 星期一 10:55:26 CST
'同步后,时间就回来了'
✅️ 时间同步成功

硬件时间同步#

Terminal window
[root@Rocky ~]# clock -w
# 将系统给的时间同步给硬件时间

⚠️ 最后加入到定时任务,间隔30分钟自动同步一次

字符集#

什么是字符集? —> 语言在系统中表示方式

GBK: 国标UTF-8: 万国码

查看字符集#

Terminal window
[root@Kylin ~]# echo $LANG
zh_CN.UTF-8
# kylin默认选择为UTF-8,装系统时自己选择的中文

修改语言为英文#

(1)临时修改(重新Xshell连接,修改失效)

Terminal window
[root@Kylin ~]# LANG=en_US.UTF-8
'这个形式太熟悉了,它本质就是变量,临时生效'
[root@Kylin ~]# echo $LANG
en_US.UTF-8
'测试是否成功'
[root@Kylin ~]# lllllllllllllll
-bash: lllllllllllllll: command not found
'看提示是否为英文'

(2)永久修改语言

这两个都要进行source才能生效

  1. 直接修改配置文件

位置: /etc/locale.conf

Terminal window
1)修改配置文件为英文
[root@Kylin ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
'这个LANG本质还是变量'
======================================================
# 说到变量,我们会想到什么?环境变量,如何让环境变量生效?
# 使用source或者.(点)让变量生效,或者重新连接xshell,或者重启系统
'xshell每次连接都要重新执行profile中的变量 == source /etc/profile'
'它俩在使变量生效,功能等价'
2)让配置生效
[root@Kylin ~]# source /etc/locale.conf
[root@Kylin ~]# echo $LANG
en_US.UTF-8
  1. 通过命令配置语言
Terminal window
1)查看当前配置
[root@Kylin ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
2)修改语言为中文
[root@Kylin ~]# localectl set-locale LANG="zh_CN.UTF-8"
'让我想起了修改主机名: hostnamectl set-hostname 新主机名'

Terminal window
3)确认修改结果
[root@Kylin ~]# cat /etc/locale.conf
LANG=zh_CN.UTF-8
4)让配置生效
[root@Kylin ~]# source /etc/locale.conf
# 千万别忘记了source一下
[root@Kylin ~]# echo $LANG
zh_CN.UTF-8

Selinux关闭#

getenforce#

get = 获取 enforce = 强制模式

📌 查看状态

⚠️ 只要不是Enforcing就是关闭状态

setenforce 0#

set = 设置 enforce = 强制模式

将 SELinux 模式从 enforcing 切换为 permissive

  • 不是完全”关闭”(disabled)
    • 临时关闭,当你重启后它又变回来了
  • 执行后立即生效,无需重启
Terminal window
[root@oldboy ~]# getenforce
Permissive

那我们如何永久关闭它呢?

修改/etc/selinux/config文件

  • 直接编辑配置文件,改为disabled
    • 然后虚拟机重启生效,reboot

⚠️ 如果只是修改 /etc/selinux/config 为 disabled 但不重启?

  • SELinux 仍然处于启用状态
  • 系统下次启动时才会以 disabled 模式加载,此时 SELinux 内核子系统完全不激活

优化防火墙#

防火墙: 安全防护、限制一些非法流量

主要限制那些访问我们服务器的流量,是否合法

有些东西,不让它访问

什么时候开启防火墙?

(1)服务器运行在公网环境中需要开启 (2)用户可以访问到我们的服务

什么时候关闭防火墙?

(1)局域网内的服务器 (2)测试服务器 (3)压力比较大的业务服务器(换硬件防火墙

  • 我们服务器本身带有软件的防火墙,把防火墙理解为检票,人一多就忙不过来了,得排队
    • 有的人等不及就去别的家买去了,那么原本属于你的流量就被分流了

那么如何让人都能进来呢?

把防火墙(服务器软件自带的)去掉,减少服务器压力,换硬件防火墙 —> 配置高的,又太贵了

systemctl status#

查看当前防火墙状态

Terminal window
[root@oldboy ~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon **开机启动**
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; **enabled**; vendor preset: enabled)
Active: **active (running)** since Sun 2025-12-07 15:59:26 CST; 4h 40min ago
Docs: man:firewalld(1)
Main PID: 839 (firewalld)

systemctl stop#

关闭防火墙

Terminal window
[root@Kylin ~]# systemctl stop firewalld

systemctl disable#

永久关闭、禁止开机自动运行

Terminal window
[root@Kylin ~]# systemctl disable firewalld

systemctl 常用操作速查

命令说明
systemctl start xx开启服务
systemctl stop xx关闭服务
systemctl restart xx重启服务
systemctl status xx查看服务状态
systemctl enable xx开机自动运行
systemctl disable xx开机禁止运行

PS1命令提示符#

📌 是系统环境变量值之一,用于控制命令行格式样式

⚠️ 写入**/etc/profile**中即可,别忘记source一下

Terminal window
PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]\\$ "

📌 PS1变量

变量说明
\u当前用户的账号名称
\d代表日期,格式为weekday month date,例如:“Mon Aug 1”
\H完整的主机名称
\h仅取主机的第一个名字
\w完整的工作目录名称,家目录会以 ~代替
\W利用basename取得工作目录名称,所以只会列出最后一个目录
\t显示时间为24小时格式,如:HH:MM
\T显示时间为12小时格式
\A显示时间为24小时格式:HH
\vBASH的版本信息
\#下达的第几个命令
\$提示字符,root时为 #,普通用户时为 $

普通用户缺钱 $

Terminal window
# 给PS1定义颜色
1)编辑配置文件
[root@oldboy ~]# vim /etc/profile
PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]\\$ "
# "/etc/profile" 81L, 2011C written
2)让配置生效
[root@oldboy ~]# source /etc/profile

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

系统优化
https://www.kpyun.fun/posts/basics/core/core07/
作者
久棹
发布于
2025-07-27
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录