首页 > 编程知识 正文

linux写入内容到文件,shell循环读取文件内容并使用

时间:2023-05-06 12:50:11 阅读:46453 作者:795

是否要将新硬盘或固态硬盘添加到Linux计算机? 必须编辑fstab文件。 很多人觉得这个想法很可怕。 是的,重要的是你是对的,但掌握正确的知识确实不是什么难事。 本节介绍了编辑fstab文件的过程,以便将新驱动器集成到文件系统中。

在Linux计算机上添加新硬盘并不复杂,但第一次尝试可能会有点混乱。 已连接硬件,打开计算机电源,并登录操作系统。 但是,新驱动器在哪里都看不到。 为什么不显示? 如何在Linux上显示驱动器并允许开始配置?

其实,Linux已经看到了你的硬件,但没有马上发布。 还会显示一条消息,指示找到了新硬件。 有关必须包含在fstab文件中的信息,必须与Linux联系。

以下是如何配置新硬盘,以便Linux和用户可以看到和使用它。 这个过程分为两个部分。 第一部分进行一些调查,以确定硬盘并收集有关硬盘的信息。 第二部分使用侦察阶段收集的信息编辑fstab文件。

正在向此系统中添加两个新驱动器。 一个是32 GB机械硬盘(硬盘),另一个是16 GB固态硬盘(固态硬盘)。

您需要知道Linux可以看到它们,以及Linux用于它们的块设备。 在诸如Linux和Unix这样的操作系统中,块设备用作与设备的接口,并且可以读取和写入数据,除非它们是只读的。 块设备通常表示硬盘上的大容量存储设备,如分区和CD-ROM。 它们是在/dev目录中创建的。

可以使用lsblk命令列出连接到Linux计算机的块设备。

可以使用lsblk命令列出连接到Linux计算机的块设备。

lsblk的输出以列为单位。

这些列如下:

在上面的屏幕快照中,环路设备的主要编号为7,表示环回或环路设备。 子编号每次增加1。 循环设备与squashfs文件系统一起使用。 每次使用snappy软件包管理系统安装APP应用程序时,都会创建一个squashfs文件系统。

SCSI硬盘有sda、sdb、sdc等名称,全部有8个主要编号(SCSI硬盘)。 子数字以16s分组。 第一个驱动器的次编号sda为0到15。 0表示物理驱动器,第1号表示驱动器的第一个分区。 对于第二个驱动器sdb,编号为16到31。 16表示物理驱动器,17表示驱动器的第一个分区。 以下16个数字(32至47 )用于sdc的次要数字,依此类推。

其他常见的主要数字是3 (对于ide硬盘)和11 (对于CD-ROMS )。

实际上,不建议使用SDCSI CD-ROM驱动器的/dev/sr0样式。 的格式为/dev/scd0。 尽管如此,/dev/sr0格式仍被用于研究本文的所有机器所使用。

内核文档包含一个长字符串,其中列出了一阶和二阶值的所有可能值。 那个名单很长。

为了使lsblk的输出杂乱,可以使用grep只选择感兴趣的项目。 既然知道还没有添加环路设备,就选择所有的SCSI硬盘吧。 我知道它们的名字里含有sd。

为了使lsblk的输出杂乱,可以使用grep只选择感兴趣的项目。 既然知道还没有添加环路设备,就选择所有的SCSI硬盘吧。 我知道它们的名字里含有sd。

运行此命令时,grep只打印sd行。 在我们的测试机器上,我们发现了:

因此,有三个SCSI驱动器。 第一个/dev/sda安装在文件系统/的根目录中。 剩下的两个完全没有安装。 这被期待在新的驱动器上。 驱动器/dev/sdb的大小为32 GB,这意味着它是传统的机械驱动器。 驱动器/dev/sdc的大小为16 GB,这是我们的固态硬盘驱动器。

