linux的文件思想
扫描二维码
随时随地手机看文章
文件是允许操作系统记录和存储信息的常规结构。 与其他操作系统不同,类UNIX操作系统将所有内容都视为一个通用文件。 这意味着不仅分区以文件形式提供,而且某些设备(例如RAM,智能手机,外部硬盘驱动器和光盘驱动器)的目录也是文件。 另外,套接字和管道也是文件!
此外,每个 TTY 终端(使用CTRL ALT F1打开的终端)都是系统眼中的"文件"。
目录 /dev
如果浏览 /dev 目录,您将看到相对于其他媒体对应系统装载的所有文件。就好像你把手机插入电脑,一个外部硬盘驱动器,甚至一个U盘,都变成了操作系统的"文件"。
系统分区是在 /dev 文件夹中使用"sd"启动的文件。在同一文件夹中,TY 是远程打字机设备,由"CTRL +ALT+F1"命令访问的外壳终端。光学媒体系统(DVD、CD 等)使用的程序集块也在此文件夹中,所有文件都在这里列出。
特殊设备
在文件夹/dev中有4个特殊的文件目录:full,zero,random和null。 它们的共同之处在于它们是"特殊档案",而不仅仅是目录。
设备空:/dev/nullnull 设备(设备 null)通常用于丢弃由于某种原因结果无关紧要的进程的输出流。它还可用作一个空的便利文件。通常,此操作通过系统控制台上的重定向命令执行。发送到设备"/dev/null"的任何文件都将因操作方式而永久消失,并立即丢弃数据。
它就像一个大黑洞,一个永远也不填满的垃圾堆。
程序员因为这种特殊性而对/dev/null开很多玩笑。
请尝试以下命令:$echo "hello world" ,你会会看到"hello world"作为命令输出。
现在尝试:$ echo "hello world"> /dev/null将返回空输出。
也就是说,什么都不会发生。因为命令输出"hello world"被丢弃了,它被黑洞吞没了。/dev/null 基于 UNIX 的系统的工作方式类似于黑洞:那里发送的东西不会回来!基本上,所有的命令输出没有存储,它是直接丢弃,就好像它从未生成过一样。
设备已满:/dev/full在 Linux 上,/dev/full是一个特殊的文件,在访问时始终返回相同的错误代码:ENOSPC -这意味着"设备上没有可用空间"。此外,它还有另一个函数:因为它始终已满,因此它为以读取形式访问它的任何进程提供无限数量的空字符 (NULL)。此设备通常用于测试程序在遇到由于内存磁盘而出错时的行为!
请尝试以下命令:$echo "hello world">/dev/full它将给这个设备完全错误,模仿一个拥挤的硬盘!bash:echo:write error:No space left on device
零设备:/dev/zero在类似 Unix 的操作系统上,/dev/zero 是一个特殊的文件,它提供从其中读取的空字符数 — ASCII 表的 NULL,0x00;而不是"零位"、"0"字符,其值为 0x30*。例如,此设备生成的空字符流可用于覆盖磁盘上的信息(以清理它)或生成大小为 X 到无穷大的干净文件。BSD 系统通过 mmap 函数实现共享内存,该函数将 /dev /zero 映射到 RAM 来使用它。
创建称为"test"的大型空文件:$ dd if=/dev/zero of=/home/ $user/test count=1000 bs=1000
如果不对命令施加限制,则获取为"dd if=/dev/zero=/home/$user/test",您将看到一个文件,该文件将无限制增长直到磁盘写满,它才会停止增长,从而导致"无磁盘空间可用"错误。当您要恢复分区表已损坏且无法恢复的笔驱动器时,此命令很有趣。
dd命令强制写入,和 /dev /zero 将填充每个存储块,zero。它将处于新制造状态,要求您稍后使用程序(如磁盘或 Gparted)来重建分区表!请注意此命令,如果输出为 of=/dev/sda1,则对整个 sda1 磁盘(用零填充)归零,从而使文件无法恢复。
随机设备:/dev/random它的工作原理和使用 of=/dev/zero 相同的逻辑,填充磁盘,使用随机值创建大小 n 的文件,这些文件由计算机处理生成、收集 GPU 信息字符、RAM 内存等。/dev/random 适用于需要高质量随机数(如 SSH 和其他共享网络的一次性键盘或公钥生成)的用途。
如果我们将 /dev/zero的内容发送到 /dev/null会发生什么事情。
$ sudo dd if=/dev/zero of=/dev/null
此命令将生成一个趋向于无穷大的文件,该文件将记录在无限空间设备中 – 我们的黑洞!实际上,它不会损坏硬件磁盘,因为实际上不会生成数据并将其写入磁盘。但是,在内核的角度来看,有数据传输:它将产生高CPU消耗,这将选择其中一个内核来占用100%cpu。这种类型的命令用于性能测试,例如,检查计算机在 CPU 中 100% 的性能表现。
挂载分区
1. 使用 DD 命令创建充满zero的 4Gb 文件。
$ dd if=/dev/zero of=~/test bs= 1M count=40962
现在,让我们格式化此文件,选择具有 EXT4 格式!
$mkfs.ext4 -m .005 ~/test
命令中的 -m 标志会导致我们默认将 EXT4 设置为 05 的"根"空间。这对于安装系统和防止 EXT4 在默认情况下占用大量磁盘空间甚至很有用。现在你有一个4GB的文件类型"unkown"的"test"在你的/home目录下。把它装成分区!
$ sudo mkdir /media/test
$ sudo mount -rw ~/test/media/test/
这样我们就创建好了一个EXT4 格式文件,并且创建了一个 EXT4 分区,我们可以在这里面创建其它文件或者写入东西。
我们可以针对任何文件格式执行相同的过程:EXT2、FAT32、NTFS 等。一切都只取决于我们的需求!但是,不要认为您可以在其上安装 Windows,因为它是分区内的分区,在 EXT4(或 btrfs 或 xfs)下管理它,具体取决于您的系统)。将其作为分区安装在 Windows 上也比较棘手,因为系统不作为基于 UNIX的设备运行,将块设备读取为文件,而是以不同的方式对待它们。
一切都是一个文件
也就是说,文件夹、目录、分区(即存储事物的东西)都不过是定义在磁盘或 SSD 扇区中的"索引文件"。
当他们讨论基于UNIX的系统的时候,为了简单话理解,我们就说一切都只是一个文件,当然这么理解有一定的偏颇,但是对于我们理解操作系统却有着非常大的帮助。