如何在Ubuntu中删除交换文件?

我在Ubuntu中通过按照这个步骤创建了一个交换文件,但我现在不再需要它,所以我想删除它。

然而,这篇博文没有提及关于删除的任何内容,所以我尝试使用sudo rm -rf进行删除,但出现了Operation not permitted错误。

到目前为止,我尝试了许多解决由相同错误导致无法删除文件的方法,但对我的情况都没有起作用:

,其中包括:

  • 更改交换文件和根目录/的权限(hmod ugo+w .
  • 在交换文件和/上更改不可变标志(chattr -i -a .
  • 重新启动系统

所有这些都没有起作用。我想知道如何删除它,但如果它是一个交换文件,我该如何删除它?

free -h的结果是:

              total        used        free      shared  buff/cache   available 
Mem:           1.7G        101M        405M        1.2M        1.2G        1.4G
Swap:          1.5G        234M        1.3G

交换文件还在吗? 请键入命令 free -h 并将结果附加到您的问题中。 - Charles Green
1所以,交换文件仍然被交换进程使用着。请执行命令 sudo swapoff -a,然后尝试删除交换文件。 - Charles Green
@CharlesGreen 真的有用!谢谢你。能不能考虑把它作为一个答案添加进去?我会给你 +25 的声望分。 - Blaszard
2个回答

free -h 的输出显示正在使用交换空间 - 交换进程仍在运行。
输入命令:
sudo swapoff /path/to/swapfile/to/be/deleted

这将禁用交换文件,并且在那时可以删除该文件。
请注意,如果您在/etc/fstab中为交换文件创建了条目,则还应删除它(或通过在行的开头添加#来注释掉)。

谢谢。为什么需要最后一步呢? - Blaszard
之前你查看的教程的一部分是关于如何将交换文件添加到fstab中,以便在启动时挂载。我不确定如果你启动计算机并尝试挂载一个不存在的文件会发生什么。我猜它可能只会生成一个错误,但我宁愿不去测试它。 - Charles Green
供您参考:亲:在行首加上#将该行变为注释,这样如果以后您决定需要它时可以轻松恢复,但是系统会忽略该行... - guiverc
4为什么要禁用所有的交换文件来删除一个?你只需要执行 sudo swapoff /path/to/swapfile/to/be/deleted 就可以删除指定的交换文件,而无需移除其他任何文件。 - Ruslan
1@Ruslan 如果我聪明到足够在回答之前要求 OP 运行 swapon --show,这将是个好主意。 - Charles Green
1如果系统尝试通过fstab挂载交换分区,而该分区不存在,它将增加90秒的启动时间,这是我的经验。系统仍然可以启动。我遇到了UUID更改导致的问题,在启动过程中,我可以看到一个倒计时为1分30秒的计时器。 - mook765

运行以下命令以删除交换文件:
sudo swapoff -a -v
sudo rm /swapfile
#back up /etc/fstab:
sudo cp /etc/fstab /etc/fstab.bak
sudo sed -i '/\/swapfile/d' /etc/fstab

请详细解释一下建议命令中的最后一行(即 sudo sed -i '/\/swapfile/d' /etc/fstab)是做什么的?非常感谢您的帮助。 - NikolaS