闲言碎语

基于CentOS推出的开源系统,国内的阿里推出Anolis OS,华为的OpenEuler。为填补因 CentOS Linux 稳定版本停服而留下的空白,境外的RockyLinux,AlmaLinux。

同样的基于RHEL的下游开源系统:

Rocky Linux

这一切都始于一条博客评论

2020年12月8日,Red Hat公司宣布将停止开发CentOS(一个可用于生产环境的Red Hat Enterprise Linux下游版本)。作为替代,Red Hat采用该操作系统较新的上游开发版本——称为 "CentOS Stream"。作为回应,CentOS的最初创始人格雷戈里·库尔泽(Gregory Kurtzer) 通过CentOS网站上的评论宣布,他将再次启动一个项目以实现CentOS的最初目标。而之所以命名为Rocky Linux,是为了向早期CentOS的联合创始人洛基·麦高(Rocky McGaugh) 致敬。

作为RHEL的下游Linux操作系统替代方案,并继承了原CentOS的开源免费特点。2021年6月21日,Rocky Linux 8.4 稳定版发布,代号为"Green Obsidian"(绿色黑曜石)。官网:https://rockylinux.org/

AlmaLinux

源自于CloudLinux团队,一个开源的、由社区拥有并治理且永久免费的企业 Linux 发行版,专注于长期稳定性,提供一个强大的生产级平台。AlmaLinux OS 与 RHEL® 和 CentOS Stream 是 1:1 的二进制兼容。

AlmaLinux OS 是一个企业级服务器操作系统和一个稳定的 Linux 发行版,定期发布,支持周期很长。 您可以依靠 AlmaLinux OS 来运行任何关键工作负载。背靠CloudLinux团队及财务支持,受到大众的关注。官网:https://almalinux.org/

Linux Terminal tool

名称/方式 说明
Windows cmd 基础工具
Windows PowerShell 基础工具,Microsoft持续更新
Windows Terminal Microsoft推出的新工具,美观
Fluent Terminal 第三方工具,美观
Tabby 第三方工具,美观,支持插件,官网有Web版
Xshell 第三方工具,企业版功能强大
MobaXterm 第三方工具,企业版功能强大
PuTTY 老牌第三方工具
终端 说明
ssh {目标系统用户名}@{服务器IP} -p {端口} 终端连接到Linux,默认端口22
Tab键 命令补全;单按:精准补全、双按:可选命令

Base

命令 说明
reboot 重启Linux系统
logout 退出终端登录
poweroff 断电关机
halt [-p] 关机 [断电]
shutdown -h now 定时关机(管理员权限)
shutdown -r now 定时重启(管理员权限)
w,who 查看当前用户登录信息
last 查看当前用户登录历史
lastlog 查看所有用户登录记录
id [用户] 查看当前[指定]用户的 UID\GID 及所属的用户组等信息
passwd {用户名} 修改用户的密码
su {目标用户名} 切换当前系统用户
uname -a 系统内核信息
dmesg 查看系统开启过程日志
ss -plants 网络连接及端口情况
top 即时显示 process 的动态
jobs 查看挂起的任务列表(如Ctrl+z后的作业)
uptime 系统运行时长|当前用户数|过去1/5/15分钟的平均负载

System settings

env 查看系统中所有的环境变量信息
nmtui 图形化的网络信息、主机信息设置
locale 查看系统配置的区域字符集
locale -a 查看系统支持的区域字符集
localectl 查看区域字符集(locale 升级版)
localectl list-locales 区域字符集列表
localectl set-locale {encoding} 设置区域字符集
hostname 查看临时的主机名
hostname -b {newname} 设置临时的主机名
hostnamectl 查看主机信息
hostnamectl set-hostname {newname} 设置静态(永久)主机名
hostnamectl set-hostname {newname} --pretty 不受限制的个性化静态主机名

硬件资源

ip addr 查看网卡信息
free [-h] 内存使用情况 [换算单位]
fdisk 硬盘管理
fdisk -l 硬盘所有分区信息
df [-h] 磁盘的空间使用情况 [换算单位]
du [-h] 所在目录的占用空间 [换算单位]

