我尝试在启动时显示当前运行级别的启动脚本列表。我写了下面的代码。
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.local
和rc.sysinit
文件之间有什么区别呢?- 我到底需要在哪里编辑这些文件?
我还可以在 2、3、4 和 5 运行级别中找到S99local
-> 软链接。rc.local
这是否意味着rc.local
不能在运行级别 1 上运行?
答案1
答案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。