我正在编写一个 init.d 脚本,如果它在系统启动时执行,它应该运行带有特定选项的命令。如果用户手动执行脚本,则同一脚本应运行带有其他选项的命令。
例如,在一个网络脚本中,如果它在系统启动时运行,那么某些网络接口(interface)将不会被启动,这取决于它们是否应该被配置为 ONBOOT。否则,如果用户手动运行网络脚本(服务网络启动),则将启动所有网络接口(interface)。
实现此目的的一种方法是从父 rc 脚本创建一个名为“/tmp/.boot”的文件,该文件在所有启动脚本执行后被删除。然后在初始化脚本中检查文件/tmp/.boot 是否存在,以确定该脚本是否作为启动序列的一部分运行。
我想知道是否有任何现有的方法可以知道系统处于启动顺序。/proc/或其他地方的某些内容是否可以告诉我系统处于启动顺序?
期待您的建议。
感谢和问候 ~萨米尔
最佳答案
首先,对于许多脚本来说,/proc 中的状态应该没有太大的不同。运行级别指示您是否处于早期启动阶段(runlevel
提供访问权限),但在启动中期,启动运行级别 S 仍然存在。
然而,这并不是一件坏事,尝试编写根据运行级别修改行为的脚本是邪恶的。不可调试。您可以尝试使用其他命令行参数,例如“start-all”而不是“start”。或者像 Debian 那样分离 RC 脚本。
关于linux:确定正在运行的 init.d 脚本是否作为系统启动序列的一部分执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894527/