Ubuntu 22.04开局部署一键优化脚本
作者:LeeHang
邮箱:1551870715@qq.com
脚本功能简介:
本脚本旨在为新安装的Ubuntu 22.04系统提供一键优化功能,包括但不限于:

1.更改软件源为阿里云,以加速软件包的下载速度。
2.关闭防火墙和SELinux,减少不必要的安全检查。
3.优化SSH服务配置,提高远程管理的安全性。
4.同步系统时间,确保系统时间的准确性。
5.优化swap分区设置,提高系统性能。
6.调整文件描述符限制,提升系统并发处理能力。
7.自定义命令提示符颜色,增强终端视觉效果。
8.安装常用Linux工具,如vim、net-tools等。
9.优化系统内核参数,提升系统响应速度和网络性能。
10.提供菜单级选项,用户可以根据需要选择优化项或执行一键优化。
11.脚本使用说明:
12.直接运行此脚本,将显示菜单,用户可以选择执行单个优化操作或全部优化。
选择一键优化将自动执行所有优化步骤,脚本如下:

点击查看代码
#!/bin/bash
#
#  ******************************************************************************
#  * 脚本名称:Ubuntu22.04-Optimization-Script.sh
#  *
#  * 作者:LeeHang
#  *
#  * 邮箱:1551870715@qq.com
#  *
#  * 创建日期:2023-11-05
#  *
#  * 版本:1.0
#  *
#  * 描述:此脚本用于自动化Ubuntu 22.04操作系统的优化配置。
#  *        包括更换软件源、安全设置、性能优化等。
#  ******************************************************************************
#
#  ******************************************************************************

# 定义颜色代码
RED="\033[0;31m"
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
BLUE="\033[0;34m"
MAGENTA="\033[0;35m"
CYAN="\033[0;36m"
WHITE="\033[0;37m"
RESET="\033[0m"

# 函数:更改yum源为阿里云
change_yum_source() {
    echo "更改yum源为阿里云..."
    # 备份原始的sources.list文件
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    # 写入阿里云的源
    sudo bash -c 'cat > /etc/apt/sources.list' << EOF
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc) main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc) main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ $(lsb_release -sc)-security main restricted universe multiverse
EOF
    # 更新软件源
    sudo apt-get update
}

# 函数:关闭防火墙以及selinux
disable_firewall_selinux() {
    echo "关闭防火墙以及selinux..."
    # 关闭防火墙
    sudo ufw disable
    # Ubuntu默认没有selinux,如果需要可以安装后关闭
    # sudo apt-get install selinux-utils
    # sudo setenforce 0
}

# 函数:时间同步
time_sync() {
    echo "正在将时区设置为中国上海时区..."
    # 设置时区为中国时区
    sudo timedatectl set-timezone Asia/Shanghai
    # 检查时区设置是否成功
    if [ $? -eq 0 ]; then
        # 开启时间同步服务
        echo "正在开启时间同步服务..."
        sudo timedatectl set-ntp on
        # 检查NTP服务状态
        if sudo timedatectl status | grep -q "NTP service: active"; then
            echo -e "${GREEN}时区已成功设置为中国上海时区,并且时间同步服务已开启。${RESET}"
        else
            echo -e "${GREEN}时区已成功设置为中国上海时区,但时间同步服务未能开启。${RESET}"
        fi
    else
        echo -e "${GREEN}时区设置失败,请检查您的输入。${RESET}"
    fi
}

# 函数:swap分区优化
swap_partition_optimization() {
    echo "swap分区优化..."
    # 创建swap文件
    sudo fallocate -l 1G /swapfile
    # 设置swap文件权限
    sudo chmod 600 /swapfile
    # 格式化swap文件
    sudo mkswap /swapfile
    # 启用swap文件
    sudo swapon /swapfile
    # 设置开机启动
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
}

