<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CentOS 7 系統(tǒng)優(yōu)化腳本

          共 15667字,需瀏覽 32分鐘

           ·

          2022-07-25 23:28

          在公眾號(hào)后臺(tái)回復(fù):JGNB,可獲取杰哥原創(chuàng)的 PDF 手冊(cè)。

          一、介紹

          作為一名運(yùn)維,經(jīng)常會(huì)部署各種用途的操作系統(tǒng),但在這些工作中,我們會(huì)發(fā)現(xiàn)很多工作其實(shí)是重復(fù)性的勞動(dòng),操作的內(nèi)容也是大同小異,基于這類(lèi)情況,我們可以把相同的操作做成統(tǒng)一執(zhí)行的腳本,不同的東西作為變量手動(dòng)輸入。節(jié)約下來(lái)的時(shí)間不就可以做更多有意義的事情嗎?

          最近在粉絲有推薦下發(fā)現(xiàn)一款比較好用的shell源碼,也基于此改編了一下,分享給大家。

          二、菜單

          主菜單:

          二級(jí)菜單:

          主要實(shí)現(xiàn)系統(tǒng)的各類(lèi)優(yōu)化,比如常用的修改字符集、關(guān)閉selinux、關(guān)閉防火墻、安裝常用工具和加快ssh登錄等功能。

          三、源碼

          #!/bin/sh

          . /etc/rc.d/init.d/functions
          export LANG=zh_CN.UTF-8

          #一級(jí)菜單
          menu1()
          {
                  clear
                  cat <<eof
          ----------------------------------------
          |****   歡迎使用cetnos7.9優(yōu)化腳本    ****|
          |****      博客地址: aaa.al         ****|
          ----------------------------------------
          1. 一鍵優(yōu)化
          2. 自定義優(yōu)化
          3. 退出
          EOF
                  read -p "please enter your choice[1-3]:" num1
          }

          #二級(jí)菜單
          menu2()
          {
           clear
           cat <<eof
          ----------------------------------------
          |****Please Enter Your Choice:[0-13]****|
          ----------------------------------------
          1. 修改字符集
          2. 關(guān)閉selinux
          3. 關(guān)閉firewalld
          4. 精簡(jiǎn)開(kāi)機(jī)啟動(dòng)
          5. 修改文件描述符
          6. 安裝常用工具及修改yum源
          7. 優(yōu)化系統(tǒng)內(nèi)核
          8. 加快ssh登錄速度
          9. 禁用ctrl+alt+del重啟
          10.設(shè)置時(shí)間同步
          11.history優(yōu)化
          12.返回上級(jí)菜單
          13.退出
          EOF
           read -p "please enter your choice[1-13]:" num2

          }

          #1.修改字符集
          localeset()
          {
           echo "========================修改字符集========================="
           cat > /etc/locale.conf <<eof
          LANG="zh_CN.UTF-8"
          #LANG="en_US.UTF-8"
          SYSFONT="latarcyrheb-sun16"
          EOF
           source /etc/locale.conf
           echo "#cat /etc/locale.conf"
           cat /etc/locale.conf
           action "完成修改字符集" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #2.關(guān)閉selinux
          selinuxset() 
          {
           selinux_status=`grep "SELINUX=disabled" /etc/sysconfig/selinux | wc -l`
           echo "========================禁用SELINUX========================"
           if [ $selinux_status -eq 0 ];then
            sed  -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/sysconfig/selinux
            setenforce 0
            echo '#grep SELINUX=disabled /etc/sysconfig/selinux'
            grep SELINUX=disabled /etc/sysconfig/selinux
            echo '#getenforce'
            getenforce
           else
            echo 'SELINUX已處于關(guān)閉狀態(tài)'
            echo '#grep SELINUX=disabled /etc/sysconfig/selinux'
                          grep SELINUX=disabled /etc/sysconfig/selinux
                          echo '#getenforce'
                          getenforce
           fi
            action "完成禁用SELINUX" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #3.關(guān)閉firewalld
          firewalldset()
          {
           echo "=======================禁用firewalld========================"
           systemctl stop firewalld.service &> /dev/null
           echo '#firewall-cmd  --state'
           firewall-cmd  --state
           systemctl disable firewalld.service &> /dev/null
           echo '#systemctl list-unit-files | grep firewalld'
           systemctl list-unit-files | grep firewalld
           action "完成禁用firewalld,生產(chǎn)環(huán)境下建議啟用!" /bin/true
           echo "==========================================================="
           sleep 5
          }

          #4.精簡(jiǎn)開(kāi)機(jī)啟動(dòng)
          chkset()
          {
           echo "=======================精簡(jiǎn)開(kāi)機(jī)啟動(dòng)========================"
           systemctl disable auditd.service
           systemctl disable postfix.service
           systemctl disable dbus-org.freedesktop.NetworkManager.service
           echo '#systemctl list-unit-files | grep -E "auditd|postfix|dbus-org\.freedesktop\.NetworkManager"'
           systemctl list-unit-files | grep -E "auditd|postfix|dbus-org\.freedesktop\.NetworkManager"
           action "完成精簡(jiǎn)開(kāi)機(jī)啟動(dòng)" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #5.修改文件描述符
          limitset()
          {
           echo "======================修改文件描述符======================="
           echo '* - nofile 65535'>/etc/security/limits.conf
           ulimit -SHn 65535
           echo "#cat /etc/security/limits.conf"
           cat /etc/security/limits.conf
           echo "#ulimit -Sn ; ulimit -Hn"
           ulimit -Sn ; ulimit -Hn
           action "完成修改文件描述符" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #6.安裝常用工具及修改yum源
          yumset()
          {
           echo "=================安裝常用工具及修改yum源==================="
           yum install wget -y &> /dev/null
           if [ $? -eq 0 ];then
            cd /etc/yum.repos.d/
            \cp CentOS-Base.repo CentOS-Base.repo.$(date +%F)
            ping -c 1 mirrors.aliyun.com &> /dev/null
            if [ $? -eq 0 ];then
             wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
             yum clean all &> /dev/null
             yum makecache &> /dev/null
            else
             echo "無(wú)法連接網(wǎng)絡(luò)"
                 exit $?
              fi
           else
            echo "wget安裝失敗"
            exit $?
           fi
           yum -y install ntpdate lsof net-tools telnet vim lrzsz tree nmap nc sysstat &> /dev/null
           action "完成安裝常用工具及修改yum源" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #7. 優(yōu)化系統(tǒng)內(nèi)核
          kernelset()
          {
           echo "======================優(yōu)化系統(tǒng)內(nèi)核========================="
           chk_nf=`cat /etc/sysctl.conf | grep conntrack |wc -l`
           if [ $chk_nf -eq 0 ];then
            cat >>/etc/sysctl.conf<<eof
          net.ipv4.tcp_fin_timeout = 2
          net.ipv4.tcp_tw_reuse = 1
          net.ipv4.tcp_tw_recycle = 1
          net.ipv4.tcp_syncookies = 1
          net.ipv4.tcp_keepalive_time = 600
          net.ipv4.ip_local_port_range = 4000 65000
          net.ipv4.tcp_max_syn_backlog = 16384
          net.ipv4.tcp_max_tw_buckets = 36000
          net.ipv4.route.gc_timeout = 100
          net.ipv4.tcp_syn_retries = 1
          net.ipv4.tcp_synack_retries = 0
          net.core.somaxconn = 16384
          net.core.netdev_max_backlog = 16384
          net.ipv4.tcp_max_orphans = 16384
          net.netfilter.nf_conntrack_max = 25000000
          net.netfilter.nf_conntrack_tcp_timeout_established = 180
          net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
          net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
          net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
          EOF
           sysctl -p
           else
            echo "優(yōu)化項(xiàng)已存在。"
           fi
           action "內(nèi)核調(diào)優(yōu)完成" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #8.加快ssh登錄速度
          sshset()
          {
           echo "======================加快ssh登錄速度======================"
           sed -i 's#^GSSAPIAuthentication yes$#GSSAPIAuthentication no#g' /etc/ssh/sshd_config
           sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
           systemctl restart sshd.service
           echo "#grep GSSAPIAuthentication /etc/ssh/sshd_config"
           grep GSSAPIAuthentication /etc/ssh/sshd_config
           echo "#grep UseDNS /etc/ssh/sshd_config"
           grep UseDNS /etc/ssh/sshd_config
           action "完成加快ssh登錄速度" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #9. 禁用ctrl+alt+del重啟
          restartset()
          {
           echo "===================禁用ctrl+alt+del重啟===================="
           rm -rf /usr/lib/systemd/system/ctrl-alt-del.target
           action "完成禁用ctrl+alt+del重啟" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #10. 設(shè)置時(shí)間同步
          ntpdateset()
          {
           echo "=======================設(shè)置時(shí)間同步========================"
           yum -y install ntpdate &> /dev/null
           if [ $? -eq 0 ];then
            /usr/sbin/ntpdate time.windows.com
            echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null" >> /var/spool/cron/root
           else
            echo "ntpdate安裝失敗"
            exit $?
           fi
           action "完成設(shè)置時(shí)間同步" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #11. history優(yōu)化
          historyset()
          {
           echo "========================history優(yōu)化========================"
           chk_his=`cat /etc/profile | grep HISTTIMEFORMAT |wc -l`
           if [ $chk_his -eq 0 ];then
            cat >> /etc/profile <<'EOF'
          #設(shè)置history格式
          export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`whoami`] [`who am i|awk '{print $NF}'|sed -r 's#[()]##g'`]: "
          #記錄shell執(zhí)行的每一條命令
          export PROMPT_COMMAND='\
          if [ -z "$OLD_PWD" ];then
              export OLD_PWD=$PWD;
          fi;
          if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
              logger -t `whoami`_shell_dir "[$OLD_PWD]$(history 1)";
          fi;
          export LAST_CMD="$(history 1)";
          export OLD_PWD=$PWD;'

          EOF
            source /etc/profile
           else
            echo "優(yōu)化項(xiàng)已存在。"
           fi
           action "完成history優(yōu)化" /bin/true
           echo "==========================================================="
           sleep 2
          }

          #控制函數(shù)
          main()
          {
           menu1
           case $num1 in
            1)
             localeset
             selinuxset
             firewalldset
             chkset
             limitset
             yumset
             kernelset
             sshset
             restartset
             ntpdateset
             historyset
             ;;
            2)
             menu2
             case $num2 in
                            1)
                              localeset
                              ;;
                            2)
                              selinuxset
                              ;;
                            3)
                              firewalldset
                              ;;
                            4)
                              chkset
                              ;;
                            5)
                              limitset
                              ;;
                            6)     
                      yumset
                              ;;
                            7)
                              kernelset
                              ;;
                            8)
                              sshset
                              ;;
                            9)
                              restartset
                              ;;
                            10)
                              ntpdateset
                              ;;
              11)
                historyset
                ;;
              12)
                main
                ;;
              13)
                exit
                ;;
              *)
                echo 'Please select a number from [1-13].'
                ;;
             esac
             ;;
            3)
             exit
             ;;
            *)
             echo 'Err:Please select a number from [1-3].'
             sleep 3
             main
             ;;
           esac
          }
          main $*

          將其保存為init.sh,然后賦予執(zhí)行權(quán)限后執(zhí)行即可。

          chmod +x init.sh && ./init.sh

          如果這樣來(lái)回地復(fù)制粘貼很麻煩,也可以通過(guò)我的一鍵命令執(zhí)行,同樣能達(dá)到上面的效果:

          bash -c "$(curl -L s.aaa.al/init.sh)"

          最后,如果大家有想實(shí)現(xiàn)的功能,也可以在原有腳本的基礎(chǔ)上進(jìn)行修改實(shí)現(xiàn)。

          推薦閱讀:

          7 個(gè)非常實(shí)用的 Shell 拿來(lái)就用腳本實(shí)例!


          超硬核!11 個(gè)非常實(shí)用的 Python 和 Shell 拿來(lái)就用腳本實(shí)例!


          拿來(lái)就用的腳本案例!(三)

          瀏覽 31
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  影音先锋男人资源在线 | 麻豆一区二区99久久久久 | 青青草这里有精品 | 欧美一级黄色网 | 干国产女人视频 |