Fsck 脚本位置

fus*_*ser 4 linux

我需要找出在 CentOS 7 启动期间运行 fsck 的脚本类型是什么?我知道所有场景都位于 /etc/rc.d 目录中。但我不知道这个脚本在哪里。

Jde*_*eBP 16

我知道所有场景都位于/etc/rc.d目录中。

你所知道的是错误的。

欢迎使用 CentOS 7。世界已经改变。特别是,您的 Red Hat Enterprise Linux 7 基础发生了变化。您使用的是 systemd Linux 操作系统。许多有关 Linux 的公认智慧对于此类系统来说并不正确。

fsck没有任何脚本运行在所有的systemd Linux的操作系统。

systemd 的原生格式是unit,它可以是service unitmount unit。systemd 的服务管理仅根据那些从(系统范围内的).service.mount文件可以存在的九个目录之一读取的那些来运行。 /etc/systemd/system/run/systemd/system/usr/local/lib/systemd/system/usr/lib/systemd/system是其中四个目录。

您的/etc/fstab数据库由名为systemd-fstab-generator. 该程序在/usr/lib/systemd/system-generators/目录中列出,因此在每次引导时在引导过程的早期由 systemd 自动运行,并且在每次 systemd 被指示稍后重新加载其配置时都会再次运行。

该程序是一个generator,一种辅助实用程序,其工作是在 tmpfs 中动态创建单元文件,其中 9 个目录中的另外三个(仅供生成器使用)所在的目录。 systemd-fstab-generator生成.mount安装卷的单元。这些依次参考.service运行fsck.

这些fsck服务单元本身并不作为文件系统中的文件存在(甚至不在 tmpfs 中),也不是生成器的产品。它们由 systemd 从名为 的模板服务单元文件实例化,使用设备名称作为服务单元实例名称。实例化的发生是因为来自生成单元的和引用。systemd-fsck@.serviceRequires=After=systemd-fsck@device.service.mount

这个实例化的模板是一个服务,它运行一个名为 的程序systemd-fsck,它建立一个客户端-服务器连接来显示进度信息,然后依次运行fscksystemd-fsck是编译后的 C 程序,而不是解释性脚本。

进一步阅读