闲言碎语
基于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 {作用目录} | 权限设定(读/写/执行) |
文件目录权限字母表示法
文件目录权限八进制数字表示法
应用样例:
指定(=)权限: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* # 显示出的列从左到右依次是:包名.架构、版本号、来自库
# 列出库中可用的最新内核版本(以下示例仅从 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