Linux 命令速查
文件管理 man mkfile

mkfile

创建指定大小的文件(Solaris 传统命令)。

返回

补充说明

mkfile 源自 Solaris/IRIX,用于创建一个固定长度的普通文件,内容为全零字节。常见用途包括制作交换文件、占位磁盘镜像,以及在测试中快速生成大文件。

它不属于 GNU coreutils,绝大多数 Linux 发行版默认没有该命令。在 Linux 上通常改用 fallocate、truncate 或 dd,效果基本等价,且工具链更通用。

大小参数支持后缀 b(字节)、k、m、g,不给后缀时单位为字节。需要注意 -n 只登记文件长度而不预分配数据块(稀疏文件),文件系统上并不会立刻占用相应空间,后续写入时才逐步分配。

如果用于交换文件,创建后还需 chmod 600、mkswap 和 swapon,并在 /etc/fstab 中登记,否则重启后不会自动启用。

语法

mkfile [-nv] 大小[b|k|m|g] 文件名...

选项

  • -n:只创建指定长度的稀疏文件,不写入数据块
  • -v:显示创建过程

实例

# 创建 512MB 文件,内容为零(会实际写入磁盘)
mkfile 512m /swapfile

# 只登记 1GB 长度,暂不占用磁盘空间
mkfile -n 1g disk.img

# 一次创建多个文件
mkfile 64m a.img b.img

# 做成交换文件并立即启用
chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile

Linux 上的等价写法

# 预分配真实空间(推荐,速度快且不写零)
fallocate -l 512M /swapfile

# 创建稀疏文件
truncate -s 1G disk.img

# 兼容性最好的写法:写入零
dd if=/dev/zero of=disk.img bs=1M count=1024 status=progress

注意事项

  • 目标文件已存在时行为依实现而定,写之前先确认路径,避免覆盖数据。
  • 在 NFS 等不支持稀疏语义的文件系统上,-n 的效果可能退化为真实分配。
  • 创建大文件前用 df -h 确认剩余空间,避免写满根分区。

参考链接