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

标签 linux scripting init.d runlevel

我正在编写一个 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/

相关文章:

linux - 从以 root 身份运行的 bash 脚本向用户添加 ssh key

bash - 为什么管道使折叠函数无法保持其新定义?

linux - httpd 的 pid 文件只包含一个 ID,即使它产生了许多

python - 在 ubuntu 中启动时自动运行图形化 python 脚本

c - 获取与 execle 一起使用的 shell 环境

linux - Bash 脚本 : perform actions based on file contents

linux - 解压子目录到一个目录

php - 构建 hiphop 时自定义 libevent 包出现问题

bash - 如何检查传递给 shell 脚本的参数是否不是整数?

linux - Linux 脚本中的多选菜单