rc、rc.local 和 rc.sysinit 之间有什么区别?

rc、rc.local 和 rc.sysinit 之间有什么区别?

我尝试在启动时显示当前运行级别的启动脚本列表。我写了下面的代码。

rl=`runlevel | cut -d " " -f2`
ls /etc/rc.d/rc$rl.d/S* | cut -d "/" -f5
sleep 10

rc.local如果我将此代码放入文件中,它就可以工作。

rc但是,如果我将其放入文件中或单独的脚本文件abc/etc/init.d并通过在运行级别目录中创​​建软链接,则它不起作用。

但是像下面这样的简单命令可以在所有方法中运行。

ls /etc/init.d

除非某些脚本已启动,否则某些命令(例如运行级别或管道)是否无法工作?或者还有别的什么吗?

如果我将代码放入rc文件中,我的代码将在重新启动之前和之后运行。

  • rc那么,rc.localrc.sysinit文件之间有什么区别呢?
  • 我到底需要在哪里编辑这些文件?

我还可以在 2、3、4 和 5 运行级别中找到S99local-> 软链接。rc.local

这是否意味着rc.local不能在运行级别 1 上运行?

答案1

  • rc Linux 发行版通常不使用,但用于 BSD
  • rc.local用于能够在启动期间执行附加命令,而无需添加符号链接。
  • rc.sysinit似乎是红帽具体并在流程的早期执行。它作为第一个脚本之一执行,而rc.local稍后执行。

我还可以在 2、3、4 和 5 运行级别找到 rc.local 的 S99local -> 软链接。这是否意味着 rc.local 不会在运行级别 1 上运行?

正确,这意味着作为符号链接的 S99local将是输入运行级别、和时/etc/rc.local最后执行的脚本之一。它不会像运行级别一样被执行234511单用户运行级别,通常用于救援/维护工作。

答案2

rc.sysinit是 init 进程执行的第一个脚本。该脚本用于初始化系统,其中包括以下内容:

  • 加载内核模块
  • 设置主机名
  • 从 sysctl.conf 配置内核参数
  • 初始化串口、RAID、LVM
  • 检查并挂载文件系统(/proc、/sys 以及 /etc/fstab 中的其他文件系统)。这是当它使用 /etc/fstab 中指定的选项重新挂载根文件系统时(请记住,在 init 进程启动之前,根文件系统被内核以只读方式挂载在 /sysroot 处)

执行后,将执行运行级别脚本(如果默认运行级别为3,则rc.sysinit执行里面的脚本)。/etc/rc.d/rc3.d/

运行级别脚本执行完成后,/etc/rc.d/rc.local脚本将执行,如果您不想执行整个 SysV 脚本的内容(涉及创建符号链接并以特定格式命名脚本),则可以在该文件中放置额外的启动内容, ETC。

相关内容