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
文件最后两个字段,分别表示:
- 是否用于
dump
工具的备份。 - 是否用于
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 文件,按照以下步骤操作:
- 禁用 Swap 文件:
sudo swapoff /swapfile
- 从
/etc/fstab
中删除条目: 手动编辑/etc/fstab
,删除/swapfile
的相关行。 - 删除文件:
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
设置的权限意味着:
- 文件所有者可以读取和修改文件。
- 文件所属的用户组不能读取、写入或执行文件。
- 其他用户也不能读取、写入或执行文件。