实际上,这是虚拟机,因此也是虚拟磁盘。 因此,固态硬盘看起来像SCSI机械驱动器。 在典型桌面上,NVMe SSD显示为/dev/nvme0n1,第一个分区为/dev/nvme0n1p1。 其主要数字是259。 请注意,这些差异在fstab文件中保持不变,但如果您有固态硬盘,它们不会显示为物理驱动器。

另外,如果驱动器是新的,则驱动器可能没有分区。 如果需要,可以使用fdisk创建分区。

本文介绍如何在Linux上使用Fdisk管理分区

如果将-o (输出)选项与lsblk一起使用,并在显示中添加了ROTA (旋转)列,则lsblk使用1指示旋转存储设备(机械驱动器),使用0指示非旋转存储设备(固态驱动器)。

如果将-o (输出)选项与lsblk一起使用,并在显示中添加了ROTA (旋转)列,则lsblk使用1指示旋转存储设备(机械驱动器),使用0指示非旋转存储设备(固态驱动器)。

右侧有一个附加列,称为" ROTA "列。 如您所见,固态硬盘的设备和分区为0。 这是有道理的。 因为固态硬盘是不可旋转的存储装置。

在考虑fstab文件之前,请检查是否可以手动安装驱动器。 这样,例如

果在使用fstab文件时某些操作不起作用,则众所周知问题一定是我们的语法,而不是驱动器本身的问题。

在/ mnt目录中创建一些临时挂载点。 您将需要使用sudo,并且将提示您输入密码。

须藤mkdir / mnt / scsi

须藤mkdir / mnt / ssd

现在,将SCSI驱动器安装在新的安装点上。 最好以最简单的形式使用mount命令。 告诉它我们要挂载的分区的名称,以及我们要挂载其的挂载点。 mount将在我们指定的安装点将文件系统安装在该分区上。

指定的是用于保存文件系统的分区,而不是驱动器,因此请确保包括该分区的数字,在这种情况下为1。

须藤挂载/ dev / sdb1 / mnt / scsi

如果一切顺利,安装将不会有任何响应。 您默默地返回到命令提示符。

安装SSD非常简单。 我们告诉mount在哪个设备上要挂载哪个分区,以及要在其上挂载的挂载点。

须藤挂载/ dev / sdc1 / mnt / ssd

同样,沉默是金色的。

相关文章:如何从Linux终端挂载和卸载存储设备

要验证是否已进行安装,请再次使用lsblk。 通过grep很好地输出其输出,并选择sda1,sdb2和sdc1条目。

要验证是否已进行安装,请再次使用lsblk。 通过grep很好地输出其输出,并选择sda1,sdb2和sdc1条目。

mount向我们显示了三个已安装的分区。 那就是我们刚刚挂载的两个,而原始分区挂载在/上。

分区/ dev / sdb1安装在/ mnt / scsi上,并且在旋转的存储设备上。 分区/ dev / sdc1安装在/ mnt / ssd上,并且位于非旋转存储设备上。 一切似乎都很好。

现在,我们需要配置fstab文件,以便在每次启动计算机时都安装这些设备。

fstab文件包含重新启动计算机时安装的每个文件系统的条目。 每个条目由六个字段组成。这些字段是:

必须按此顺序指定这些字段,并且它们之间必须有空格或制表符。 寻找这些字段的值可能会令人生畏,尤其是选项字段的值。 options字段选项必须在逗号分隔的列表中,并且之间不能有空格。

每个文件系统的手册页将列出可以使用的选项。 ext4大约有40个选项。以下是一些较常见的选项:

默认选项是一个很好的开场白。 如果需要进行一些微调,则可以添加或删除其他选项。如果只有一种巧妙的方法来获取所需的设置,则需要按顺序将其输入fstab文件中。

输入mtab文件。

mtab文件是当前已挂载的文件系统的列表。这与fstab文件相反,后者列出了在引导时应挂载的文件系统。mtab文件包括手动挂载的文件系统。 我们已经安装了新驱动器,因此它们应该显示在mtab文件中。

我们可以使用cat查看mtab文件的内容。 通过将输出通过grep传递并仅查看/ dev / sdb1和/ dev / sdc1来限制输出。