命令行状态切换

输入命令回车后系统执行当前命令;当前命令执行完成后自动回到命令行状态,便于再次输入命令。
当前命令未执行完成时(如:拷贝大文件,升级安装包等),命令执行状态。
以下说明了对以上场景的操作:

命令 说明
Ctrl+c 保持当前的运行,切换回命令行状态
Ctrl+z 暂停/挂起当前正在执行的命令,返回命令行状态(可 fg 或 bg 恢复继续执行)
Ctrl+d 结束/完成/退出/断开 命令行状态(类似与exit,失去终端的连接)
 

Folder

命令 说明
pwd 当前所在目录
ll [-a] 列出当前目录[带隐藏的]文件
ls [-la] 列出当前目录[带隐藏的]文件
cd 切换到个人目录
cd {目标路径} 切换到指定路径
cd {..|../..|-} 切换到 上级|上上级|上次 目录
mkdir {目录名称} 创建文件夹
mkdir -p {目录名称} 创建多级目录文件夹
mv {旧文件夹名} {新目录文件夹名} 移动文件(重命名)
rm -rf {指定目录或文件} 删除文件夹/文件,-r递归 -f 强制
find {dir} -name {*.txt} 查找,指定目录模糊搜索文件
find {dir} -name {folder_name} -type f 查找,模糊搜索文件夹名称
cp {源目录文件名} {新目录文件名} 复制文件
cp -a {源目录文件名} {新目录文件名} 复制文件,保留链接、属性等目录下的全部
cp -r {源目录} {目标目录} 递归复制目录/文件
\cp -r {源目录} {目标目录} 递归复制目录/文件(\ 强制覆盖)
scp -r {local_file} {user}@{ip}:{remotefolder} 远传上传文件 -r 递归目录
scp -r {user}@{ip}:{remotefolder} {localfolder} 下载远传文件 -r 递归目录
 

File

命令 说明
stat {filename} 查看文件属性(大小、类型、权限、时间等)
cat {filename} 查看文件内容
cat {filename} -n 带行号的内容显示
cat > {filename} 创建一个全新的空文件并录入内容,回车是保存
more {filename} 分页查看文件内容;空格/f 下页,b上页,回车下一行,q退出
tail -f {filename} 实时滚动显示文件内容
tail -n 20 {filename} 查看文件内容的后n行,默认10行,-n 指定显示行数
head -n 20 {filename} 查看文件内容的前n行,默认10行,-n 指定显示行数
grep {关键字/正则} {文件} 内容搜索,指定文件中查找关键字
{命令} | grep {关键字/正则} 流搜索,按过滤方式;跟在其它命令后的输出流搜索
> {filename} 创建新的空文件
echo '{文本}' > {目标文件名} 命令结果流覆盖到目标文件内,自动创建
echo '{文本}' >> {目标文件名} 命令结果流追加到目标文件内,自动创建
touch {filename} 更新文件的 访问编辑变更时间,自动创建
 

Date

命令 说明
cal 显示日历
date 显示时间
timedatectl 所属时区
tzselect 按选项操作方式重设时区
timedatectl list-timezones 可用时区列表
timedatectl list-timezones | grep Shangha* 搜索时区
timedatectl set-timezone {时区名} 设置时区
 

Network

