首页 > 解决方案 > init.d - 如何强制在同一个 init.d 脚本中停止进程的顺序

问题描述

我有一个启动 3 个进程的 init.d 脚本:

start_service() {
        echo "start process_1"
        procd_open_instance "process_1"
        procd_set_param respawn
        procd_set_param command /opt/myApp/bin/process_1
        procd_set_param env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/myApp/lib
        procd_close_instance

        echo "start process_2"
        procd_open_instance "process_2"
        procd_set_param respawn
        procd_set_param command /opt/myApp/bin/process_2
        procd_set_param env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/myApp/lib
        procd_close_instance

        echo "start process_3"
        procd_open_instance "process_3"
        procd_set_param respawn
        procd_set_param command /opt/myApp/bin/process_3
        procd_set_param env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/myApp/lib
        procd_close_instance
}

但是 process_2 和 process_3 依赖于 process_1 提供的服务。

我希望能够确保当我调用/etc/init.d/myApp stop进程process_2process_3会在关闭之前关闭process_1

有没有办法在不将 init.d 脚本拆分为 2 个单独的脚本的情况下强制/实现这一点?

我知道我可能能够覆盖 stop_service - 但如果我killall手动将这些进程,它们可能会重生。我还需要确保默认的 stop_service() 函数是否进行了一些隐藏的资源管理——即使我覆盖了 stop_service() 函数,也会这样做。

标签: openwrtinit.d

解决方案


推荐阅读