Skip to content
Menu
万别客的百宝袋
  • 首页
  • Linux命令|知识
  • 编程语言知识
    • Java
    • Mysql
万别客的百宝袋

Linux创建指定大小的文件以及创建虚拟内存及权限

Posted on 2024年 11月 29日2024年 11月 29日

linux创建指定大小的文件

一、生成文件大小和实际占空间大小一样的文件

dd if=/dev/zero of=50M.file bs=1M count=50

dd if=/dev/zero of=20G.file bs=1G count=20

bs=1M表示每一次读写1M数据,count=50表示读写 50次,这样就指定了生成文件的大小为50M。bs参数还可以进一步细分为ibs和obs两种,为读操作与写操作分别指定不同的Buffer大小。

二、生成文件大小固定,但实际不占空间命令

dd if=/dev/zero of=1G.img bs=1M seek=1000 count=0

这里用了一个新的命令seek,表示略过1000个Block不写(这里Block按照bs的定义是1M),count=0表示写入0个Block。用ls(查看文件大小)命令看新生成的文件,大小可以看出是1000M。但是再用du(查看文件占用空间)一看,实际占用硬盘大小只有0M。

三、命令详解

dd命令用法:

dd [选项]
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCIl码。
conv = ebcdic 把ASCIl码转换为EBCDIC码。
conv = ibm 把ASCIl码转换为alternate EBCDIC码。
conv = block 把变动位转换成固定字符。
conv = ublock 把固定位转换成变动位。
conv = ucase 把字母由小写转换为大写。
conv = lcase 把字母由大写转换为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

iconv命令用法:

iconv [选项…] [文件…]
输入/输出格式规范:
-f, –from-code=原始文本编码
-t, –to-code=输出文本编码
信息:
-l, –list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, –output=FILE 输出文件
-s, –silent 关闭警告
–verbose 打印进度信息
-?, –help 给出该系统求助列表
–usage 给出简要的用法信息
-V, –version 打印程序版本号

linux创建虚拟内存

创建虚拟内存的步骤

虚拟内存(Swap Space)是一种磁盘空间,用于在物理内存不足时存储被交换出的数据,从而提升系统的内存管理能力。以下是创建虚拟内存的具体步骤和命令。


1. 检查当前 Swap 状态

在创建新的虚拟内存之前,建议先检查当前系统的 Swap 配置。

命令:

swapon --show

参数解析:

  • swapon:用于启用或查看当前 Swap 的工具。
  • --show:显示当前启用的 Swap 区域的信息,包括设备名称、大小、优先级等。

示例输出:

如果没有启用任何 Swap,输出为空。


2. 创建一个 Swap 文件

使用 dd 命令生成一个指定大小的 Swap 文件。

命令:

sudo dd if=/dev/zero of=/swapfile bs=1G count=2

参数解析:

  • sudo:以管理员权限执行命令,创建文件需要超级用户权限。
  • dd:复制和转换文件的工具。
    • if=/dev/zero:指定输入文件为 /dev/zero,它是一个特殊文件,持续输出零字节,用于填充新文件。
    • of=/swapfile:指定输出文件为 /swapfile,即将创建的 Swap 文件路径。
    • bs=1G:设置块大小为 1GB(每次写入的字节数)。
    • count=2:指定写入的块数为 2(最终文件大小为 2GB)。

生成结果:

在根目录下生成一个名为 swapfile 的文件,大小为 2GB。


3. 更改文件权限

确保只有 root 用户可以访问 Swap 文件以增强安全性。

命令:

sudo chmod 600 /swapfile

参数解析:

  • chmod:修改文件权限。
  • 600:设置权限为仅拥有者可读写,禁止其他用户访问。
  • /swapfile:目标文件。

4. 将文件格式化为 Swap

使用 mkswap 将文件转换为 Swap 格式。

命令:

sudo mkswap /swapfile

参数解析:

  • mkswap:将指定文件或分区初始化为 Swap。
  • /swapfile:目标文件路径。

5. 启用 Swap 文件

通过 swapon 命令启用创建的 Swap 文件。

命令:

sudo swapon /swapfile

参数解析:

  • swapon:启用 Swap。
  • /swapfile:指定要启用的 Swap 文件路径。

验证:

再次执行以下命令,查看 Swap 是否启用:

swapon --show

6. 永久添加到系统配置中

为了让 Swap 文件在系统重启后仍然生效,需要将其添加到 /etc/fstab 文件。

命令:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