命令 说明
ip a 网卡信息
ss 网卡连接信息
ss -plant 连接中的网络及端口
netstat -pantu 连接中的网络及端口
ifstat [网卡名] 网络[全部/指定]接口流量状态
dhclient {网卡名} 以 dhcp 模式启用指定网卡
nmcli:network manager client
nmcli 查看网络设备基本信息
nmcli g [status] 查看常规信息(nmcli general status)
nmcli g hostname {新主机名} 修改主机名
nmcli n 网络控制(nmcli networking)
nmcli n connectivity 查看网络连接状态
nmcli n on/off 开启/关闭网络连接
nmcli c [show] 网络/网卡连接信息(nmcli connection show)
nmcli c show {网卡名} 指定网络/网卡连接详细信息)
nmcli c modify [网卡名] {项} {值} 修改网卡的参数
nmcli c reload [网卡名] 重载所有/指定网卡配置文件
nmcli c load /etc/.../ifcfg-{网卡名} 加载指定目录的配置文件
nmcli c up {网卡名} 启动指定网卡
nmcli c down {网卡名} 停止指定网卡
nmcli c delete {网卡名} 删除指定网卡配置文件
nmcli d 网络设备信息(nmcli device)
nmcli d show 网络设备详细配置信息
nmcli d reapply {网卡名} 重启网卡设备
nmcli d connect {网卡名} 激活指定的网卡
nmcli d disconnect {网卡名} 临时关闭指定网卡
nmcli --fields all c|d show [网卡名] 查看类别下所有字段的所有配置信息
nmcli -f GENERAL d show [网卡名] 查看网卡 device.general 字段下的所有配置信息
nmcli -f ipv4.addresses c show enp0s8 查看网卡 enp0s8 配置项 conn.ipv4.addresses 的值
 

User

命令 说明
groups 当前用户所属组
groups {用户名A} {用户名B} 查看多个用户所属组
groupadd {组名} 创建用户组
cat /etc/group 查看系统用户组
groupdel {组名} 删除用户组
groupadd {groupname} 创建用户组
groupmod -n {新名} {旧名} 修改用户组名
newgrp {groupname} 当前用户切换到指定组为登录状态
users 当前已登录用户列表
useradd -g {组名} {用户名} 创建新用户
useradd -r -g {gname} -s /sbin/nologin {uname} 创建不可登录系统的用户
cat /etc/passwd 查看用户列表
userdel {用户名} 删除用户
usermod -g {新组名} {用户名} 修改现有用户所属分组
usermod -i {新名} {旧名} 修改现有用户名
 

Install

国内热门镜像站 说明
南京大学 网速拉满
上海交通大学 网速拉满,资源一般
华为云 网速拉满,资源不多
清华大学 网速拉满,资源不多
中国科学技术大学 网速拉满,资源一般,说明不够详细
阿里云 网速有限制,貌似最快1MB/s
资源库 说明
Base 官网源,系统自带
EPEL 常用的,第三方(应用)资源库
ELRepo 第三方(内核)资源库
命令 说明
rpm:安装命令,程序依赖项需手动逐步安装
rpm -qal | grep {关键字}* 搜索已安装(* 模糊搜索的占位符)
yum:rpm的代替版,自动下载安装依赖项
yum repolist [enabled|disabled|all] 显示本机所有可用的软件资源库信息
yum search {名称} 搜索资源库中的软件安装包
yum info {名称} 查看软件包详情
yum list {keyword}* 在所有资源库中搜索包,已装的/未装的
yum list {名称} --showduplicates 列出所有版本
yum list installed 查询已安装应用
yum install {名称} 安装指定应用
yum reinstall {名称} 重装指定应用包
yum downgrade {名称} 回滚指定软件的版本
yum remove {程序名} 卸载已安装
yum autoremove 卸载无用孤立的软件包
yum clean all 清空安装包缓存
yum makecache 重建包管理器缓存(新的缓存索引会更快)
yum check-update 查看系统中可升级的应用
yum update {应用名称} 升级指定应用
yum update 全部批量升级应用(系统级升级)
yum distro-sync 更新软件包到最新的稳定发行版
yum provides {命令} 检查某个命令属于哪个安装包
yum-config-manager --enable {库名} 永久启用作用的资源包库(旧版)
yum-config-manager --disable {库名} 永久禁用作用的资源包库(旧版)
yum config-manager --set-enabled {库名} 永久启用作用的资源包库(新版)
yum config-manager --set-disabled {库名} 永久禁用作用的资源包库(新版)
yum --disablerepo='*' --enablerepo='epel' list {key}* 本次 排除/指定 资源库的操作
dnf:新一代的更优秀的rpm软件包管理器,yum的替代版,于RHEL8中,格式同yum。

