拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Centos7初始优化脚本(系统优化)

Centos7初始优化脚本Centos7可优化的服务下载脚本示例代码Centos7可优化的服务打印服务下载脚本适用于虚拟机下安装Centos7-minihttps://blog.csdn.net/Memory_7s/article/details/105997879# 下载已经写好的脚本wget-chttps://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/os_int.shbashos_int.sh示例代码#!/usr/bin/env bash# 判断Linux发行版check_os(){# 如果有yum包管理器就是rhel系统发行版(whichyum||echo不是rhel发行版exit1)osrhel# 获取os的版本号os_version$(grep-shoE[0-9]/etc/redhat-release /etc/almalinux-release /etc/rocky-release /etc/centos-release|head-1)}# 判断Linux版本check_os_ver(){if[[$os$os_version-lt7]];thenecho使用此安装程序需要 CentOS 7 或更高版本。 此版本的 CentOS 太旧且不受支持.exit1fi}# 0.安装前OS环境检查check_os_env(){# 先检查系统发行版check_os# 检查Linux版本号check_os_ver}# 1. 关闭防火墙和SELinuxdisable_firewalld(){## 永久关闭防火墙systemctl disable--nowfirewalld## 注销firewalld服务systemctl mask firewalld## 立即临时关闭SELinuxsetenforce0## 永久关闭SELinuxsed-ris#(SELINUX).*#\1disabled#/etc/selinux/config## 查看SELinux永久策略是否关闭evalgrep SELINUX /etc/selinux/config}# 2.内核参数调整set_kernel_config(){echo # 关闭IPV6 net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 net.ipv6.conf.lo.disable_ipv6 1 # 开启内核开启数据包转发 # net.ipv4.ip_forward 1 # net.ipv4.conf.all.proxy_arp 1/etc/sysctl.confsysctl-p}# 3. PS1美化set_PS1(){echo # PS1美化 export PS1\n\e[1;37m[\e[m\e[1;32m\u\e[m\e[1;33m\e[m\e[1;35m\H\e[m\e[4m\w\e[m\e[1;37m] \[\e[1;33m WORK\e\e[m\e[1;36m\e[m$(echo$?)\n\$ /etc/profile.d/ps1.sh}# 3.0开启history的时间记录config_cmd_history_time(){echo # 保存历史命令10条 HISTSIZE10 # 设置history的时间记录格式 HISTTIMEFORMAT%F %R # 使变量全局生效 export HISTSIZE HISTTIMEFORMAT # 以空格开头的命令行不记录 export HISTCONTROL ignorespace /etc/profile/history.sh}# 3.1 配置vimrcset_vimrc(){echo set nocompatible set cursorline set cursorcolumn set termbuiltin_ansi set scrolloff7 set hlsearch set incsearch set autoindent set cindent set smartindent set tabstop2 set shiftwidth2 set softtabstop2 set expandtab set showmatch set wrap syntax on set t_Co256 highlight CursorLine ctermnone ctermbgDarkMagenta ctermfgWhite highlight CursorColumn ctermnone ctermbgDarkMagenta ctermfgWhite highlight Search ctermreverse ctermbgnone ctermfgnone set backspace2 set backup set autowrite set confirm set ruler set showmode set showcmd set paste set nu set encodingutf-8 ~/.vimrc}# 3.2配置.bashrcset_bashrc(){echo # 配置proxy变量 alias proxyexport all_proxysocks5://admin:Admin123.127.0.0.1:3389 alias unproxyunset all_proxy # 防止htop无任何输出 export TERMxterm /root/.bashrc}# 4.设置localeset_locale_config(){# 安装语言包,防止出现locate错误yuminstall-yglibc-minimal-langpack glibc-locale-source glibc-langpack-zh glibc-langpack-enecho LC_ALLzh_CN.UTF-8 LANGzh_CN.UTF8 /etc/locale.conf# 现在生效locatesource/etc/locale.conf}# 5. 优化sshoptimization_ssh_config(){echo # ssh_config常用的参数 ## 忽略第一次密钥检查 StrictHostKeyChecking no ## GSSAPI认证能优化ssh连接速度 GSSAPIAuthentication no ## 检查IP CheckHostIP no ## 启用压缩 Compression yes ## 指定变量 SendEnv LANG zh_CN.UTF-8 # 配置1天(60秒*1440次)内ssh客户端不超时 ## 服务器存活最大数值超过次1440次服务器无响应客户端会断掉 ServerAliveCountMax 1440 ## 服务器存活时间间隔,60秒发送一次KeepAlive ServerAliveInterval 60 ## 发送TCP保活报文 TCPKeepAlive yes # 重用相同的连接 ControlMaster auto ## 连接状态文件 ControlPath ~/.ssh/ssh_mux_%h_%p_%r ## 72小时内保持连接(只需要第一次输入密码) ControlPersist 72h /root/.ssh/config}# 6. 配置tuned自动调优set_tunded_optimization(){sed-ris#(^dynamic_tuning).*#\1 1#/etc/tuned/tuned-main.conf## 查看是否修改成功evalgrep dynamic_tuning /etc/tuned/tuned-main.conf## 重启tuned服务systemctl restart tuned## 使用虚拟机和低时延方案tuned-adm profile virtual-guest network-latency## 查看当前生效的方案evaltuned-adm active}# 7. 禁用非必需的服务开机自启disable_nonecessary_service(){# ## 创建一个不间断会话# screen -R NetworkManager;# ## 禁用network服务启用NetworkManager服务# systemctl disable --now network systemctl enable --now NetworkManager## 禁用postfix服务systemctl disable--nowpostfix## 注销postfix服务systemctl mask postfix# 精简开机自启动服务# https://blog.51cto.com/u_9625010/2385687## 必须的服务启动列表# systemctl list-unit-files|grep enable 过滤查看启动项如下# abrt-ccpp.service enabled abrt为auto bug report的缩写 用于bug报告 关闭# abrt-oops.service enabled ----------------------# abrt-vmcore.service enabled ----------------------# abrt-xorg.service enabled ----------------------# abrtd.service enabled ----------------------# auditd.service enabled 安全审计 保留# autovt.service enabled 登陆相关 保留# crond.service enabled 定时任务 保留# dbus-org.freedesktop.NetworkManager.service enabled 桌面网卡管理 关闭# dbus-org.freedesktop.nm-dispatcher.service enabled ----------------------# getty.service enabled tty控制台相关 保留# irqbalance.service enabled 优化系统中断分配 保留# kdump.service enabled 内核崩溃信息捕获 自定# microcode.service enabled 处理器稳定性增强 保留# NetworkManager-dispatcher.service enabled 网卡守护进程 关闭# NetworkManager.service enabled ----------------------# postfix.service enabled 邮件服务 关闭# rsyslog.service enabled 日志服务 保留# snmpd.service enabled snmp监控 数据抓取 保留# sshd.service enabled ssh登陆 保留# systemd-readahead-collect.service enabled 内核调用--预读取 保留# systemd-readahead-drop.service enabled ----------------------# systemd-readahead-replay.service enabled ----------------------# tuned.service enabled# default.target enabled 默认启动项 multi-user.target的软连接 保留# multi-user.target enabled 启动用户命令环境 保留# remote-fs.target enabled 集合远程文件挂载点 自定# runlevel2.target enabled 运行级别 用于兼容6的SysV 保留# runlevel3.target enabled ----------------------# runlevel4.target enabled ----------------------## 除必须启动的服务外禁用并现在停止其他服务。systemctl list-unit-files--stateenabled|grep-Evauditd.service|autovt.service|crond.service|chronyd.service|getty.service|irqbalance.service|microcode.service|rsyslog.service|NetworkManager.service|sshd.service|sysstat.service|systemd-readahead-collect.service|systemd-readahead-drop.service|systemd-readahead-replay.service|tuned.service|default.target|multi-user.target|runlevel2.target|runlevel3.target|runlevel4.target|wg-quickwg0|edge|supernode.service|ocserv.service|awk{print systemctl disable --now,$1}|bash# 禁用后查看自启服务列表还剩哪些systemctl list-unit-files--stateenabled|grepenabled}# 8. 安装常用repo源install_repo(){# 如果epel.repo文件不存在就安装epel源if[-f/etc/yum.repos.d/epel.repo]||[-f/etc/yum.repos.d/oracle-epel-ol8.repo];thenecho本地已有epel.repoelsednfinstall-yepel-releasefi# 安装elrepo源ls/etc/yum.repo.d/elrepo.repo||dnfinstall-yelrepo-release# 如果系统版本号7,就安装SCL源和IUS源if$os_version-eq7;then## centos-release-scl centos-release-scl-rh是SCL源## scl-utils scl-utils-build是SCL-utils工具yuminstall-ycentos-release-scl centos-release-scl-rh scl-utils scl-utils-build# 安装IUS源(依赖依赖epel源)## 导入IUS源gpg keyrpm--importhttps://repo.ius.io/RPM-GPG-KEY-IUS-7## 安装IUS源yuminstall-yhttps://repo.ius.io/ius-release-el7.rpmfi# 安装REMi源yuminstall-yhttp://rpms.famillecollet.com/enterprise/remi-release-$os_version.rpm# 查看repolistyum repolist}# 9. 安装常用必装软件 例如bash-completion-extras viminstall_necessary_pkg(){# 安装终端自动补全 pip3 dnf 虚拟机增强插件 linux核心标准yuminstall-ybash-completion bash-completion-extras python3-pip dnf open-vm-tools redhat-lsb## 9.1 安装wireguard内核模块# yum install -y kmod-wireguard### 在启动时自动加载wireguard模块# echo wireguard /etc/modules-load.d/wireguard.conf# 安装wg-quickyuminstall-ywireguard-tools## 9.2 安装常用软件yuminstall-ypvnet-toolsvimlrzszcurlwgettreescreensocatlsoftelnet tcpdump iperf3 qrencode proxychains-ngtraceroutebind-utils yuminstall-yconntrack jq sysstat libseccompgitchrony## 9.3 卸载不常用软件nanoyum autoremove-ynano}# 10.配置xsync工具create_xsync(){# 检查目录是否存在ls~/bin/dev/null||mkdir-p~/binecho #!/usr/bin/env bash # 0.依赖包检查 which rsync /dev/null || yum install -y rsync || apt install -y rsync ls ~/xsync.txt /dev/null || touch ~/xsync.txt # 1.判断参数个数没有参数就会退出 ## $#获取参数个数-lt 1减1 if [ $# -lt 1 ]; then # 打印使用示例 echo 必需有一个参数 echo 使用示例: xsync 目录 echo 意思是将指定目录同步到远程目录 exit fi # 2. 遍历所有服务器 # ******************注意for循环这里需要根据情况将机器列表改成相应的主机名****************** for host in $(cat ~/xsync.txt); do echo 当前主机: $host # 3. 遍历所有目录并发送 # $: 获取所有参数 echo ****************** 以列表形式显示所有的输入参数: $ ****************** for file in $; do # 4. 判断文件是否存在 if [ -e $file ]; then # 5. 获取父目录 pdir$( cd -P $(dirname $file) || exit pwd ) echo ------父亲目录是: $pdir------ # 6. 获取当前文件名 fname$(basename $file) echo ----------------当前文件:$fname----------- # 在目标主机上创建父目录 ssh $host mkdir -p $pdir ## -a 表示以递归方式传输文件并保持所有文件属性等于-rlptgoD ## -S 将空序列变成稀疏块 ## -H 保留硬链结 ## -P 断点续传并打印过程, rsync -aSHP $pdir/$fname $host:$pdir # rsync同步文件到远程目录 else echo $file 文件不存在! fi done done~/bin/xsync# 赋予~/bin/xsync可执行权限chmodx ~/bin/xsync}# 11. 阻止内核更新prevent_kernel_upgrade(){# 安装versionlock工具yuminstall-ydnf-command(versionlock)yuminstall-yyum-plugin-versionlock# 备份原配置cp/etc/yum.conf /etc/yum.conf.bak# 禁止yum升级内核-可能会造成软件包的依赖问题yum versionlock kernel* centos-release* initscripts*# 添加排除的包前缀,如果过滤规则存在就不添加if!grepexcludekernel*/etc/yum.conf/dev/null;then# 添加禁止升级的包sed-i$a excludekernel* centos-release* initscripts*/etc/yum.conffi}main(){# 0.安装前OS环境检查check_os_env# 1. 关闭防火墙和SELinuxdisable_firewalld# 2.内核参数调整set_kernel_config# 3. PS1美化set_PS1# 3.0开启history的时间记录config_cmd_history_time# 3.1 美化vimset_vimrc# 3.2 设置bashrcset_bashrc# 4.设置localeset_locale_config# 5. 优化sshoptimization_ssh_config# 6. 配置tuned自动调优set_tunded_optimization# 7. 禁用非必需的postfix服务,启用NetworkManager服务disable_nonecessary_service# 8. 安装常用repo源install_repo# 9. 安装常用必装软件install_necessary_pkg# 10 创建同步工具xsynccreate_xsync# 11. 阻止内核升级#prevent_kernel_upgrade}# 启动主方法main
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门