侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux swapon命令用法详解:如何创建、激活、关闭和查看交换空间(附实例教程和注意事项)

Linux swapon命令介绍

swapon命令是用来激活Linux系统中的交换分区或交换文件的。交换分区或交换文件是一种专用的空间,用于在系统的物理内存(RAM)达到最大容量时存储不活跃的页面或进程。它可以临时保存数据,以便在需要时检索,对于内存有限的系统特别有用。交换空间可以是硬盘上的一个分区或一个文件。通常,一个设备指的是大多数发行版中的一个分区,而一个交换文件是位于根目录(/)下的一种特殊类型的文件。交换分区或交换文件被称为specialfile,它提供了两种激活它的选择。
-L Label:你可以使用这个选项来通过它的标签来指定设备或文件,标签是分配给设备或文件的人类可读的名称。
-U uuid:你可以使用这个选项来通过它的通用唯一标识符(UUID)来指定设备或文件。UUID是分配给设备或文件的唯一和标准化的标识符,提供了一种非常精确的指定它的方法。

Linux swapon命令适用的Linux版本

swapon命令在大多数Linux发行版中都是可用的,但是在一些嵌入式Linux系统中可能不支持。你可以使用uname -a命令来查看你的Linux版本和内核信息。如果你的系统不支持swapon命令,你可能需要重新编译内核,或者使用其他方法来增加内存。以下是一些常见的Linux发行版和它们的安装命令:

  • Ubuntu/Debian:swapon命令是util-linux软件包的一部分,你可以使用以下命令来安装它:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install util-linux
  • CentOS/RHEL/Fedora:swapon命令也是util-linux软件包的一部分,你可以使用以下命令来安装它:
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
  • Arch Linux/Manjaro:swapon命令是util-linux软件包的一部分,你可以使用以下命令来安装它:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S util-linux

Linux swapon命令的基本语法

swapon命令的基本语法如下:

swapon [options] [specialfile...]

你可以指定一个或多个specialfile来激活交换空间,也可以使用一些选项来控制swapon命令的行为。以下是一些常用的选项:

选项描述
-a, --all激活/etc/fstab文件中列出的所有交换设备和文件
-d, --discard为交换设备启用丢弃选项
-p, --priority设置交换设备的优先级
-s, --show显示所有已激活的交换设备和文件的使用情况汇总
-v, --verbose在执行过程中显示详细信息

Linux swapon命令的常用选项说明

以下是一些使用swapon命令的常用选项的说明和示例:

激活所有交换设备和文件

使用-a或--all选项可以激活/etc/fstab文件中列出的所有交换设备和文件。你可以使用cat /etc/fstab命令来查看你的系统中可用的交换分区和文件。例如:

[linux@bashcommandnotfound.cn ~]$ sudo swapon -a

或者

[linux@bashcommandnotfound.cn ~]$ sudo swapon --all

你可以使用-v选项来显示更多的信息。如果你想激活一个特定的设备,你可以指定它的名称给swapon命令。例如:

[linux@bashcommandnotfound.cn ~]$ sudo swapon /testswap

关于交换设备和文件的信息被存储在/proc/swaps文件中。

显示交换使用情况汇总

使用-s或--summary选项可以显示所有已激活的交换设备和文件的使用情况汇总。例如:

[linux@bashcommandnotfound.cn ~]$ swapon --summary

输出类似于:

Filename                Type        Size    Used    Priority
/dev/sda5               partition   2097148 0       -2
/testswap               file        1048572 0       -3

你可以看到每个交换设备或文件的文件名、类型、大小、使用量和优先级。

设置交换设备的优先级

使用-p或--priority选项可以设置交换设备或文件的优先级。优先级是一个介于-1和32767之间的整数,优先级越高的交换空间越先被使用。如果没有指定优先级,那么默认的优先级是-1,如果有多个交换空间具有相同的优先级,那么内核会根据一些算法来选择使用哪个。例如,你可以使用以下命令来设置/testswap文件的优先级为10:

[linux@bashcommandnotfound.cn ~]$ sudo swapon -p 10 /testswap

你可以使用swapon --summary命令来查看交换设备或文件的优先级是否已经改变。

启用交换丢弃选项

丢弃选项与SSD(固态硬盘)上的TRIM命令有关。当在一个交换设备上启用这个选项时,它表示交换空间应该在数据不再使用时通知SSD,可以安全地删除数据,从而将空间标记为可用。这可以提高SSD的性能和寿命。你可以使用-d或--discard选项来启用交换丢弃选项。例如:

[linux@bashcommandnotfound.cn ~]$ sudo swapon --discard /dev/sda5

你可以使用lsblk -D命令来查看设备是否支持丢弃操作。

