如何禁用交换?

142 swap

我在 RAM 中有一些我不想放在磁盘上的敏感数据。如何禁用交换?

我有足够多的内存。如果 RAM 消耗太高,我不会遇到终止进程的问题。如何禁用交换?

注意:我没有交换分区,它在 VM ( VMware ) 中运行

ubf*_*an1 196

使用

sudo swapoff -a  
Run Code Online (Sandbox Code Playgroud)

是关闭交换的常用方法,使用swapon -a命令将其重新打开。有关man swapoff 关闭显式设备交换的更多信息,请参阅。

  • 对交换的永久更改通常在 /etc/fstab 中进行。 (34认同)
  • 这似乎不会在重新启动后持续存在? (14认同)
  • 不。相反,您注释掉 /etc/fstab 中的交换行。 (11认同)

Avi*_*Raj 49

您可以在重新启动后通过注释掉(在行前添加 #)/etc/fstab文件中的交换条目来禁用交换。它会阻止交换分区在重新启动后自动挂载。要在单个命令中执行此操作:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Run Code Online (Sandbox Code Playgroud)

或者干脆:

sudo sed -i '/ swap / s/^/#/' /etc/fstab
Run Code Online (Sandbox Code Playgroud)

现在您的交换条目/etc/fstab将类似于以下内容:

#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none            swap    sw              0       0
Run Code Online (Sandbox Code Playgroud)

使用您自己的特定数字和小写字母而不是字母“x”。

  • 如果字段由制表符(不是空格)分隔,则您的 sed 命令不起作用。最好写成 `sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab` PS:我还添加了 `#?` 以防止在线路已被禁用。 (4认同)
  • 为什么你引用的 UUID 有一些具体的数字?对于所有 UUID,它们是否应该相同?我的分区的 UUID 与您指定的数字没有任何重合。 (2认同)

小智 8

这可能是一个蹩脚的解决方案,但我经常使用它。你可以简单地输入

sudo -s
crontab -e
Run Code Online (Sandbox Code Playgroud)

并添加

@reboot sudo swapoff -a  
Run Code Online (Sandbox Code Playgroud)

因此,它将在启动时自动禁用。

  • 我希望不用说,这是一个非常糟糕的方法。为什么要创建一个启动时任务来_关闭_另一个选项,当有另一个文件可以编辑以首先阻止它被打开时 (19认同)
  • 也许不那么美观,但没有什么不好的。如果您已经非常习惯使用 crontab,那么该解决方案将比简单地盲目地将 SE 上其他用户告诉您的操作复制到 /etc/fstab 中更容易和更有意义。而且,您仍然会记得如何在新计算机上执行此操作而无需再次运行 google。我碰巧几乎不知道 crontab 是什么,无论如何我更熟悉磁盘分区,但逻辑仍然存在。 (4认同)
  • @NicholasPipitone /etc/fstab 解决方案也适用于也安装在 /etc/fstab 中的交换文件。请参阅我的回答 [此处](https://askubuntu.com/a/463167/225694) (4认同)
  • 实际上,这可能是更好的解决方案。因为 /etc/fstab 建议仅适用于交换分区。此解决方案适用于 linux 设置,无论它们是否使用分区或交换文件。 (2认同)

Eld*_*eek 7

如果您担心交换的内容,您始终可以按照通常的方式将其关闭sudo swapoff -a,然后使用dd用零或随机数据填充交换设备。

首先使用 fstab 的内容来查找您的交换文件或设备 ( less /etc/fstab)。

找到它并在 sda5 或/swapfile (默认情况下,交换分区被替换为 Ubuntu 17.04(Zesty Zapus)及更高版本中的交换文件)的位置进行了两次和三次检查。

如果是交换分区或驱动器(以 /dev 开头):发出“disk destroyer”命令(不要轻易使用)

sudo dd if=/dev/zero of=swap, 用您所在的交换设备或文件替换单词swap/etc/fstab

爆破它充满零或

sudo dd if=/dev/random of=swap再次用您所在的交换设备或文件替换单词交换/etc/fstab

让它充满随机数据。

在交换文件的情况下(仅以路径开头):,您可以简单地使用 删除文件sudo rm /path/to/swapfile,但最好如上所述用垃圾填充它,以便下次打开交换时使用

swapon -a
Run Code Online (Sandbox Code Playgroud)

系统将愉快地再次使用它。如果您有足够的 RAM,则可能根本不需要交换。发出命令

free
Run Code Online (Sandbox Code Playgroud)

当系统处于重负载下时,查看使用了多少来做出此决定。

如果您确定您永久不需要交换(用于休眠或其他任何东西),您可以按照此处的建议简单地在 fstab 中注释掉该行。

自由


Soh*_*N3N 7

sudo swapoff -a
Run Code Online (Sandbox Code Playgroud)

以上命令仅对当前会话禁用交换,您需要在/etc/fstab文件中注释掉交换分区。为此,您只需在交换行的开头添加“#”(注释行)。步骤如下:

  1. 打开 fstab 文件,输入sudo gedit /etc/fstab终端。

文件的内容如下所示:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/host/ubuntu/disks/root.disk /               ext4    loop,errors=remount-ro 0       1
/host/ubuntu/disks/swap.disk none            swap    loop,sw         0       0
#/dev/sda10 /media/ASD  vfat    defaults    0   0
#/dev/sda1  /media/98   vfat    defaults    0   0
Run Code Online (Sandbox Code Playgroud)
  1. 只需将哈希 (#) 添加到交换分区行的开头,该行如下所示:

#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

  1. 重启你的电脑