1. 程式人生 > >Centos7.x系統優化指令碼

Centos7.x系統優化指令碼

#############################################################
# File Name: system.sh
# Author: She
# E-mail: [email protected]
# Created Time: Fri 18 May 2018 05:01:02 PM CST
#==================================================================
#!/bin/sh
# 執行環境CentOS 7.x
# 執行前請刪除中文註釋

system=`uname -i`
if [ $system != "x86_64" ];then
echo "檢測到此係統版本不是64位 !"
exit 1
fi
cat << EOF
+---------------------------------------+
| 您的系統是 CentOS 7.x_ x86_64 |
| 開始優化,請稍等....... |
+---------------------------------------
EOF

echo "下載wget·······"
yum -y install wget   &>/dev/null

echo "新增DNS地址,請稍等....... "
cat >> /etc/resolv.conf << EOF
nameserver 114.114.114.114 
nameserver 114.114.114.114 
EOF

echo "更換為Yum源,請稍等....... "
cd /etc/yum.repos.d/
mkdir yum_bak &>/dev/null
mv * yum_bak &>/dev/null
wget -O Centos-aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
sed -i 's/$releasever/7/g' Centos-aliyun.repo &>/dev/null
yum makecache &>/dev/null
yum install epel-release -y &>/dev/null

echo "同步時間,請稍等....... "
if [ -f /usr/sbin/ntpdate ];then
echo ""
else
yum -y install ntp &>/dev/null
fi
/usr/sbin/ntpdate cn.pool.ntp.org &>/dev/null
echo “0 4 * * * /usr/sbin/ntpdate cn.pool.ntp.org” >> /var/spool/cron/root
systemctl restart crond.service

echo "安裝vim,請稍等....... "
yum -y install vim &>/dev/null

echo "命令補全,請稍等....... "
yum install bash-completion -y &>/dev/null

echo "設定最大開啟檔案描述符數,請稍等......."
echo "ulimit -SHn 102400" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
* soft nofile 655350
* hard nofile 655350
EOF

echo "禁用selinux,請稍等......."
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

echo "關閉防火牆,請稍等......."
systemctl disable firewalld.service
systemctl stop firewalld.service

echo "優化ssh服務,請稍等......."
sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
systemctl restart sshd.service

echo "-------<核心引數優化>-------"
cat >> /etc/sysctl.conf << EOF
vm.overcommit_memory = 1 #表示核心在分配記憶體時候做檢查的方式
net.ipv4.ip_local_port_range = 1024 65536 #埠範圍 1024~65535
net.ipv4.tcp_fin_timeout = 1 #保持在FIN-WAIT-2狀態的時間
net.ipv4.tcp_keepalive_time = 1200 # TCP傳送keepalive訊息間隔時間(秒)
net.ipv4.tcp_mem = 94500000 915000000 927000000 #tcp整體快取設定,對所有tcp記憶體使用狀況的控制,單位是頁,依次代表TCP整體記憶體的無壓力值、壓力模式開啟閥值、最大使用值
net.ipv4.tcp_tw_reuse = 1 # 開啟TCP連線中TIME-WAIT sockets的快速回收,預設為0,表示關閉
net.ipv4.tcp_tw_recycle = 1 # 開啟重用,允許將TIME-WAIT sockets重新用於新的TCP連線,預設為0,表示關閉;
net.ipv4.tcp_timestamps = 0 # 關閉時間戳 “異常”的資料包
net.ipv4.tcp_synack_retries = 1 # 核心放棄連線之前傳送SYN+ACK 包的數量
net.ipv4.tcp_syn_retries = 1 # 核心放棄建立連線之前傳送SYN 包的數量
net.ipv4.tcp_abort_on_overflow = 0 #一個布林型別的標誌,控制著當有很多的連線請求時核心的行為
net.core.rmem_max = 16777216 # 指定了接收套接字緩衝區大小的最大值(以位元組為單位)
net.core.wmem_max = 16777216 # 指定了傳送套接字緩衝區大小的最大值(以位元組為單位)
net.core.netdev_max_backlog = 262144 # 允許送到佇列的資料包的最大數目
net.core.somaxconn = 262144 #系統中最多有多少個TCP 套接字不被關聯到任何一個使用者檔案控制代碼上
net.ipv4.tcp_max_orphans = 3276800 #為了防止簡單的DoS ***,不能過分依靠它
net.ipv4.tcp_max_syn_backlog = 262144 #表示SYN佇列的長度
net.core.wmem_default = 8388608 #指定傳送套接字緩衝區大小的預設值(以位元組為單位)
net.core.rmem_default = 8388608 #指定接收套接字緩衝區大小的預設值(以位元組為單位)
#net.ipv4.netfilter.ip_conntrack_max = 2097152 #最大核心記憶體中netfilter可以同時處理的“任務”(連線跟蹤條目)
#net.nf_conntrack_max = 655360 #允許最大跟蹤連線條目
#net.netfilter.nf_conntrack_tcp_timeout_established = 1200 # established的超時時間
EOF
/sbin/sysctl -p
echo "系統已優化完畢,請使用!"