文本编辑器

命令 说明
vi {文件路径} 打开文件 [输入i 编辑模式,输入:命令模式,ESC退出当前模式]
/{keywork} 搜索关键字,按 n 查找下一个
u 撤回上次<输入模式>时的变更
dd 删除光标所在整行
:w 保存文件
:wq 保存后退出文件
:q 退出文件
:q! 不保存强制退出文件
:set number 显示行号
:set encoding=utf-8 设置编码格式
 

Common / Tools

命令 说明
sh Bourne Shell,命令解释器
sh -c 'ls -l' 执行一段脚本命令
sh common.sh 执行一个脚本命令包
bash Bourne Again Shell,sh 的升级版
watch -n 1 -d {命令} 周期性(1s)重复执行指定命令,全屏(变化高亮)显示结果
管道命令 / 前后台命令 / 多命令
{命令1} ; {命令2} ; {命令3} 依次执行的多命令,无所谓成功失败
{命令1} | {命令2} 管道命令;之前命令的处理结果,给之后的命令再处理
{命令1} || {命令2} 逻辑命令;命令1失败后才会执行命令2
nohup {命令} & 后台命令;在后台运行,命令行可继续输入其它命令
{命令1} && {命令2} 逻辑命令;之前命令顺利完成后,再执行之后的命令
{命令1} -daemon 后台命令;在后台运行,命令行可继续输入其它命令
tar:文件解压缩工具
tar -czvf {path} {xxx.tar.gz} 文件解压缩
tar -xzvf {xxx.tar.gz} -C {到指定目录} 文件解压缩到指定目录
curl:第三方Web请求工具
curl {网络链接} 网络请求
curl -X GET {网络链接} 指定请求方式
curl -X POST --data 'p=abc' {网络链接} 表单POST提交方式
curl -I {网络链接} 仅输出返回Head
curl -i {网络链接} 输出返回头和内容
curl -O {url} 下载文件到当前目录,以原名称保存
curl -o /opt/newfilename.zip {url} 指定文件下载到的目录及名称
curl -# -o /opt/newfilename.zip {url} 指定文件下载到的目录及名称 并显示进度条
wget:第三方下载工具
wget {网络资源链接} {dir} 下载资源到指定目录
netstat:系统网络状态
netstat -a 全部的网络状态
netstat -i 显示网卡列表
netstat -pantu 连接中的网络及端口
 

Authority

命令 说明
chown -R {用户名}:{用户组} {作用目录} 变更目录所属用户
chgrp -R {用户组} {作用目录} 变更目录所属群组
chgrp -R --reference={参考目录} {作用目录} 复制为相同的群组
chmod -R 754 {作用目录} 权限设定(读/写/执行)

文件目录权限字母表示法
基于 RedHat 8 系的 Linux 常用命令及系统优化-小白菜博客
文件目录权限八进制数字表示法
基于 RedHat 8 系的 Linux 常用命令及系统优化-小白菜博客
应用样例:
指定(=)权限:chmod u=rwx,g=rx,o=r {Resources}
追加(+)权限:chmod u+x,g+wx,o+w {Resources}
去除(-)权限:chmod u-x,g-w,o-wx {Resources}
全部(ugo)追加某种权限:chmod +w,+x {Resources}

 

Process

命令 说明
ps 显示所有进程
ps -aux | grep {keyword}* 模糊搜索
ps -auxfr 运行的进程,-all -user -excute -format -running
ps -aux --sort -pcpu 按CPU利用率倒序排列
ps -aux --sort -pmem 按内存利用率倒序排列
ps -aux --sort -pcpu,+pmem 按CPU内存利用率综合排序
ps -aux --sort -pcpu,+pmem | head -n 5 head过滤显示前n条
kill {pid} 强制杀死指定的进程
 

Service

