运行 来自 rc.local 的 NodeJs 永远

Running forever for NodeJs from rc.local

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

我已经阅读了很多关于如何操作以及与之相关的可能问题的帖子。 问题是我在给定机器上的可用内存有限,所以我不得不 "contain" NodeJs.

阅读永久文档我发现可以使用以下命令完成:

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 使用有限的环境变量,无法找到 "node" 并且脚本失败。

我什至尝试将 Cron 添加到其文件中:

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

但同样的问题仍然存在。

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

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

我发现的最好方法就是在脚本中设置 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