centos7初始化bashshell腳本


centos7初始化bashshell腳本

#!/bin/bash
if [[ "$(whoami)" != "root" ]]; then
  
    echo "請切換root用戶 ." >&2
    exit 1
fi
echo "適用CENTOS 7"  
echo -e "\033[31m 修改selinux 關閉防火牆 修改網卡名eth0  系統參數等,有需要可自己微調 5秒后執行 \033[0m"

sleep 1
echo "1秒"
sleep 1
echo "2秒"
sleep 1
echo "3秒"
sleep 1
echo "4秒"
sleep 1
echo "開始執行中請勿操作,結束后會有提示" 

#下載yumepel源 ,獲取阿里源
yum_config(){
    yum install wget epel-release -y
    cd /etc/yum.repos.d/ && mkdir bak && mv -f *.repo bak/
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all && yum makecache
    #選裝,如需自行調整 yum -y install iotop iftop net-tools lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel bash-completion
}
#防火牆關閉
iptables_config(){
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl stop iptables
    systemctl disable iptables
}
#selinux關閉 時區 時間服務器chrony(需要自己刪除注釋)
system_config(){
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    timedatectl set-local-rtc 1 && timedatectl set-timezone Asia/Shanghai
    #yum -y install chrony && systemctl start chronyd.service && systemctl enable chronyd.service 
}
#  默認不開啟設置,如需開啟在下面mian方法中設置
ulimit_config(){
    
    echo "ulimit -SHn 102400" >> /etc/rc.local
    cat >> /etc/security/limits.conf << EOF
    *           soft   nofile       102400
    *           hard   nofile       102400
    *           soft   nproc        102400
    *           hard   nproc        102400
EOF

}

# 內核參數設置
#file-max:這個參數表示進程可以同時打開的最大句柄數,這個參數直接限制最大並發連接數。
#tcp_tw_reuse:這個參數設置為1,表示允許將TIME-WAIT狀態的socket重新用於新的TCP鏈接。這個對服務器來說很有意義,因為服務器上總會有大量TIME-#WAIT#狀態的連接。
#tcp_keepalive_time:這個參數表示當keepalive啟用時,TCP發送keepalive消息的頻度。默認是7200 seconds,意思是如果某個TCP連接在idle 2小時后,##內核才發起probe。若將其設置得小一點,可以更快地清理無效的連接。
#tcp_fin_timeout:這個參數表示當服務器主動關閉連接時,socket保持在FIN-WAIT-2狀態的最大時間。
#tcp_max_tw_buckets:這個參數表示操作系統允許TIME_WAIT套接字數量的最大值,如果超過這個數字,TIME_WAIT套接字將立刻被清除並打印警告信息。默認#是i180000,過多TIME_WAIT套接字會使Web服務器變慢。
#tcp_max_syn_backlog:這個參數表示TCP三次握手建立階段接受WYN請求隊列的最大長度,默認1024,將其設置大一些可以使出現Nginx繁忙來不及accept新連接#的情況時,Linux不至於丟失客戶端發起的連接請求。
#ip_local_port_range:這個參數定義了在UDP和TCP連接中本地端口的取值范圍。
#net.ipv4.tcp_rmem:這個參數定義了TCP接受緩存(用於TCP接收滑動窗口)的最小值,默認值,最大值。
#net.ipv4.tcp_wmem:這個參數定義了TCP發送緩存(用於TCP發送滑動窗口)的最小值,默認值,最大值。
#netdev_max_backlog:當網卡接收數據包的速度大於內核處理的速度時,會有一個隊列保存這些數據包。這個參數表示該隊列的最大值。
#rmem_default:這個參數表示內核套接字接收緩存區默認的大小。
#wmem_default:這個參數表示內核套接字發送緩存區默認的大小。
#rmem_max:這個參數表示內核套接字接收緩存區默認的最大大小。
#wmem_max:這個參數表示內核套接字發送緩存區默認的最大大小。
sysctl_config(){
    cp /etc/sysctl.conf /etc/sysctl.conf.bak
    cat > /etc/sysctl.conf << EOF
    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_rmem = 4096 87380 4194304
    net.ipv4.tcp_wmem = 4096 16384 4194304
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.core.netdev_max_backlog = 262144
    net.core.somaxconn = 262144
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.ip_local_port_range = 1024 65000
EOF
    /sbin/sysctl -p
    echo "sysctl set OK!!"
}

main(){
    yum_config &>/dev/mull
    iptables_config  &>/dev/mull
    system_config  &>/dev/mull
    #ulimit_config  &>/dev/mull
    sysctl_config  &>/dev/mull
    echo"初始化完成!"
}
main


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM