几天前我们写了关于在Linux中创建交换文件的3种方法,这些方法很常见但需要手动操作。今天找到了GaryStafford[1]写的一个小shell脚本(两个shell脚本,一个用于创建交换文件,一个用于删除交换文件),可以帮助我们创建/删除和自动挂载交换文件。默认情况下,此脚本创建并安装一个512MB的交换文件。如果你想要更多的交换空间和不同的文件名,你需要相应地修改脚本。修改脚本并不困难,因为它是一个易于访问的小脚本。推荐阅读:在Linux中创建或扩展交换空间的3种简单方法如何检查当前交换文件大小使用free[3]和swapon命令检查现有交换空间。$free-htotalusedfreesharedbuff/cacheavailableMem:2.0G1.3G139M45M483M426MSwap:2.0G655M1.4G$swapon--showNAMETYPESIZEUSEDPRIO/dev/sda5partition2G655.2M-1上面的输出显示我当前的交换空间是2GB。创建交换文件创建一个create_swap.sh文件并添加以下内容以自动创建和挂载交换空间。$nanocreate_swap.sh#!/bin/sh#sizeofswapfileinmegabytesswapsize=1024#doestheswapfilealreadyexist?grep-q"swapfile"/etc/fstab#ifnotthencreateitif[$?-ne0];thenecho'swapfilenotfound.Addingswapfile.'fallocate-l${swapsize}M/swapfilechmod600/swapfilemkswap/swapfileswapon/swapfileecho'/swapfilenoneswapdefaults00'>>/etc/fstabelseecho'swapfilefound.Nochangesmade.'fiecho'--------------------------------------------'echo'检查swapspace是否创建?'echo'--------------------------------------------'swapon--show为文件添加执行权限。$sudo+xcreate_swap.sh运行该文件以创建和挂载交换文件。$sudo./create_swap.shswapfilenotfound.Addingswapfile.Settingupswapspaceversion1,size=1024MiB(1073737728bytes)nolabel,UUID=d9004261-396a-4321-a45f-9923e3e1328c------------------------------------------检查交换空间是否创建?------------------------------------------NAMETYPESIZEUSEDPRIO/dev/sda5partition2G954.1M-1/swapfilefile1024M0B-2可以看到新的1024M交换文件。重新启动系统以使用新的交换文件。删除交换文件如果不再需要交换文件,则创建remove_swap.sh文件并添加以下内容以删除交换文件及其/etc/fstab挂载点。$nanoremove_swap.sh#!/bin/sh#doestheswapfileexist?grep-q"swapfile"/etc/fstab#ifitdoesthenremoveitif[$?-eq0];thenecho'swapfilefound.Removingswapfile.'sed-i'/swapfile/d'/etc/fstabecho"3">/proc/sys/vm/drop_cachesswapoff-arm-f/swapfileelseecho'Noswapfilefound.Nochangesmade.'fiecho'------------------------------------------'echo'检查swap空间是否被移除?'echo'------------------------------------------'swapon--显示并添加文件的可执行权限。$sudo+xremove_swap.sh运行脚本来删除和卸载交换文件。$sudo./remove_swap.shswapfilefound.Removingswapfile.swapoff:/dev/sda5:swapofffailed:Cannotallocatememory------------------------------------------检查交换空间是否被移动?--------------------------------------------NAMETYPESIZEUSEDPRIO/dev/sda5partition2G951.8M-1
