目次
3. ソースコード" >3. ソースコード
ホームページ 運用・保守 CentOS CentOS 7 システム最適化スクリプト

CentOS 7 システム最適化スクリプト

Aug 02, 2023 pm 05:22 PM
centos centos7


CentOS 7 システム最適化スクリプト


# 1. はじめに

運用保守担当者として、さまざまな目的でオペレーティングシステムを導入することがよくありますが、これらの作業では、実際には繰り返し作業であることが多く、操作内容も似通ったものであることがわかります。この場合、同じ操作をスクリプト化して統一的に実行したり、変数として手動で異なるものを入力したりすることができます。節約された時間をもっと有意義なことに使えないでしょうか?

最近、ファンの方からの推薦で比較的使いやすいシェルソースコードを見つけたので、これをベースに改造して皆さんと共有しました。

2. メニュー

メイン メニュー:

CentOS 7 システム最適化スクリプト

セカンダリ メニュー:

CentOS 7 システム最適化スクリプト

# 文字セットの変更、selinux の無効化、ファイアウォールの無効化、よく使用されるインストールなどのよく使用される機能など、主にシステムのさまざまな最適化を実現します。ツール、および SSH ログインの高速化。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏吧
ログイン後にコピー

3. ソースコード

#!/bin/sh

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

#一级菜单
menu1()
{
        clear
        cat <<eof
----------------------------------------
|****   欢迎使用cetnos7.9优化脚本    ****|
|****      博客地址: aaa.al         ****|
----------------------------------------
1. 一键优化
2. 自定义优化
3. 退出
EOF
        read -p "please enter your choice[1-3]:" num1
}

#二级菜单
menu2()
{
 clear
 cat <<eof
----------------------------------------
|****Please Enter Your Choice:[0-13]****|
----------------------------------------
1. 修改字符集
2. 关闭selinux
3. 关闭firewalld
4. 精简开机启动
5. 修改文件描述符
6. 安装常用工具及修改yum源
7. 优化系统内核
8. 加快ssh登录速度
9. 禁用ctrl+alt+del重启
10.设置时间同步
11.history优化
12.返回上级菜单
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.关闭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 &#39;#grep SELINUX=disabled /etc/sysconfig/selinux&#39;
  grep SELINUX=disabled /etc/sysconfig/selinux
  echo &#39;#getenforce&#39;
  getenforce
 else
  echo &#39;SELINUX已处于关闭状态&#39;
  echo &#39;#grep SELINUX=disabled /etc/sysconfig/selinux&#39;
                grep SELINUX=disabled /etc/sysconfig/selinux
                echo &#39;#getenforce&#39;
                getenforce
 fi
  action "完成禁用SELINUX" /bin/true
 echo "==========================================================="
 sleep 2
}

#3.关闭firewalld
firewalldset()
{
 echo "=======================禁用firewalld========================"
 systemctl stop firewalld.service &> /dev/null
 echo &#39;#firewall-cmd  --state&#39;
 firewall-cmd  --state
 systemctl disable firewalld.service &> /dev/null
 echo &#39;#systemctl list-unit-files | grep firewalld&#39;
 systemctl list-unit-files | grep firewalld
 action "完成禁用firewalld,生产环境下建议启用!" /bin/true
 echo "==========================================================="
 sleep 5
}

#4.精简开机启动
chkset()
{
 echo "=======================精简开机启动========================"
 systemctl disable auditd.service
 systemctl disable postfix.service
 systemctl disable dbus-org.freedesktop.NetworkManager.service
 echo &#39;#systemctl list-unit-files | grep -E "auditd|postfix|dbus-org\.freedesktop\.NetworkManager"&#39;
 systemctl list-unit-files | grep -E "auditd|postfix|dbus-org\.freedesktop\.NetworkManager"
 action "完成精简开机启动" /bin/true
 echo "==========================================================="
 sleep 2
}

#5.修改文件描述符
limitset()
{
 echo "======================修改文件描述符======================="
 echo &#39;* - nofile 65535&#39;>/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 "无法连接网络"
       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. 优化系统内核 #另外,搜索公众号技术社区后台回复“壁纸”,获取一份惊喜礼包。kernelset()
{
 echo "======================优化系统内核========================="
 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 "优化项已存在。"
 fi
 action "内核调优完成" /bin/true
 echo "==========================================================="
 sleep 2
}

#8.加快ssh登录速度
sshset()
{
 echo "======================加快ssh登录速度======================"
 sed -i &#39;s#^GSSAPIAuthentication yes$#GSSAPIAuthentication no#g&#39; /etc/ssh/sshd_config
 sed -i &#39;s/#UseDNS yes/UseDNS no/g&#39; /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. 设置时间同步
ntpdateset()
{
 echo "=======================设置时间同步========================"
 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 "完成设置时间同步" /bin/true
 echo "==========================================================="
 sleep 2
}

#11. history优化
historyset()
{
 echo "========================history优化========================"
 chk_his=`cat /etc/profile | grep HISTTIMEFORMAT |wc -l`
 if [ $chk_his -eq 0 ];then
  cat >> /etc/profile <<&#39;EOF&#39;
#设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`whoami`] [`who am i|awk &#39;{print $NF}&#39;|sed -r &#39;s#[()]##g&#39;`]: "
#记录shell执行的每一条命令
export PROMPT_COMMAND=&#39;\
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;&#39;
EOF
  source /etc/profile
 else
  echo "优化项已存在。"
 fi
 action "完成history优化" /bin/true
 echo "==========================================================="
 sleep 2
}

#控制函数
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 &#39;Please select a number from [1-13].&#39;
      ;;
   esac
   ;;
  3)
   exit
   ;;
  *)
   echo &#39;Err:Please select a number from [1-3].&#39;
   sleep 3
   main
   ;;
 esac
}
main $*
ログイン後にコピー