# 函数:优化文件描述符
optimize_file_descriptors() {
    echo "优化文件描述符..."

    # 编辑limits.conf文件以增加文件描述符限制
    sudo bash -c 'cat > /etc/security/limits.conf' << EOF
* soft nofile 65536
* hard nofile 65536
root soft nofile 65536
root hard nofile 65536
EOF

    # 应用新的文件描述符限制
    echo "应用新的文件描述符限制..."
    sudo sysctl -p

    # 检查文件描述符限制是否已更新
    if [ $(ulimit -n) -eq 65536 ]; then
        echo "文件描述符优化成功,当前限制为 65536。"
    else
        echo "文件描述符优化失败,请检查配置。"
    fi
}

# 函数:修改命令提示符颜色
modify_prompt_color() {
    echo "修改命令提示符颜色..."
    # 为所有用户设置命令提示符颜色
    echo " export PS1='[\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;36m\]\h\[\033[00m\]:\[\033[1;34m\]\W\[\033[00m\]]\$' " >> /root/.bashrc

    # 重新加载bash配置文件以立即应用更改
    source /root/.bashrc
    echo "命令提示符颜色已更新。"
}

# 函数:安装linux常用工具
install_common_tools() {
    echo "安装Linux常用工具..."
    # 更新软件包列表
    sudo apt-get update
    # 安装网络工具
    sudo apt-get install -y vim lrzsz net-tools telnet traceroute nmap htop iftop
    # 安装性能检测工具
    sudo apt-get install -y iotop iostat sysstat  mtr
    # 安装抓包工具
    sudo apt-get install -y tcpdump 
    # 安装压缩解压工具
    sudo apt-get install -y unzip zip gzip 
    # 安装系统监控工具
    sudo apt-get install -y nmon
    # 安装文本处理工具
    sudo apt-get install -y grep sed awk
    # 安装其他实用工具
    sudo apt-get install -y curl wget 
    echo "常用工具安装完成。"
}

# 函数:系统内核优化
kernel_optimization() {
    echo "系统内核优化..."
    # 编辑sysctl.conf文件
    sudo bash -c 'cat >> /etc/sysctl.conf' << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 65536
vm.swappiness = 10
EOF
    # 应用内核参数
    sudo sysctl -p
}

# 打印分隔线
print_separator() {
    echo  "${BLUE}================>${RESET} ${WHITE}$1 ${RESET}${BLUE}<================${RESET}"
}

# 显示菜单
show_menu() {
    print_separator "请选择要执行的优化项"
    echo  "${RED}1. ${RESET}${GREEN}更改yum源为阿里云"
    echo  "${RED}2. ${RESET}${YELLOW}关闭防火墙以及selinux"
    echo  "${RED}3. ${RESET}${MAGENTA}时间同步"
    echo  "${RED}4. ${RESET}${CYAN}swap分区优化"
    echo  "${RED}5. ${RESET}${WHITE}优化文件描述符"
    echo  "${RED}6. ${RESET}${GREEN}修改命令提示符颜色"
    echo  "${RED}7. ${RESET}${YELLOW}安装linux常用工具"
    echo  "${RED}8. ${RESET}${BLUE}系统内核优化"
    echo  "${RED}9. ${RESET}${MAGENTA}一键执行所有优化"
    echo  "${RED}10. ${RESET}${RED}退出脚本"
    print_separator "请选择一个选项"
    read -p "请输入选项:" option
    
    case $option in
        1) change_yum_source ;;
        2) disable_firewall_selinux ;;
        3) time_sync ;;
        4) swap_partition_optimization ;;
        5) optimize_file_descriptors ;;
        6) modify_prompt_color ;;
        7) install_common_tools ;;
        8) kernel_optimization ;;
        9) one_key_optimization ;;
        10) echo "exit success!" ;;
        *) echo -e "\033[1;31m无效选项\033[0m" ;;
    esac
}

# 一键优化
one_key_optimization() {
    echo "执行一键优化..."
    change_yum_source && disable_firewall_selinux && time_sync && swap_partition_optimization && optimize_file_descriptors && modify_prompt_color && install_common_tools && kernel_optimization
}

# 主循环
while true; do
    show_menu
    if [[ $option == 9 ]]; then
        one_key_optimization
        break
    elif [[ $option == 10 ]]; then
        break
    else 
    continue
    fi
done

posted on 2025-04-02 09:52  LeeHang  阅读(358)  评论(0)    收藏  举报