vi centos7_init.sh
#!/bin/bash
#服务器一键优化工具
function define_check_network() {
echo 主机名为`hostname -f`
ping www.baidu.com -c 6
}
function define_yum () {
#关闭selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
#常用软件安装
yum clean all
yum -y install bash vim wget curl sysstat gcc gcc-c++ make lsof sudo unzip openssh-clients net-tools systemd rpm yum rsyslog logrotate crontabs python-libs centos-release p7zip file
yum -y update && yum -y upgrade
}
function define_tuning_services() {
#关闭多余服务
systemctl stop postfix firewalld chronyd cups
#停止开机自启动
systemctl disable postfix firewalld chronyd cups
echo "非关键系统服务已经关闭"
}
function define_tuning_kernel () {
#4.内核参数优化
echo "内核参数优化"
declare -A config_items=(
["kernel.sysrq"]="0"
["kernel.core_uses_pid"]="1"
["kernel.msgmnb"]="65536"
["kernel.msgmax"]="65536"
["kernel.shmmax"]="68719476736"
["kernel.shmall"]="4294967296"
["kernel.sem"]="500 64000 64 256"
["fs.file-max"]="20971520"
["net.ipv4.tcp_tw_reuse"]="1"
["net.ipv4.tcp_tw_recycle"]="1"
["net.ipv4.tcp_fin_timeout"]="30"
["net.ipv4.tcp_keepalive_time"]="1200"
["net.ipv4.ip_local_port_range"]="1024 65535"
["net.ipv4.tcp_rmem"]="4096 87380 8388608"
["net.ipv4.tcp_wmem"]="4096 87380 8388608"
["net.ipv4.tcp_max_syn_backlog"]="8192"
["net.ipv4.tcp_max_tw_buckets"]="5000"
["net.ipv4.ip_forward"]="1"
["net.ipv4.conf.default.rp_filter"]="1"
["net.ipv4.conf.default.accept_source_route"]="0"
["net.ipv4.tcp_syncookies"]="1"
["net.ipv4.tcp_sack"]="1"
["net.ipv4.tcp_window_scaling"]="1"
["net.core.wmem_default"]="8388608"
["net.core.rmem_default"]="8388608"
["net.core.rmem_max"]="16777216"
["net.core.wmem_max"]="16777216"
["net.core.netdev_max_backlog"]="262144"
["net.core.somaxconn"]="65535"
["net.ipv4.tcp_max_orphans"]="3276800"
["net.ipv4.tcp_timestamps"]="0"
["net.ipv4.tcp_synack_retries"]="1"
["net.ipv4.tcp_syn_retries"]="1"
["net.ipv4.tcp_mem"]="94500000 915000000 927000000"
["net.ipv6.conf.all.disable_ipv6"]="1"
["net.ipv6.conf.default.disable_ipv6"]="1"
["vm.swappiness"]="0"
)
for item in "${!config_items[@]}"; do
if grep -q "$item" /etc/sysctl.conf; then
# 配置项存在,替换原有配置
sed -i "s/^$item.*/$item = ${config_items[$item]}/" /etc/sysctl.conf
else
# 配置项不存在,新增配置
echo "$item = ${config_items[$item]}" >> /etc/sysctl.conf
fi
done
echo "系统参数设置OK"
}
function define_tuning_system () {
#加一个防呆判断
if [ `grep -c "noatime" /etc/fstab` = 0 ]; then
echo "脚本首次执行"
else
echo "第二次执行脚本,请手动检查错误"
exit 1
fi
#磁盘IO优化
sed -i '/xfs/s/defaults/defaults,noatime/' /etc/fstab
##nproc设置仅适合centos7
sed -i 's/4096/524288/' /etc/security/limits.d/20-nproc.conf
#管理open files数量
echo "* soft nofile 1024000" > /etc/security/limits.d/limits.conf
echo "* hard nofile 1024000" >> /etc/security/limits.d/limits.conf
#管理最大进程数
echo "* soft nproc 1024000" >> /etc/security/limits.d/limits.conf
echo "* hard nproc 1024000" >> /etc/security/limits.d/limits.conf
echo "session required /lib64/security/pam_limits.so" >> /etc/pam.d/login
#全局变量设置优化
echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile.d/env.sh
echo 'unset MAILCHECK' >> /etc/profile.d/env.sh
sed -i '/HISTSIZE/s/1000/12000/' /etc/profile
}
function define_ntpdate1 () {
#本地时间同步
yum -y install ntpdate
echo "/usr/sbin/ntpdate -us ntp1.aliyun.com;hwclock -w;" >> /etc/rc.d/rc.local
##时区校正
timedatectl set-timezone Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && hwclock -w
##时间同步
/usr/sbin/ntpdate -us ntp1.aliyun.com;hwclock -w;
cat >> /var/spool/cron/root << EOF
##时间同步
0-59/20 * * * * /usr/sbin/ntpdate -us ntp1.aliyun.com;hwclock -w;
EOF
}
function define_update () {
## yum update
cat >> /var/spool/cron/root << EOF
#yum update software
45 00 * * * /usr/bin/yum -y install bash sudo ntpdate openssh openssl vim systemd rpm yum rsyslog logrotate crontabs curl; > /dev/null 2>&1;
EOF
}
function denfine_swap () {
cat >> /var/spool/cron/root << EOF
## swap enable/disable
15 * * * * /usr/sbin/swapoff -a && /usr/sbin/swapon -a;
EOF
}
function define_localhost () {
#define_yum
define_tuning_services
define_tuning_kernel
define_tuning_system
define_ntpdate1
define_update
denfine_swap
}
function define_exit () {
echo '' > /tmp/one_key.sh
exit
}
while :
do
echo ""
echo "服务器一键优化脚本"
echo ""
echo ""
echo " 0) 检查服务器网络 1) 本地环境专用"
echo " 2) 退出脚本"
echo
read -p "请输入一个选项: " opmode
echo
case ${opmode} in
0) define_check_network;;
1) define_localhost;;
2) define_exit;;
*) echo "无效输入" ;;
esac
done
首先执行以下命令可以查看当前已有的yum源
ls /etc/yum.repos.d
我们首先要做的是先将该基础原有的yum源进行备份
进入到yum源所在目录下:cd /etc/yum.repos.d
然后复制一份即可
cp CentOS-Base.repo CentOS-Base.repo.bak
再下载新的yum源到该目录下覆盖原先的yum源即可
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
这里采用的为阿里云的yum源,一般选国内任意yum源都行,都比国外快
清理原先yum源
yum clean all
最后生成yum源缓存即可
yum makecache
————————————————
版权声明:本文为CSDN博主「c.Coder」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_62126248/article/details/126070988
Linux根目录空间不足,追加分配空间到根目录下
最近在给公司安装centos7测试环境的时候,直接默认分区安装,所以导致分区上有点儿不太合理,大部分空间都在/home目录下,要求是尽可能的把空间都给根目录,于是,开始了以下的追加空间到根目录操作:
首先,我们需要格式化我们的/home分区删除其逻辑卷,所以如果有重要文件记得备份出来 !!备份。备份。备份!!
然后,进行扩容操作
最后,根据自己的需求创建个合适大小的/home目录,将文件拷会即可
具体命令:
fuser -km /home/ #杀死使用/home的所有进程,否者卸载不了/home目录
umount /home #卸载/home目录
lvremove /dev/mapper/centos-home #删除逻辑卷 y确认即可
ok!
现在可以df -h查询一下,我们的/home目录已经不见了
接下来执行:
lvextend -L +50G /dev/mapper/centos-root
上面的命令是向根分区下追加了50G
然后执行:
xfs_growfs /dev/mapper/centos-root
此命令是同步文件系统,将刚才追加的空间同步出来
这样,我们的根目录就已经拓展好了。
接下来我们把删除的/home目录在创建回来
执行命令:
lvcreate -L 20G -n /dev/mapper/centos-home
创建个20G的home目录逻辑卷
然后执行:
mkfs.xfs /dev/mapper/centos-home
创建文件系统
最后执行:
mount /dev/mapper/centos-home
将创建好的文件系统挂载上
ok!这样就一切大功告成啦!
ps:
不同版本的系统可能/dev/下文件的名称各部不相同,可以用lsblk命令查询具体名称,再进行相应操作。
CentOS7 系统初始化优化项
于 2024-02-05 09:34:30 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)