• 自己动手添加一个OpenWrt开机启动脚本


    在openwrt系统内init进程被procd取代,procd作为父进程可以监控子进程的状态。一旦子进程退出后即可在某一个时刻尝试进行重启进程。在op系统内使用procd监控的有uhttpd,netifd等。在/etc/init.d/文件夹内带有USE_PROCD=1标志,下面就介绍如何让procd启动某一个应用程序 我的应用程序名是binloader, 直接上脚本代码

    #!/bin/sh /etc/rc.common
    # Copyright (C) 2008 OpenWrt.org
    
    START=98
    #执行的顺序,按照字符串顺序排序并不是数字排序
    
    USE_PROCD=1
    #使用procd启动
    
    BINLOADER_BIN="/usr/bin/binloader"
    
    start_service() {
        procd_open_instance
        #创建一个实例, 在procd看来一个应用程序可以多个实例
        #ubus call service list 可以查看实例
        procd_set_param respawn
        #定义respawn参数,告知procd当binloader程序退出后尝试进行重启
        procd_set_param command "$BINLOADER_BIN"
        # binloader执行的命令是"/usr/bin/binloader", 若后面有参数可以直接在后面加上
    
        procd_close_instance
    #关闭实例
    }
    #start_service 函数必须要重新定义
    
    stop_service() {
        rm -f /var/run/binloader.pid
    }
    #stop_service重新定义,退出服务器后需要做的操作
    
    restart() {
        stop
        start
    }

    必须指出来的是,被procd执行的程序不能是daemon后台程序,因为后台程序的主进程退出后在procd看来就是程序退出了,然后会进入respawn流程,之后重复启动和退出。

    最后失效了

    procd: Instance binloader::instance1 s in a crash loop 6 crashes, 0 seconds since last crash
    

      


    ————————————————
    原文链接:https://blog.csdn.net/liangdsing/java/article/details/53906445

  • 相关阅读:
    RocketMQ Message hasn't been sent. Caused by No route info of this topic, test-topic
    Barrier
    WPF之资源
    WPF之命令
    WPF之事件
    WPF之属性
    多路Binding
    Binding的数据转换
    Binding的数据校验
    为Binding指定源的方法
  • 原文地址:https://www.cnblogs.com/liuyufei/p/12699708.html
Copyright © 2020-2023  润新知