shell脚本之服务器系统配置初始化脚本

文章目录

#!/bin/bash
# 设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
    (echo "1 * * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab 
fi
# 软链接时区文件到/etc/localtime,写入定时任务到crontab,每分钟执行一次ntpdate命令同步时间

# 禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config
# 通过sed替换文中SELINUX部分

# 关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
    systemctl stop firewalld
    systemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
    service iptables stop
    chkconfig iptables offSS
fi
# 通过查看/etc/redhat-release版本号使用不同的关闭防火墙命令

# 历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
    echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc
    source /etc/bashrc
fi
# 通过给系统变量HISTTIMEFORMAT设置数值显示执行执行命令所在的时间执行的用户

# SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
    echo "export TMOUT=600" >> /etc/profile
    source /etc/profile
fi
# 为安全考虑,人离开以后,ssh仍然连接,设置600s超时自动断开

# 禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 使用sed命令替换/etc/ssh/sshd_config 里面 PermitRootlogin no即可关闭Root用户远程登陆以保护系统安全

# 禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab 
# 命令操作错误时,定时任务会自动发送邮件到/var/mail下导致小文件过多影响系统性能,设置追加为中,让crontab没有用户发送

# 设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
    cat >> /etc/security/limits.conf << EOF
    * soft nofile 65535
    * hard nofile 65535
    EOF
sysctl -p
fi
# 默认打开文件的大小为1024,在高并发条件下完全不够,

# 系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 10  
EOF
sysctl -p
# tcp_syncookies 有效防御SYN 洪水攻击, tcp_max_tw_buckets,tcp连接主动断开的一方会处于time_wait状态,如果访问量过大,
# 处于这个状态的连接过多,内核会爆出time wait 缓存表溢出,所有要设置把缓存表调大,tcp_max_syn_backlog同上,
# 系统会维护一张SYN_RECV状态表,当SYN_RECV连接数量多大时内核报错溢出,调大表的缓存大小
# core.netdev_max_backlog 当网络接口传输的数据包的速率大于内核的处理速度时,linux会维护一个数据包队列来缓存这些数据包,
# 队列的大小默认511,通过设置队列的大小来保护系统的稳定
# ipv4.tcp_fin_timeout 四次挥手时,服务端最后状态时time_wait等待客户端确认断开,但由于网络等原因语法收到客户端的确认关闭
# 数据包,导致服务器time_wait状态剧增,减少fin_timeout时间可以有效减少time_wait连接数量


# 减少SWAP使用
echo "0" > /proc/sys/vm/swappiness
# SWAP分区本质还是硬盘的IO读写影响服务器对外性能

# 安装系统性能分析工具及其他
yum install gcc make autoconf vim net-tools iostat lrzsz -y
# gcc make autoconf C解释器,make编译连接器,autoconf自动编译工具
# iostat 工具提供CPU使用率及硬盘吞吐效率的数据
# lrzsz linux和windows文件互传工具
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值