本篇是 小内存服务器生存指南——SWAP虚拟内存 的续篇。上次推出设置虚拟内存的教程后,每次手动设置虚拟内存还是感觉太麻烦,唉~还是太懒了~
可是懒并不是借口。既然懒,那何尝不写个脚本,方便以后设置服务器用呢?话不多说,开始正题
前提条件:
1、服务器系统:CentOS6+/Debian7+/Ubuntu12+
2、虚拟化架构:KVM、VMware
1、以root账户登陆VPS服务器
区分办法:登录后,可见终端显示从$号变成#号
1 2 3 4 5 |
非root账户: [root@localhost ~]$ root账户: [root@localhost ~]# |
2、下载并运行程序
CentOS运行命令:
1 |
yum -y install wget && wget -O set_swap.sh --no-check-certificate https://soft.mengclaw.com/Bash/set_swap.sh && bash set_swap.sh |
Debian运行命令
1 |
wget -O set_swap.sh --no-check-certificate https://soft.mengclaw.com/Bash/set_swap.sh && bash set_swap.sh |
说明:
1、部分服务器自带一些SWAP交换分区,自行添加后,旧的交换分区将会被删除。
2、OpenVZ虚拟化架构无法自主添加交换分区
过程概览:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
------------------------- 设置虚拟内存 版本:1.0 作者:WolfSkylake ------------------------- 1、添加虚拟内存 2、取消虚拟内存 ------------------------- 请输入要执行的操作:1 开始检查系统 管理员权限检查通过 虚拟化检查通过 开始设置虚拟内存容量,建议为内存的2倍。但过大的交换分区会影响磁盘IO,请悉知。 请输入需要添加的虚拟内存容量,单位MB: 1024 1024+0 records in 1024+0 records out 1024000000 bytes (1.0 GB) copied, 3.64437 s, 281 MB/s Setting up swapspace version 1, size = 999996 KiB no label, UUID=6de54f86-e5b0-4adb-b517-8008669381ba 虚拟内存设置完成 |
程序源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
#!/bin/bash ############################################################ # 设置虚拟内存 # # 发布日期:2020-03-05 # 程序版本:1.0 # # 脚本作者:WolfSkylake # 脚本链接:https://www.mengclaw.com/2020/03/05/627/ ############################################################ # 判断系统版本 check_system_os(){ if [[ -f /etc/redhat-release ]];then release="CentOS" # -q 执行本条语句的时候不输出,-i 不区分大小写 elif cat /etc/issue | grep -q -i "debian";then release="Debian" elif cat /etc/issue | grep -q -i "ubuntu";then release="Ubuntu" else release="Unknown" echo -e "\n 系统不受支持,安装失败 \n" exit 1 fi } # 检查是否是root账户 check_root(){ if [[ $EUID != 0 ]];then echo -e " 当前非ROOT账号,无法继续操作。\n 请更换ROOT账号登录服务器。 " exit 1 else echo -e "\n 管理员权限检查通过 " fi } # 安装系统依赖 dependent_install(){ if [[ $release == "CentOS" ]];then yum -y makecache yum -y install virt-what elif [[ $release == "Debian" ]] || [[ $release == "Ubuntu" ]];then apt-get -y update apt-get -y install virt-what else echo -e " 系统不受支持,退出…… \n" exit 1 fi } # 检查虚拟化 virt_check(){ if [[ `virt-what` == "openvz" ]];then echo -e " 当前虚拟化为OVZ,不支持本脚本 " elif [[ `virt-what` == "kvm" ]] || [[ `virt-what` == "vmware" ]] ;then echo -e "\n 虚拟化检查通过 \n" else echo -e "\n 不支持当前虚拟化,退出…… \n" exit 1 fi } # 取消交换分区 unset_swap(){ if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then swapoff -a rm -rf /swap sed -i '/swap/d' /etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "\n 删除失败,写保护 \n" else echo -e "\n 删除完成 \n" fi else echo -e "\n 删除失败,没有找到虚拟内存 \n" fi } # 设置交换分区 set_swap(){ echo -e " 开始设置虚拟内存容量,建议为内存的2倍。但过大的交换分区会影响磁盘IO,请悉知。 " read -p " 请输入需要添加的虚拟内存容量,单位MB: " swap_capacity if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then read -e -p " 交换分区文件已存在,继续创建会删除以前的交换分区,是否继续创建? [Y/n] :" yn [[ -z "${yn}" ]] && yn="y" if [[ $yn == [Yy] ]]; then unset_swap mkdir /swap dd if=/dev/zero of=/swap/swapfile bs=1MB count=$swap_capacity mkswap /swap/swapfile chmod 600 /swap/swapfile swapon /swap/swapfile sed -i '/swap/d' /etc/fstab echo "/swap/swapfile swap swap defaults 0 0" >>/etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "\n 新的虚拟内存设置完成 \n" else echo -e "\n 设置失败,启动删除程序 \n" unset_swap fi else echo -e "\n 用户取消,程序退出 \n" exit 1 fi else echo " " # 为了美观输出一个空行 mkdir /swap dd if=/dev/zero of=/swap/swapfile bs=1MB count=$swap_capacity mkswap /swap/swapfile chmod 600 /swap/swapfile swapon /swap/swapfile sed -i '/swap/d' /etc/fstab echo "/swap/swapfile swap swap defaults 0 0" >>/etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "\n 虚拟内存设置完成 \n" else echo -e "\n 设置失败,启动删除程序 \n" unset_swap fi fi } # 设置交换分区前的环境检查 before_set_swap(){ echo -e "\n 开始检查系统 " check_system_os check_root dependent_install >/dev/null 2>&1 & virt_check set_swap } ############################################################ echo -e " -------------------------" echo -e " 设置虚拟内存" echo -e " 版本:1.0" echo -e " 作者:WolfSkylake " echo -e " -------------------------" echo -e " 1、添加虚拟内存" echo -e " 2、取消虚拟内存" echo -e " -------------------------" read -p " 请输入要执行的操作:" num case "$num" in 1) before_set_swap ;; 2) unset_swap ;; esac ############################################################ |
就像朋友说的一样,因为“懒”,驱动着一群程序员想尽办法把机械化的重复,变成一条一条的代码。
反观人类的历史,懒也是推动人类进步的一种动力,因为懒,所以发明了各种为了“懒”而服务的东西。
但是,这个过程,何尝不是一种乐趣呢?
本教程,脚本均为原创,允许转载。转载请注明出处,谢谢。
本文链接:https://www.mengclaw.com/2020/03/05/627/
版权所有©2020萌爪实验室
我可以把脚本放到github上吗?我会保留脚本作者和脚本链接的
请标明本文链接以及作者,转载后请在本文下留言Github地址即可。