init.shとして保存し、実行権限を与えて実行します。

chmod +x init.sh && ./init.sh
ログイン後にコピー

このようにコピーして貼り付けるのが面倒な場合は、ワンクリック コマンドを使用して実行することもできます。これにより、上記の効果を得ることができます。

bash -c "$(curl -L s.aaa.al/init.sh)"
ログイン後にコピー

最後に、実装したい機能があれば、オリジナルのスクリプトをベースに修正して実装することも可能です。

以上がCentOS 7 システム最適化スクリプトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Centosで中国語を入力する方法 Centosで中国語を入力する方法 Apr 07, 2024 pm 08:21 PM

CentOS で中国語入力を使用する方法には、次のものが含まれます。 fcitx 入力方法を使用する: fcitx をインストールして有効にし、ショートカット キーを設定し、ショートカット キーを押して入力方法を切り替え、ピンインを入力して候補単語を生成します。 iBus 入力方法を使用する: iBus をインストールして有効にし、ショートカット キーを設定し、ショートカット キーを押して入力方法を切り替え、ピンインを入力して候補単語を生成します。

CentOS7でUSBディスクファイルを読み取る方法 CentOS7でUSBディスクファイルを読み取る方法 Apr 07, 2024 pm 08:18 PM

CentOS 7 で U ディスク ファイルを読み取るには、まず U ディスクを接続し、そのデバイス名を確認する必要があります。次に、次の手順に従ってファイルを読み取ります。 USB フラッシュ ドライブをマウントします: mount /dev/sdb1 /media/sdb1 (「/dev/sdb1」を実際のデバイス名に置き換えます) USB フラッシュ ドライブ ファイルを参照します: ls /media /sdb1; cd /media /sdb1/ディレクトリ; cat ファイル名

SCP 使用法のヒント - ファイルを再帰的に除外する SCP 使用法のヒント - ファイルを再帰的に除外する Apr 22, 2024 am 09:04 AM

scp コマンドを使用すると、ネットワーク ホスト間でファイルを安全にコピーできます。データ転送と認証には ssh を使用します。一般的な構文は次のとおりです: scpfile1user@host:/path/to/dest/scp -r/path/to/source/user@host:/path/to/dest/scp ファイルを除外する scp コマンドを使用する場合はできないと思いますファイルをフィルタリングまたは除外します。ただし、ファイルを除外し、ssh を使用して安全にコピーするという良い回避策があります。このページでは、scp を使用してディレクトリを再帰的にコピーするときにファイルをフィルタリングまたは除外する方法について説明します。 rsync コマンドを使用してファイルを除外する方法 構文は次のとおりです。 rsyncav-essh-

centos にログインするためのパスワードを忘れた場合の対処方法 centos にログインするためのパスワードを忘れた場合の対処方法 Apr 07, 2024 pm 07:33 PM

CentOS パスワードを忘れた場合の解決策は次のとおりです。 シングルユーザー モード: シングルユーザー モードに入り、passwd root を使用してパスワードをリセットします。レスキュー モード: CentOS Live CD/USB から起動し、ルート パーティションをマウントし、パスワードをリセットします。リモート アクセス: SSH を使用してリモートに接続し、sudo passwd root でパスワードをリセットします。

CentOS7でroot権限を有効にする方法 CentOS7でroot権限を有効にする方法 Apr 07, 2024 pm 08:03 PM

CentOS 7 では root 権限がデフォルトで無効になっていますが、次の手順で有効にできます: 一時的に有効にする: ターミナルで「su root」と入力し、root パスワードを入力します。永続的に有効にする: 「/etc/ssh/sshd_config」を編集し、「PermitRootLogin no」を「yes」に変更し、SSH サービスを再起動します。

centos7でroot権限を取得する方法 centos7でroot権限を取得する方法 Apr 07, 2024 pm 07:57 PM

CentOS 7 で root 権限を取得するには、いくつかの方法があります。 1. 「su」を使用してコマンドを実行します。 2. 「sudo」を使用して単一のコマンドを実行します。 3. root ユーザーを有効にし、パスワードを設定します。注: root 権限を使用する場合は、システムに損傷を与える可能性があるため注意してください。

CentOSでroot権限を入力する方法 CentOSでroot権限を入力する方法 Apr 07, 2024 pm 08:06 PM

CentOS で root 権限でタスクを実行するには、1) sudo コマンドを使用して一時的に root 権限を取得する、2) root ユーザーのパスワードを使用して直接ログインする、の 2 つの方法があります。 root 権限を使用する場合は細心の注意を払う必要があり、必要な場合にのみ使用することをお勧めします。

CentOSでゲートウェイを構成する方法 CentOSでゲートウェイを構成する方法 Apr 07, 2024 pm 08:51 PM

CentOS をゲートウェイとして構成するには、次の手順を実行する必要があります: 1. ネットワーク インターフェイスを構成し、GATEWAY 値を追加します; 2. デフォルト ゲートウェイを設定し、DNS 情報を指定します; 3. ネットワーク サービスを開始します; 4. ゲートウェイをテストします接続; 5. ゲートウェイを通過するトラフィックを許可するようにファイアウォールを構成します (オプション) を選択します。

See all articles