猫/ etc / mtab | grep sd [b-c] 1

输出显示了这两个分区的mtab条目。

我们可以提升这些值并将其直接放入fstab文件中,确保每个字段之间都有空格或制表符。 那就是那样。 重新启动时,驱动器将被安装。

有两个警告。 一个是挂载点。 我们创建临时挂载点只是为了证明我们可以在新驱动器上挂载新分区。 如果周三需要更改,则需要输入实际的挂载点而不是我们的临时挂载点。

第二个警告是,如果我们使用mtab文件中的设置,那么最好将块设备文件用作每个分区的标识符。 那可以工作,但是如果将新的大容量存储硬件添加到计算机中,则/ dev / sda和/ dev / sdb等值可能会发生更改。 这意味着fstab文件中的设置不正确。

每个分区都有一个通用唯一标识符(UUID),我们可以使用它来标识分区。 这将永远不会改变。 如果我们使用UUID来标识fstab文件中的分区,则设置将始终保持准确和真实。

如果您将新分区用作廉价磁盘冗余阵列(RAID)系统的一部分,请查阅该系统的文档。 它可能指定您必须使用块设备标识符而不是UUID。

要查找分区的UUID,我们可以使用blkid打印块设备的属性。 将输出限制为新驱动器上的两个新分区:

要查找分区的UUID,我们可以使用blkid打印块设备的属性。 将输出限制为新驱动器上的两个新分区:

输出包括每个分区的UUID。

PARTUUID是UUID的一种形式,可以与GUID分区表(GPT)分区方法一起使用(如果您不使用主引导记录(MBR)分区方法)。

在编辑器中打开fstab文件。 使用的是gedit,这是大多数Linux发行版中都易于使用的编辑器。

须藤gedit / etc / fstab

随即出现编辑器,其中已加载了fstab文件。

该fstab文件中已经有两个条目。 它们是现有硬盘驱动器/ dev / sda1上的分区以及交换文件系统。 注意不要更改这些条目。

我们需要向fstab文件添加两个新条目。 一个用于SCSI驱动器上的分区,另一个用于SSD驱动器上的分区。 好吧,首先添加SCSI分区。 请注意,以井号#开头的行是注释。

现在,将fstab条目分区添加到SSD驱动器的单独一行中。

保存文件并关闭编辑器。

相关:如何使用gedit在Linux上以图形方式编辑文本文件

我们可以卸载新驱动器,然后在fstab文件上强制刷新。 成功安装新分区将验证我们输入的设置和参数在语法上是否正确。 这意味着我们的fstab文件应在重新引导或加电顺序期间正确处理。

要卸载SCSI驱动器,请使用此命令。 请注意,umount中只有一个n:

须藤umount / dev / sdb1

要卸载SSD驱动器,请使用以下命令:

须藤umount / dev / sdc1

现在,使用lsblk来检查是否已安装这些块设备。

现在,使用lsblk来检查是否已安装这些块设备。

并且我们看到了块设备存在于计算机中,但是没有安装在任何地方。

我们可以使用带有-a(all)选项的mount命令来重新挂载fstab中的所有文件系统。

须藤挂载-a

我们可以再次使用lsblk进行检查,以查看是否已安装新分区:

我们可以再次使用lsblk进行检查,以查看是否已安装新分区:

一切都将安装在应该安装的位置。现在,我们要做的就是更改安装点的所有权,否则root将是唯一可以访问新存储设备的人。

我们可以使用chown轻松地做到这一点。 这是用于SCSI挂载点的命令:

sudo chown dave:用户/ mnt / scsi

这是SSD挂载点的命令:

sudo chown dave:用户/ mnt / ssd

现在,我们知道已经添加的分区将为我们装载,因此我们可以放心地重新启动计算机,并且我们可以访问它们。

所有艰苦的工作都在侦察阶段,这也不难。 一旦收集了所需的信息,就可以轻松编辑fstab文件。 准备就是一切。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。