有时候我们编译代码的时候会报这个错,提示因为Swap空间不足
查看当前系统的swap大小
free -m或者-h
创建一个swap文件
mkdir /home/roo/swapfile
cd /home/roo/swapfile
mkdir /home/roo/swapfile 是先在/home/roo目录下创建了一个名为swapfile的文件夹
cd 进入swapfile文件夹, 然后创建一个大小为64G的,名为swap的空文件
Swap扩容
sudo dd if=/dev/zero of=swap bs=1G count=64 / bs=1024 count=1048576
或者:
sudo fallocate -l 6G /swapfile
sudo chmod 600 /swapfile
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2
参数注释:
1 if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
if 表示input file,表示输入的文件,这里的输入文件为/dev/zero,也就是说扩容的时候,以/dev/zero的内容进行扩容,这里的/dev/zero的内容一般为二进制数据
2 of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
of 表示output file,表示输出的文件,也就是我们要进行扩容的文件所在路径,这里是/home/swap
3 ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
bs 表示1 block = 1024字节为扩容单位,也就是1K为基本单位扩容
4 cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5 skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6 seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
count 表示开辟多少个block,这里是1048576和block,大小即为:1048576/1024/1024 = 1G,也就是说,当前扩容的文件为1GB大小的空间
8 conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
进行格式化交换,将swap文件格式化成s文件系统
sudo mkswap /home/swap
或者 sudo mkswap -f swap
使扩容的空间有效,命令如下
sudo swapon /home/swap
卸载的话使用 swapoff:sudo swapoff /home/swap
永久生效,将扩容的文件信息写入到 /etc/fstab
中,格式如下:
编辑:vi /etc/fstab
写入:/home/swap swap swap defaults 0 0
参考网址:
linux下增加swap的大小_无聊写博客来玩玩的博客-CSDN博客_增加swap
ubuntu增加swap交换空间_放大的EZ的博客-CSDN博客_ubuntu增加swap交换空间
快速扩容
sudo fallocate -l 6G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile