#!/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