参数解析:

  • echo:输出一段文本。
  • '/swapfile none swap sw 0 0':
    • /swapfile:Swap 文件路径。
    • none:该字段是分区的挂载点,Swap 文件不需要挂载,设置为 none。
    • swap:文件系统类型,表示此条目是 Swap。
    • sw:挂载选项,表示启用 Swap。
    • 0 0:用于文件系统检查的选项,Swap 文件不需要检查。
  • sudo tee -a:以管理员权限将文本追加到指定文件中。

在 /etc/fstab 文件中配置 Swap 时:

关于 sw 的其他选项

sw 是 mount 的挂载选项,表示此条目是 Swap 类型,并启用它。目前,Swap 文件没有额外的挂载选项。对于 sw 来说:

  • 它是固定的选项,没有其他配置。Swap 文件或分区的功能单一,仅用于虚拟内存,sw 不需要也没有额外的挂载行为。

关于 0 0 配置

0 0 是 /etc/fstab 文件最后两个字段,分别表示:

  1. 是否用于 dump 工具的备份。
  2. 是否用于 fsck 工具的文件系统检查优先级。

1. 第一位数字:dump 设置

  • 值为 0 表示不使用 dump,不会对文件系统进行备份。
  • 值为 1 或 2 通常用于需要备份的文件系统(例如 / 或 /home)。
  • 对于 Swap 文件来说,这一功能没有意义,因此必须设置为 0。

2. 第二位数字:fsck 设置

  • 该字段定义文件系统的检查优先级:
    • 0:表示不需要进行检查(Swap 文件不需要文件系统检查)。
    • 1:用于根文件系统(/),优先检查。
    • 2:用于其他非根文件系统。
为什么 Swap 必须是 0?

Swap 文件本质上不是一个标准的文件系统,它由 mkswap 工具格式化为一种特殊的格式,且在系统运行时直接由内核管理,因此它不需要也不能被 fsck 检查。


7. 调整 Swap 优先级(可选)

通过 sysctl 或修改配置文件调整 Swap 使用的优先级。

命令:

sudo sysctl vm.swappiness=10

参数解析:

  • sysctl:修改内核参数的工具。
  • vm.swappiness=10:将系统的 Swappiness 值设置为 10,降低 Swap 的使用频率(范围:0-100,值越低越倾向于使用物理内存)。

永久设置:

编辑 /etc/sysctl.conf 文件,添加以下内容:

vm.swappiness=10

保存后运行以下命令使设置生效:

sudo sysctl -p

8. 删除 Swap 文件(可选)

如需移除 Swap 文件,按照以下步骤操作:

  1. 禁用 Swap 文件:sudo swapoff /swapfile
  2. 从 /etc/fstab 中删除条目: 手动编辑 /etc/fstab,删除 /swapfile 的相关行。
  3. 删除文件:sudo rm /swapfile

总结

通过以上步骤,您可以在 Linux 系统中成功创建并管理 Swap 文件。以下是命令的概览:

步骤命令描述
检查状态swapon --show查看当前 Swap 信息
创建文件sudo dd if=/dev/zero of=/swapfile bs=1G count=2创建一个 2GB 的 Swap 文件
修改权限sudo chmod 600 /swapfile设置文件权限为仅 root 用户可读写
格式化文件sudo mkswap /swapfile将文件格式化为 Swap
启用文件sudo swapon /swapfile启用 Swap 文件
永久配置`echo ‘/swapfile none swap sw 0 0’sudo tee -a /etc/fstab`
调整优先级sudo sysctl vm.swappiness=10调整系统 Swappiness 值

如果需要保存文档,您可以复制此内容到本地并保存为 .md 或 .txt 文件。

linux权限

chmod 600 是一个用于设置文件权限的命令,其中 chmod 是 “change mode” 的缩写,而 600 是一个八进制数,表示文件的权限。

在 Linux 和 Unix 系统中,文件权限通常分为三组:所有者(owner)、所属组(group)和其他用户(others)。每组权限可以设置为读(r)、写(w)或执行(x),分别对应八进制数 4、2 和 1。权限数字 600 分解如下:

  • 第一个数字 6 代表所有者的权限,6 是 4(读)+ 2(写),所以所有者有读和写的权限。
  • 第二个数字 0 代表所属组的权限,0 表示所属组没有任何权限。
  • 第三个数字 0 代表其他用户的权限,0 也表示其他用户没有任何权限。

因此,chmod 600 设置的权限意味着:

  • 文件所有者可以读取和修改文件。
  • 文件所属的用户组不能读取、写入或执行文件。
  • 其他用户也不能读取、写入或执行文件。

©2026 万别客的百宝袋