命令 说明
systemctl 显示所有系统服务(管理以.service为后缀的服务)
systemctl | grep {关键字状态等} 模糊搜索服务
systemctl [start|stop|restart|status|reload] {name} 管理服务
systemctl daemon-reload 重载所有变更的服务配置
systemctl cat {name} 查看指定服务(手动)配置信息
systemctl show {name} 查看底层全部默认配置信息
systemctl [enable|disable] {name} 设置开机启动
systemctl [is-enabled|is-active|is-failed] {name} 查看状态
systemctl --failed 列出启动失败的服务
systemctl list-units 服务活动详细列表
systemctl list-unit-files 查看所有服务状况
systemctl kill {name} 终止服务
systemctl -H {user}@{IP} {active} {name} 远程管理服务
 

Firewall

命令 说明
firewall-cmd --zone=public --add-port=80/tcp --permanent 添加
firewall-cmd --reload 重启
firewall-cmd --list-ports 查看
firewall-cmd --zone=public --remove-port=80/tcp --permanent 删除
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 转发(将80转发至8080)
 

Configuration

目录/文件 命令 说明
/etc/hostname hostnamectl 主机名配置文件
/etc/hosts - 系统HOST配置文件
/etc/sysctl.conf sysctl 系统内核配置文件
/etc/pam.d/system-auth - 系统密码策略配置文件
/etc/yum.repos.d/ yum / dnf 系统镜像配置文件目录
/etc/ssh/sshd_config - SSH配置文件
/etc/security/limits.conf ulimit 系统资源限制配置文件
/usr/lib/systemd/system/ systemctl 系统服务默认配置文件目录
/etc/sysconfig/network-scripts/ifcfg-{网卡名} nmcli RHEL8网卡配置文件地址
/etc/NetworkManager/system-connections/{网卡名}.nmconnection nmcli RHEL9网卡配置文件地址

系统分区

基本的必要分区

挂载点 建议 说明
/ 剩余最大空间 根节点
/home >10% 按用户量
/var ≈50% 默认安装应用的文件数据
/boot 100MB - 2GB 通常500M以内(难免会有大型App)
/BISOBoot 2MB - 4MB BIOS使用空间
swap 2GB - 系统最大内存容量 物理内存不足时启用的临时内存

Static IP

######################## RHEL 8 ########################
# 一、修改配置文件
# 1、打开对应网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-{网卡名}
# 2、原有属性值变更
BOOTPROTO=static
ONBOOT=yes
# 3、追加配置项
IPADDR=192.168.1.131
PREFIX=24
GATEWAY=192.168.1.1
# 4、重启网络服务(centos7服务名=network)
systemctl restart NetworkManager
# 注:有的版本需要重启系统才有效 reboot
#
# 二、nmcli 命令行修改方式
# 命令修改指定网卡配置文件
# 修改自启动(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手动
# 修改 ipv4.addresses = IP
nmcli c m enp0s8 connection.autoconnect yes ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重启网卡(刷新网卡驱动)
nmcli d reapply enp0s8
#
######################## RHEL 9 ########################
# 一、修改配置文件
# 1、打开对应网卡的配置文件
vi /etc/NetworkManager/system-connections/{网卡名}.nmconnection
# 2、属性值变更
[ipv4]
method=manual
address=192.168.1.103/24
# 3、重启网卡
systemctl restart NetworkManager
#
# 二、nmcli 命令行修改方式
# 命令修改指定网卡配置文件
# 修改自启动(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手动
# 修改 ipv4.addresses = IP
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重启网卡(刷新网卡驱动)
nmcli d reapply enp0s8

SSH 优化

# 关闭不必要的验证过程(GSSAPIAuthentication 和 UseDNS)
# 1、搜索配置项
cat /etc/ssh/sshd_config -n | grep GSSAPIAuthentication
cat /etc/ssh/sshd_config -n | grep UseDNS
# 2、编辑配置项
vi /etc/ssh/sshd_config
# GSSAPIAuthentication 变更为 no
# UseDNS 变更为 no
# 3、:wq 保存退出配置文件
# 4、重启SSH服务,使其生效
systemctl restart sshd

