可以使用什么命令将交换分区中的所有内容强制释放回内存?
假设我有足够的内存。
答案1
swapoff -a
您还可以通过运行然后以 root 身份运行来清除交换,swapon -a
而不是重新启动以达到相同的效果。
因此:
$ free -tm
...
Swap: 6439 196 6243
...
$ sudo swapoff -a
$ sudo swapon -a
$ free -tm
...
Swap: 6439 0 6439
...
正如评论中指出的,如果没有足够的内存,swapoff
将导致“内存不足”错误,并导致内核杀死进程以恢复 RAM。
答案2
如前所述,如果内核没有足够的可用内存,则简单地停用所有交换将导致内核开始杀死某些东西。如果您希望避免这种情况,请先创建第二组交换。然后:
swapon /second/swap/device && swapoff /first/swap/device
swapon /first/swap/device && swapoff /second/swap/device
这仍然会交换所有内容,但如果没有足够的空间,它将被转移到第二个交换设备,而不是随机杀死东西。然后把它全部移回去。
答案3
单线:
sudo bash -c 'swapoff -a && swapon -a'