我正在用 Python 做一个内存占用很大的项目,一直出现错误(137 SIGKILL 9,类似这样的错误),所以我查找了一个解决方案,它说要更改交换大小。我将找到的命令复制并粘贴到终端中,它开始复制一些文件:
# disable the use of swap
sudo swapoff -a
# create the SWAP file. Make sure you have enough space on the hard disk.
# here is my size, the total size is bs*count B
sudo dd if=/dev/zero of=/swapfile bs=1024 count=136314880 status=progress
# output:
# 139458259968 bytes (139 GB, 130 GiB) copied, 472 s, 295 MB/s
# 136314880+0 records in
# 136314880+0 records out
# 139586437120 bytes (140 GB, 130 GiB) copied, 472.372 s, 296 MB/s
# Mark the file as SWAP space:
sudo mkswap /swapfile
# output:
# Setting up swapspace version 1, size = 130 GiB (139586433024 bytes)
# no label, UUID=25a565d9-d19c-4913-87a5-f02750ab625d
# enable the SWAP.
sudo swapon /swapfile
# check if SWAP is created
sudo swapon --show
# output:
# NAME TYPE SIZE USED PRIO
# /swapfile file 130G 0B -2
# Once everything is set, you must set the SWAP file as permanent, else you will lose the SWAP after reboot. Run this command:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
过了一会儿(我认为它已经达到了大约 40 GB),我的系统给我一条消息,说空间不足。然后终端完成了工作,我粘贴了其余命令来设置交换,然后重新启动了计算机。然后,当我再次启动时,显示以下消息:
/dev/nvme0n1p6: clean, 1090638/907808 files, 35521979/36801792 blocks
此后它无法启动。我以恢复模式启动它,尝试了那里的一些选项(例如清理 - 尝试释放一些空间等),但没有任何效果。这是系统摘要:
我认为在进行交换更改之前,我应该检查磁盘上是否有足够的空间。另外,我认为这将我的交换升级到 40 + GB,而我希望它最大达到 8 GB...我该如何解决这个问题并保存我的数据?这个项目对我来说真的很重要,我不想失去它...我可以在恢复模式下撤消我在终端中所做的更改吗?提前致谢!!!
答案1
似乎您已要求计算机创建 130GB 的交换文件,而不是 8GB 的文件。您需要执行以下操作:
- 启动恢复系统(或使用 Live USB 驱动器)
- 确认您没有使用交换文件:
sudo swapoff -a
- 删除您创建的超大交换文件:
重要的:您需要将此命令中的文件名从 更改sudo rm -f /swappyswapswap
swappyswapswap
为目录中大交换文件的正确名称/
。此命令中的文件名是故意错误的,以便您 —希望— 不要盲目复制sudo rm
命令,因为无法撤消。 - 确认您的系统现在有空间:
df -h
- 创建一个 8GB 的全是零的文件,它将成为你的交换文件:
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
- 将新文件设置为交换文件:
sudo mkswap /swapfile
- 将新的交换文件添加到您的
/etc/fstab
文件中:
笔记:您可以随意使用您选择的任何文本编辑器来修改此文件。只需记住使用 打开文件,sudo vi /etc/fstab
sudo
因为它的所有者是root
。
在底部添加以下行:
这将确保每次重新启动时都挂载交换文件。/swapfile none swap sw 0 0
- 正常重启系统。
在复制/粘贴这些步骤之前,请务必阅读、理解并同意每一个步骤。