我在RAM中有一些敏感数据,我希望它们不要存储在磁盘上。如何禁用交换空间?
我的RAM足够多。如果RAM消耗过高,我不介意终止进程。如何禁用交换空间?
注意:我没有交换分区,并且这是在虚拟机(VMware)中运行的。
我的RAM足够多。如果RAM消耗过高,我不介意终止进程。如何禁用交换空间?
注意:我没有交换分区,并且这是在虚拟机(VMware)中运行的。
sudo swapoff -a
swapoff -a
命令,重新打开交换空间可以使用swapon -a
命令。
有关显式设备关闭交换空间的更多信息,请参考man swapoff
。/etc/fstab
文件中注释掉(在行前面添加#)交换分区的条目来在重启后禁用交换。这样可以防止交换分区在重启后自动挂载。要一次性完成此操作,可以使用以下命令:sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo sed -i '/ swap / s/^/#/' /etc/fstab
/etc/fstab
上的交换条目将类似于这样:#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none swap sw 0 0
sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
附注:我还添加了#?
以防止在行已被禁用时对/etc/fstab进行其他更改。 - Alek_Asudo swapoff -a
以上命令仅在当前会话中禁用交换空间,您需要在/etc/fstab文件中注释掉交换分区。要做到这一点,只需在交换行的开头添加“#”(注释行)即可。步骤如下:
sudo gedit /etc/fstab
打开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
sudo -s
crontab -e
并添加
@reboot sudo swapoff -a
sudo swapoff -a
将其关闭,然后使用dd命令将交换设备填充为零或随机数据。less /etc/fstab
)。/swapfile
(在Ubuntu 17.04(Zesty Zapus)及更高版本中,默认情况下将交换分区替换为交换文件)。sudo dd if=/dev/zero of=swap
,将单词swap替换为您在/etc/fstab
中找到的交换设备或文件sudo dd if=/dev/random of=swap
再次将单词swap替换为在/etc/fstab
中找到的交换设备或文件
以填充随机数据。
对于交换文件(仅带有路径前缀),您可以使用sudo rm /path/to/swapfile
简单删除该文件,但最好按照上述描述填充它以垃圾数据,这样下次打开交换时就会:
swapon -a
free
gnome-disks
。它并未安装在所有发行版中。如果没有安装,请按照打印的指示进行安装,然后再试一次。在左侧窗格中寻找带有“swap”字样的设备。它通常具有与您的物理内存相同的大小。点击方形按钮以禁用它。使用您的 root 密码验证此更改。/etc/fstab
中的交换条目所在行中的defaults
替换为sw,noauto
。/dev/mapper/centos-swap swap swap sw,noauto 0 0
(对于您来说,路径/dev/mapper/centos-swap
可能不同)。
现在重新启动后,请检查输出,您的交换空间将不会被挂载:
$ free -m
total used free shared buff/cache available
Mem: 3791 100 3408 8 282 3483
**Swap: 0 0 0**
禁用交换空间
运行以下命令以禁用交换空间:
sudo swapoff -a
现在删除交换文件:
sudo rm /swap.img
它是安全的,而且不需要重新启动。