openwrt - 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_2
时process_3
会在关闭之前关闭process_1
。
有没有办法在不将 init.d 脚本拆分为 2 个单独的脚本的情况下强制/实现这一点?
我知道我可能能够覆盖 stop_service - 但如果我killall
手动将这些进程,它们可能会重生。我还需要确保默认的 stop_service() 函数是否进行了一些隐藏的资源管理——即使我覆盖了 stop_service() 函数,也会这样做。
解决方案
推荐阅读
- vimeo - 如何在 Vimeo 全屏视频上覆盖文本(动态水印)?
- angular - 找不到模块:错误:无法在 Angular 6 中解析“./package”
- node.js - 导入模块的问题
- javascript - 如何在 addHTML 中添加顶部和底部边距
- java - 在部署到 tomcat 服务器的 Spring web app 中,catalina.properties 文件被 spring 自动加载和检测。如何?
- python - Python 2.7 Dict 正在覆盖自身
- sql - 更新 SQL Server 存储过程 - 在参数中切换列
- c++ - Epsilon Greedy 在少量武器上的表现优于 UCB
- html - 屏幕阅读器应读取 aria-label 并忽略带有 for 属性的标签
- arduino - Arduino 加速度计 mpu6050,无原始数据