生产环境的系统初始化脚本【Linux运维之道之脚本案例】

#!/bin/bash

#    Author:atong    

#    Mail:752119102

#    Function:Automatic system initialization

#

##########Update the yum repository######更新yum库

cd /etc/yum.repos.d/

/usr/bin/wget  http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

/bin/mv CentOS-Base.repo CentOS-Base-Old.repo

/bin/mv CentOS-Base-sohu.repo CentOS-Base.repo

cd /tmp

#########---  update the system time -----####系统时间自动同步

/usr/sbin/ntpdate time.windows.com

/bin/echo "*/5 * * * * /usr/sbin/ntpdate time.windows.com 1> /dev/null 2>&1" >> /var/spool/cron/root


##########---  Add common directory ---##########添加常规目录

[ ! -d /root/tools ] && /bin/mkdir -p  /root/tools/

[ ! -d /root/history ] && /bin/mkdir -p /root/history

[ ! -d /backup ]  && /bin/mkdir -p /backup

[ ! -d /root/shell ] && /bin/mkdir -p /root/shell

#自己的目录结构规范:工具放于/root/tools 脚本放于/root/shell下  备份数据放于/backup

#一些历史数据放于/root/history下


#########---close the firewall and SELinux---#####关闭selinux

/etc/init.d/iptables stop

chkconfig iptables off

setenforce 0

/bin/echo "setenforce 0" >>/etc/rc.local

/bin/sed -i ‘s#SELINUX=enforce#SELINUX=disable#g‘ /etc/selinux/config


##########--- remove excess service  --######移除一些多余的系统服务

for server in `chkconfig --list |grep 3:on|awk ‘{ print $1}‘`

do

    chkconfig --level 3 $server off

done

for server in crond network syslog sshd

do

   chkconfig --level 3 $server on

done

##########----  Update system lange ---####

/bin/echo " LANG=zh_CN.GB18030" >/etc/i18n


######----  Optimizing the kernel ----#####

#应该要再添加进入一些系统内核优化的命令,[待更新...]

cat >> /etc/sysctl.conf << EOF

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1#用来查找特定的遗失的数据包---因此有助于快速恢复状态
net.ipv4.tcp_window_scaling = 1#设置tcp/ip会话的滑动窗口大小是否可变。1示可变,0不可变。

net.ipv4.ip_local_port_range = 1024 65536#用来指定外部连接的端口范围,默认是32 768到61 000

net.ipv4.tcp_rmem=4096 87380 16777216#指定接收套接字缓冲区大小的最大值,单位是字节。

net.ipv4.tcp_wmem=4096 65536 16777216#指定发送套接字缓冲区大小的最大值,单位是字节。

net.ipv4.tcp_fin_timeout = 30

#此参数用于减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。此参数值为整数,单位为秒。

net.ipv4.tcp_no_metrics_save=1

net.ipv4.tcp_syncookies = 1

#该参数的功能有助于保护服务器免受SyncFlood攻击。默认值为0,这里设置为1。

net.ipv4.tcp_max_orphans = 262144

#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并#输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。这里设置为262 144。

net.ipv4.tcp_max_syn_backlog = 65535 #记录的那些尚未收到客户端确认信息的连接请求的最大值。

net.ipv4.tcp_synack_retries = 2#这个参数用于设置内核放弃连接之前发送SYN+ACK包的数量。

net.ipv4.tcp_syn_retries = 2#此参数表示在内核放弃建立连接之前发送SYN包的数量。

net.ipv4.tcp_tw_reuse=1表示开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接。默认为0,表示关闭。

net.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAIT套接字的快速回收。默认为0,表示关闭。


net.ipv4.tcp_keepalive_time = 1200

#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,建议改为20分钟。

net.ipv4.tcp_abort_on_overflow = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_retries1 = 2

net.ipv4.tcp_retries2 = 3

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.core.netdev_max_backlog = 32768 #每个网口接收数据包的速率比内核处理包的速率快时,允许送到队列的数据包的最大数目

EOF

sysctl -p

##linux 默认打开文件数linux 默认打开文件数为1024个##

/bin/echo "* soft nofile 65535" >> /etc/security/limits.conf

/bin/echo "* hard nofile 65535" >> /etc/security/limits.conf

/bin/echo "* hard nproc 1204000" >> /etc/security/limits.conf

/bin/echo "* soft nproc 1204000" >> /etc/security/limits.conf

######----- yum install some tolls --- ###

/usr/bin/yum -y install lrzsz vsftpd libtool-ltdl libtool-ltdl-devel sysstat >/dev/null  2>&1

#PS:目前脚本太过长了,由于刚学习能力有限,可能做了一些无用功,有些地方还需要加些判断。

#比如判断cron中是否已经有向网络时间服务器去同步时间点命令了。

#大家如果觉得有什么不正确或者你有更好的,希望能够让我学习学习。


本文出自 “从头开始” 博客,请务必保留此出处http://atong.blog.51cto.com/2393905/1355156

生产环境的系统初始化脚本【Linux运维之道之脚本案例】

上一篇:impala常见错误小结


下一篇:我比我的领导差在哪