在联发科7688上进行Daemonize nodejs app

时间:2017-09-19 12:50:18

标签: node.js linux openwrt

我正在使用运行OpenWRT linux的Mediatek 7688板来创建物联网设备。我已经在NodeJS中编写了应用程序,并希望它可以在主板启动时执行。

我已经尝试了[here](Prateek Kr Dubey)给出的解决方案,但这可行,但是电路板似乎无法完成启动过程(NodeJS应用程序不会退出)。我也尝试了pm2 npm模块,但在安装过程中遇到了磁盘空间问题。

有没有办法减少pm2模块的“已安装”尺寸?或者也许是一种在启动时启动NodeJS脚本而不使用模块的方法。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以我只使用pm2模块来确保:

  1. 程序在启动时启动
  2. 程序重新启动,以防它崩溃
  3. 要完成第一部分,并且由于我的程序是node.js程序,我通过添加#!/bin/sh env node作为文件的第一行将其变为可执行文件。必须确保该行以LF行结束而不是像Windows系统那样以CRLF结尾。完成后,我通过调用chmod a+x myfile.js为.js文件授予了执行权限。

    然后我在/etc/init.d文件夹中创建了一个init脚本并启用了该脚本 - 正如here所述

    现在为了确保在崩溃的情况下自动重启进程,我是一个" cron脚本",就像这样,并在根文件夹中保存了一个restart.sh:

    #bin/sh
    if pgrep -f myfile.js > dev/null
    then
       #process is already running - do nothing
    else
       /etc/init.d/myprocess start
    fi
    

    最后使用crontab -e设置* * * * * ~/restart.sh,以便每分钟执行restart.sh以确保进程正在运行。