在 mediatek 7688 上守护 nodejs 应用程序
Daemonize nodejs app on mediatek 7688
我正在使用 Mediatek 7688 开发板 运行 OpenWRT linux 创建物联网设备。我已经用 NodeJS 编写了该应用程序,并希望它在电路板启动时随时执行。
我已经尝试了 [此处] () 给出的解决方案,虽然这可行,但开发板似乎无法完成启动过程(NodeJS 应用程序不退出)。我也尝试过 pm2 npm 模块,但 运行 在安装过程中遇到磁盘空间问题。
有没有办法减少 pm2 模块的 "installed" 大小?或者也许是一种在启动时启动 NodeJS 脚本而不使用模块的方法。
提前致谢!
所以我只使用 pm2 模块来确保:
- 程序在启动时启动
- 程序已重新启动以防崩溃
为了完成第一部分,因为我的程序是一个 node.js 程序,我通过在文件的第一行添加 #!/bin/sh env node
将它变成一个可执行文件。必须确保该行以 LF 行结尾而不是像 windows 系统那样的 CRLF。完成后,我通过调用 chmod a+x myfile.js
.
授予了对 .js 文件的执行权限
然后我在 /etc/init.d 文件夹中创建了一个初始化脚本并启用了该脚本 - 如
所述
现在为了确保进程在崩溃时自动重启,我像这样创建了 "cron script",并将其保存在根文件夹中的 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 每分钟执行一次,以确保进程是 运行。
我正在使用 Mediatek 7688 开发板 运行 OpenWRT linux 创建物联网设备。我已经用 NodeJS 编写了该应用程序,并希望它在电路板启动时随时执行。
我已经尝试了 [此处] (
有没有办法减少 pm2 模块的 "installed" 大小?或者也许是一种在启动时启动 NodeJS 脚本而不使用模块的方法。
提前致谢!
所以我只使用 pm2 模块来确保:
- 程序在启动时启动
- 程序已重新启动以防崩溃
为了完成第一部分,因为我的程序是一个 node.js 程序,我通过在文件的第一行添加 #!/bin/sh env node
将它变成一个可执行文件。必须确保该行以 LF 行结尾而不是像 windows 系统那样的 CRLF。完成后,我通过调用 chmod a+x myfile.js
.
然后我在 /etc/init.d 文件夹中创建了一个初始化脚本并启用了该脚本 - 如
现在为了确保进程在崩溃时自动重启,我像这样创建了 "cron script",并将其保存在根文件夹中的 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 每分钟执行一次,以确保进程是 运行。