【问题标题】:Running forever for NodeJs from rc.local从 rc.local 为 NodeJs 永远运行
【发布时间】:2018-06-14 19:20:58
【问题描述】:

我希望 NodeJs 服务器在启动时启动,并确保它在永远崩溃时保持运行。

我已经阅读了很多关于如何做到这一点以及与之相关的可能问题的帖子。 问题是我在给定机器上的可用内存有限,所以我不得不“包含”NodeJs。

阅读forever文档发现可以使用命令完成:

forever start -c "node --max_old_space_size=512" myapp.js

以这种方式永远调用传递内存参数的节点服务器,在这种情况下,将堆限制为 512 MB。 所以我为 rc.local 编写了我的 sh 脚本,如下所示:

#!/bin/sh
cd /forever_bin_dir
./forever start -c "node --max_old_space_size=512" /myapp_dir/myapp.js

由于 rc.local 使用有限的环境变量,无法找到“节点”并且脚本失败。

我什至尝试使用 Cron 在其文件中添加以下行:

@reboot /forever_bin_dir/forever start -c "node --max_old_space_size=512" /myapp_dir/myapp.js

但同样的问题仍然存在。

我的问题是:我怎样才能在启动时永远运行,同时传递关于内存的参数?

【问题讨论】:

  • 你试过在没有forever的情况下运行命令吗?
  • 说实话不,因为我需要永远。我尝试了在启动时启动 Node.Js 的脚本,但没有内存限制,它可以工作。
  • 尝试使用内存限制手动运行节点
  • 它在内存限制下手动工作。我没有在 rc.local 中尝试过。
  • 警告如果您的命令连续运行(可能运行无限循环)或可能不会退出,您必须确保通过在命令末尾添加一个&符号来分叉进程raspberrypi.org/documentation/linux/usage/rc-local.md

标签: node.js embedded-linux forever


【解决方案1】:

我发现 this 用于相同目的的初始化脚本永远启动 Node 脚本。

【讨论】:

    【解决方案2】:

    我发现的最好方法就是在脚本中设置 PATH。

    我在主文件夹中创建了一个名为 launchforever.sh 的 sh 脚本 我使用#printenv 命令获取了环境变量。

    launchforever 脚本是这样的:

    #!/bin/sh
    export PATH=<copied from printenv>:$PATH
    forever start -c "node --max_old_space_size=30" > /dev/null
    

    保存后我给了它权限:

    #chmod 700 /home/<user>/launchforever.sh
    

    然后我将它添加到 Cron 中:

    #crontab -u <user> -e
    

    我在其文件中添加了:

    @reboot /home/<user>/launchforever.sh
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多