应用升级

系统默认为官方提供的资源库,默认通过官方资源库升级应用,可设置为国内镜像源(参考 install

# 1、清空包管理器缓存(yum/dnf)
yum clean all
# 2、重新建立包管理器缓存索引
yum makecache
# 3、查看可升级的应用
yum check-update
# 4、升级指定软件
yum update {name}
# 5、全部升级,自动升级可升级的软件(相当于整个系统升级)
yum update
# 注:有些应用安装慢,必须等到出现单独一行的Complete!字样,才算完成。

第三方库 EPEL 的应用

EPEL 是由 Fedora 社区打造,属于 RHEL 的上游,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装了 EPEL 后,可通过 yum 安装来自于EPEL库的软件。

# 1、安装 epel-release
yum -y install epel-release
# 2、验证 epel-release 库的启用
yum repolist all	# 是否出现 epel 并默认 enabled

建议使用国内镜像源,可参考国内云镜像
查看(验证)安装后的效果

# 清理 yum 缓存,重新建立包管理器缓存索引
yum clean all && yum makecache
# 测试搜索安装包,显示出 来自于不同的库
yum list sys*	# 显示出的列从左到右依次是:包名.架构、版本号、来自库

第三方库 ELRepo 的应用

ELRepo 是用于 Enterprise Linux 软件包的RPM存储库。它支持Red Hat Enterprise Linux(RHEL)及其衍生版本,这里主要是为了用它来升级 Linux 内核 Kernel。

1、将 ELRepo 存储库安装到系统,参考官网:http://elrepo.org/tiki/HomePage

# 首先要导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# CentOS7的安装
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# CentOS8的安装
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

启用 ELRepo 的 elrepo-kernel 资源库(为后续内核升级做准备,或者忽略)

# 1、查看 ELRepo 库的配置文件
cat /etc/yum.repos.d/elrepo.repo
#
# 2、其中 ELRepo 的 elrepo-kernel 项默认为禁用,可启用 elrepo-kernel
# CentOS 8 方式启用 elrepo-kernel:
yum config-manager --set-enabled elrepo-kernel
# CentOS 7 方式启用 elrepo-kernel,编辑所属配置文件:vi /etc/yum.repos.d/elrepo.repo
# 找到 [elrepo-kernel] 下的 enabled 设为1,没有则在此区域追加一行。示例行:enabled=1
#
# 3、查看(验证)启用的资源库列表中是否包含 elrepo-kernel 库
yum repolist enabled

2、更换资源库的镜像源 使用国内镜像源,可参考清华大学 ELRepo 镜像使用帮助
也可使用如下命令方式变更镜像源

# 依据清华大学的使用帮助,命令方式如下:
# 1、mirrorlist=所在行全部加注释#
sed -i 's/^mirrorlist=/#&/g' /etc/yum.repos.d/elrepo.repo
# 2、域名 elrepo.org/linux 的替换
sed -i 's/elrepo.org\/linux/mirrors.tuna.tsinghua.edu.cn\/elrepo/g' /etc/yum.repos.d/elrepo.repo

3、更新 yum 可用资源库的引用缓存

# 清理 yum 缓存
yun clean all
# 生成新缓存
yum makecache
# (可选)测试搜索安装包,显示出 来自于不同的库
yum list libb*	# 显示出的列从左到右依次是:包名.架构、版本号、来自库

4、通过 ELRepo 库安装新内核

# 列出库中可用的最新内核版本(以下示例仅从 ELRepo 的 elrepo-kernel 库安装,ml:最新稳定版,lt:长期支持版)
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-
# 安装指定版本(名称 kernel-ml:为前缀的整套安装)
yum --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml
# 查看(验证)已安装的版本
yum list installed | grep kernel*

- 设置默认启动的内核版本,请参考 [默认内核设定] 节点

设定默认启动的内核

多内核下的默认内核设置:(内核的安装请参考 [通过 ELRepo 库安装新内核] 节点)

CentOS 7.x

# 1、查看当前使用内核
uname -sr
# 2、查看系统已有内核
cat /boot/grub2/grub.cfg | grep "CentOS Linux"
# 3、从已有内核中,设置默认启动内核
grub2-set-default 'CentOS Linux (3.10.0-1160.59.1.el7.x86_64) 7 (Core)'
# 4、验证默认内核
grub2-editenv list
# 5、(可选)删除前,查询所有内核名称
rpm -qa | grep kernel-
# 6、(可选)删除指定内核
yum remove kernel-3.10.0-1160.45.1.el7.x86_64
# 7、重启系统(新内核的应用)
reboot

CentOS 8.x

# 安装新内核后,系统自动设为默认启动内核
# 1、查看当前使用内核
uname -sr
# 2、查看系统已有内核
ls -l /boot/vmlinuz-*
# 3、从已有内核中,设置默认启动内核
grubby --set-default=/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64
# 4、(可选)删除前,查询所有内核名称
rpm -qa | grep kernel-
# 5、(可选)删除指定内核
yum remove kernel-core-4.18.0-348.el8.x86_64
# 6、重启系统(新内核的应用)
reboot

内网优化 - hosts

内网中,计算机的相互访问,都需要通过DNS的解析,需要一定的资源消耗和耗时,并发状态下,造成一定的效率瓶颈;
计算机之间的访问方式:DNS缓存 -> 本机 hosts -> DNS服务器;
因此,为内网计算机之间的相互访问创造捷径,绕过DNS服务器,优化hosts将有显著的响应提升。

# 1、编辑配置hosts文件
vi /etc/hosts
# 2、为每台计算机hosts配置所有计算机的 IP-计算机名 的映射关系
192.168.56.101 cos78-cluster-a
192.168.56.102 cos78-cluster-b
192.168.56.103 cos78-cluster-c
# 注:修改了某台计算机名后,需要每台hosts文件对应的名称都要变更。

内网优化 - SELinux

SELinux(security enhanced linux)安全增强型Linux系统,它是一个linux内核模块,也是Linux的一个安全子系统。Selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
配置文件路径:/etc/selinux/config

配置文件中的 SELINUXTYPE 提供了三种策略方式:

  • targeted - 目标进程受到保护(默认)
  • minimum - 修改目标策略。仅保护选定的进程
  • mls - 多级安全保护

SELinux相当于一个插件(内核级的插件),他约束了各个应用的动作限制,用布尔值的方式开启关闭某项应用的行为。

行为设置命令:

getsebool -a			# 列出了所有可配置的动作权限,物理目录:/sys/fs/selinux/booleans/
setsebool -P {行为项} 1		# 设置某个行为的权限(0:禁止,1:允许)
#
#
# 案例1:设置nfs可读写
setsebool -P nfs_export_all_rw 1
# 案例2:允许vsvtp匿名用户写入的权限
setsebool -P allow_ftpd_anon_write 1

配置文件中的 SELINUX 有两个级别:强制、警告

  • setenforce 1 :表示强制(Enforcing)
  • setenforce 0 :表示警告(Permissive)
# 1、SELinux命令
sestatus			# SELinux的详细信息
getenforce			# 查看当前模式
setenforce [0|1]		# 设定模式 警告/强制

关闭禁用 SELinux

# 1、设置配置文件,彻底关闭SELinux
# - 1.1、打开SELinux配置文件
vi /etc/selinux/config
# - 1.2、设置SELinux为关闭:SELINUX=disabled
# - 1.3、保存退出配置文件
#
# 2、验证,重启系统后查看SELinux当前状态
getenforce

内网优化 - Swap (交换分区)

虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
Swap分区运行性能不够快,或禁用或少用,极端情况下再启用,调整启用条件参数。

# 1、(三种方式)查看现状
# - 1.1、检查服务器上的Swap状态
swapon -d 或 swapon -s
# - 1.2、查看整个内存的使用情况(其中包括了实体内存、Swap、共享内存段、系统核心使用的缓冲区等)
free -h
#
# 2、少用,调整使用概率(设置极端情况下的使用条件)
# - 2.1、查看现启用的触发值(物理内存剩余的百分比值)
cat /proc/sys/vm/swappiness
# - 2.2、查看是否已手动配置
vi /etc/sysctl.conf
# - 2.3、追加/修改配置项,变更触发参数(物理内存剩余的百分比值)
vm.swappiness = 1
# - 2.4、内核重新加载配置项(或重启系统)
sysctl -p
#
# 3、彻底关闭/开启
# 关闭Swap
swapoff -a
# 开启Swap
swapon -a
#
# 4、检查修改结果
# - 4.1、列出内核所有配置参数,从中查找[vm.swappiness]项,是否已更新为新值
sysctl -a
# - 4.2、或查看内核指定配置项的值
sysctl -q vm.swappiness

内网优化 - 禁用IPv6

IPv6的出现是为了解决IPv4的使用量不足,所以在内网中,IPv6是多余的。

# 假设网卡名称是 enp0s8
# 禁用 ipv6.method = disabled
nmcli c modify enp0s8 ipv6.method disabled
# 重载网卡设备
nmcli d reapply enp0s8

内网优化 - 减少不必要的I/O写入

读取磁盘数据时,关闭文件元数据的写入(如最后访问时间等)
确保在挂载所有磁盘时使用noatime时间以及挂载所有目录时使用nodir时间。

# 打开配置文件
vi /etc/fstab
# 相应磁盘default后追加[,noatime,nodiratime]
# 样例效果:
# /dev/mapper/cl-root     /               xfs     defaults,noatime,nodiratime        0 0
# :wq 保存退出后,reboot 重启系统后生效

内网优化 - 内核参数优化

通过在 /etc/sysctl.conf 中追加内核参数来永久保存更改
配置项从 /etc/sysctl.conf 中移除后,系统还原为默认值

# 手动设定 Kernel 内核的配置文件
vi /etc/sysctl.conf
#
# 修改/追加 配置项,用以改变内核默认参数值(1:启用,0:关闭)
fs.file-max = 65535				# 表示最大可以打开的句柄数;
fs.aio-max-nr = 1048576				# 最大并发I/O请求数
net.ipv4.tcp_max_tw_buckets = 6000		# TCP最大的连接数,默认为32768
net.ipv4.tcp_fin_timeout = 10			# 缩短TCP无用状态的超时,更有效的重新利用或销毁,默认为60
net.ipv4.tcp_tw_reuse = 1			# 回收的TCP可重新利用
net.ipv4.tcp_syncookies = 1			# 当出现SYN等待队列溢出时,启用cookies进行处理。
net.ipv4.tcp_keepalive_time = 120		# 连接健康检测,默认7200秒
net.ipv4.tcp_keepalive_intvl = 7		# 连接健康检测间隔,默认75秒
net.ipv4.tcp_keepalive_probes = 3		# 连接健康检测连续成功次数判定,默认9
net.ipv4.tcp_rmem = 32768 131072 16777216	# 接收窗口尺寸的最小,默认,最大值
net.ipv4.tcp_wmem = 8192 262144 16777216	# 发送窗口尺寸的最小,默认,最大值
net.ipv4.tcp_mem = 786432 1048576 1572864	# 发送窗口尺寸的最小,默认,最大值
net.core.somaxconn = 16384			# 监听限制网络最大数据包的数量
net.core.rmem_max = 16777216			# 操作系统接收缓冲区最大值
net.core.wmem_max = 16777216			# 操作系统发送缓冲区最大值
net.core.rmem_default = 262144			# 操作系统接收缓冲区的默认大小
net.core.wmem_default = 262144			# 操作系统发送缓冲区的默认大小
#
# 内核重新加载配置项后生效
sysctl -p
# 查看所有内核参数生效后的配置
sysctl -a
# 涉及到网络的,重启网卡(CentOS7名称=network)
systemctl restart NetworkManager