linux:确定正在运行的init.d脚本是否作为系统启动序列的一部分执行

时间:2011-08-01 05:33:09

标签: linux scripting init.d runlevel

我正在编写一个init.d脚本,该脚本应该在系统启动时执行某些选项的命令。如果用户手动执行脚本,则相同的脚本应该使用其他选项运行命令。

例如,在网络脚本中,如果它在系统启动时运行,则根据是否应将其配置为ONBOOT,将不会启动某些网络接口。否则,如果用户手动运行网络脚本(服务网络启动),则将启动所有网络接口。

我可以实现此目的的一种方法是从父rc脚本创建一个名为“/tmp/.boot”的文件,该文件在执行所有启动脚本后删除。然后在init脚本中检查文件/tmp/.boot是否存在,以确定脚本是否作为启动序列的一部分运行。

我想知道是否有任何现有的方式知道系统处于启动顺序。 / proc /或其他地方的某些东西能告诉我系统处于启动顺序吗?

期待您的建议。

谢谢和问候 〜萨米尔

1 个答案:

答案 0 :(得分:0)

首先,/ proc中的状态对于许多脚本而言不应该有太大的不同。运行级别指示您是否处于早期启动阶段(runlevel可以访问它),但是在启动中期,启动运行级别S仍然存在。

但是,这并不是一件坏事,并且尝试编写根据运行级别修改行为的脚本是邪恶的。 Undebugable。您可以简单地尝试其他命令行参数,例如“start-all”而不是“start”。或者你像Debian那样分开RC脚本。