Linux swapon命令的实例

以下是一些使用swapon命令的实例,结合了一些最常搜索的关键词:

如何创建一个交换文件

在使用swapon命令之前,你可能需要先创建一个交换文件。以下是创建一个交换文件的步骤:

  • 使用fallocate命令来分配一个指定大小的文件,例如,创建一个1GB的文件/testswap:
[linux@bashcommandnotfound.cn ~]$ sudo fallocate -l 1G /testswap
  • 使用chmod命令来设置文件的权限,只允许root用户读写交换文件,设置权限为600:
[linux@bashcommandnotfound.cn ~]$ sudo chmod 600 /testswap
  • 使用mkswap命令来在文件上启用交换区域:
[linux@bashcommandnotfound.cn ~]$ sudo mkswap /testswap
  • 使用swapon命令来激活交换文件:
[linux@bashcommandnotfound.cn ~]$ sudo swapon /testswap
  • 如果你想让交换文件在系统重启后仍然有效,你需要在/etc/fstab文件中添加以下条目:
/testswap swap swap defaults 0 0

好的,我会继续完成文章内容。以下是剩余的部分:

如何查看交换空间的使用情况

你可以使用free命令来查看交换空间的总大小、已使用量和可用量。例如:

[linux@bashcommandnotfound.cn ~]$ free -h

输出类似于:

              total        used        free      shared  buff/cache   available
Mem:          3.8Gi       1.2Gi       1.4Gi       101Mi       1.2Gi       2.2Gi
Swap:         2.0Gi          0B       2.0Gi

你可以看到交换空间的总大小是2.0GB,目前没有使用任何交换空间,所以可用量也是2.0GB。你可以使用-h选项来显示人类可读的单位,如M和G。

你也可以使用top命令来查看交换空间的使用情况,它会实时更新交换空间的使用量和百分比。例如:

[linux@bashcommandnotfound.cn ~]$ top

输出类似于:

top - 10:24:17 up  1:24,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  97 total,   1 running,  96 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3906.0 total,   1447.5 free,   1250.9 used,   1207.6 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2279.0 avail Mem 

你可以看到交换空间的总大小是2048.0MB,目前没有使用任何交换空间,所以可用量也是2048.0MB。

如何关闭交换空间

如果你想关闭一个已激活的交换空间,你可以使用swapoff命令。它的语法和swapon命令类似,你可以指定一个或多个specialfile来关闭交换空间,也可以使用一些选项来控制swapoff命令的行为。以下是一些常用的选项:

选项描述
-a, --all关闭/etc/fstab文件中列出的所有交换设备和文件
-v, --verbose在执行过程中显示详细信息

例如,你可以使用以下命令来关闭/testswap文件:

[linux@bashcommandnotfound.cn ~]$ sudo swapoff /testswap

或者,你可以使用以下命令来关闭所有交换设备和文件:

[linux@bashcommandnotfound.cn ~]$ sudo swapoff -a

或者

[linux@bashcommandnotfound.cn ~]$ sudo swapoff --all

你可以使用swapon --summary命令来查看交换空间是否已经关闭。

Linux swapon命令的注意事项

以下是一些使用swapon命令时需要注意的事项:

  • 在使用swapon命令之前,你需要确保你的系统支持交换空间,你可以使用swapon -s命令来查看你的系统是否已经有交换空间。如果没有,你需要先创建一个交换分区或交换文件,然后再使用swapon命令来激活它。
  • 在使用swapon命令时,你需要有root权限,或者使用sudo命令来提升权限。否则,你可能会遇到以下错误:
[linux@bashcommandnotfound.cn ~]$ swapon /testswap
swapon: /testswap: Operation not permitted
  • 在使用swapon命令时,你需要确保你指定的specialfile是一个有效的交换分区或交换文件,而不是一个普通的文件或目录。否则,你可能会遇到以下错误:
[linux@bashcommandnotfound.cn ~]$ swapon /test
swapon: /test: read swap header failed: Invalid argument
  • 在使用swapon命令时,你需要确保你指定的specialfile没有被其他程序占用,否则,你可能会遇到以下错误:
[linux@bashcommandnotfound.cn ~]$ swapon /dev/sdb1
swapon: /dev/sdb1: Device or resource busy
  • 如果你在使用swapon命令时遇到以下错误:
[linux@bashcommandnotfound.cn ~]$ swapon /testswap
bash: swapon: command not found

那么可能是因为你的系统没有安装util-linux软件包,或者swapon命令没有在你的PATH环境变量中。你可以使用which swapon命令来查看swapon命令的位置,如果没有找到,你可以使用相应的安装命令来安装util-linux软件包,或者使用绝对路径来执行swapon命令。

1

评论区