我需要找出在 CentOS 7 上启动时运行 fsck 的脚本类型是什么?我知道所有场景都位于 /etc/rc.d 目录中。但我不知道这个脚本位于哪里。
答案1
我知道所有场景都位于
/etc/rc.d
目录中。
你所知道的都是错误的。
欢迎使用 CentOS 7。世界已经改变。特别是,您的 Red Hat Enterprise Linux 7 基础已经改变。您正在使用 systemd Linux 操作系统。许多关于 Linux 的普遍看法并不适用于此类系统。
fsck
是根本不由任何脚本运行在 systemd Linux 操作系统上。
systemd 的本机格式是单元,其中可以是服务单位或一个安装单元。 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 稍后重新加载其配置时都会再次运行。
这个程序是一个发电机,一种辅助实用程序,其工作是在 tmpfs 中动态创建单元文件,其中包含这九个目录中的另外三个目录(仅由生成器使用)。 systemd-fstab-generator
生成.mount
安装卷的单元。这些依次参考.service
运行的单位fsck
。
这些fsck
服务单元本身并不作为文件系统中的文件存在(甚至不在 tmpfs 中),也不是生成器的产品。他们是实例化由 systemd 来自模板服务单元文件,名为[email protected]
,使用设备名称作为服务单元实例名称。实例化是由于生成单元的Requires=
和After=
引用而发生的。systemd-fsck@device.service
.mount
这个实例化的模板是一个运行名为 的程序的服务systemd-fsck
,该程序建立一个客户端-服务器连接以显示进度信息,然后依次运行fsck
。 systemd-fsck
是编译的 C 程序,而不是解释的脚本。
进一步阅读
- “新功能:系统和服务”。 红帽企业 Linux 7 发行说明。红帽。
- 斯蒂芬·韦德利 (2014)。 “8. 使用 systemd 管理服务” 红帽企业 Linux 7 系统管理员指南。红帽。
- systemd-fstab-生成器。 systemd 手册页。 Freedesktop.org。
- [电子邮件受保护]。 systemd 手册页。 Freedesktop.org。
- 挂载系统。 systemd 手册页。 Freedesktop.org。
- https://unix.stackexchange.com/a/204075/5132
- https://unix.stackexchange.com/a/196014/5132
答案2
如果 CentOS 7 仍然使用 SysV 设置,下面/etc/rc.d
是所有脚本,快速grep
应该显示它的调用位置。脚本本身在目录中链接(在它们的名称下,前面有优先级)/etc/rc/X
,理清这并不是太难。理解脚本完全是另一回事......
如果它已经在使用systemd
(例如这里概述)配置文件位于/lib/systemd
,具体配置位于/etc/systemd
。再次,抓住信任grep(1)
并深入挖掘。