当我在Amazon EC2机器上使用forever命令作为cronjob运行nodejs进程时,出现forever: command not found错误:我使用以下代码的bash脚本:
cd到/nodejs文件的位置
forever start file.js
但是,我可以使用bash script.sh运行此文件,但是当我通过cronjob运行它时,会出现forever:command not found错误。
我很困惑,不知道可能的原因。
有人遇到过这个问题吗?
提前致谢
当我在Amazon EC2机器上使用forever命令作为cronjob运行nodejs进程时,出现forever: command not found错误:我使用以下代码的bash脚本:
cd到/nodejs文件的位置
forever start file.js
但是,我可以使用bash script.sh运行此文件,但是当我通过cronjob运行它时,会出现forever:command not found错误。
我很困惑,不知道可能的原因。
有人遇到过这个问题吗?
提前致谢
npm install forever -g
-g
是用于全局安装。sudo ln -s /usr/local/lib/node_modules/forever/bin/forever /usr/bin/forever
可以创建一个符号链接,使你能够运行 sudo forever ...
。该命令的作用是将 forever
命令添加到系统的可执行路径中,从而可以在任何位置运行该命令,而不必指定完整的路径。 - Sators如果 azero0 的解决方案对您不起作用,且您正在运行 Linux,请尝试
sudo npm install forever -g
如果您已经尝试过:
sudo npm install forever -g
出现 forever:command not found
错误,需要注意输出中的第一行。此行应该类似于:
/<node_bin_path>/forever -> /lib/node_modules/forever/bin/forever
其中node_bin_path
是可执行文件所在的位置。这很可能不是您期望的位置。
这可能是因为您路径中的 node
是一个符号链接。在这种情况下,forever
将被安装在实际的node
安装位置而不是符号链接的位置。
sudo npm config set prefix '~/.npm-global'
,我认为这是导致问题的原因。 - Vahid似乎在全局中找不到,使用以下命令解决
npm i forever -g
sudo npm install forever --global
这个方法在Ubuntu 16.04服务器和Node.js v7.5.0上对我有效。
yarn
并使用 yarn
安装了 forever
。相反,可以回退到 npm
(仅针对 forever
):
sudo npm install forever -g
(g
== 全局安装)*/1 * * * * sh /root/yourscriptdirectory/checklive.sh >> /root/yourscriptdirectory/cron.log 2>&1
checklive.sh
chmod +x ./checklive.sh
cd /root/yourscriptdirectory/
ps xa | grep -F "/usr/local/bin/node /root/yourscriptdirectory/script.js" | grep -Fv "grep" > /dev/null
if [ $? -eq 0 ]; then
echo ""
else
echo "script.js not running. Restart"
/usr/local/bin/node /usr/local/lib/node_modules/forever/bin/forever stop script.js
/usr/local/bin/node /usr/local/lib/node_modules/forever/bin/forever start script.js
echo "STOP : script.js Process is stoped restarting..." | mail -s "STOP : script.js Process is stoped restarting..." "<yourmail@gmail.com>" &
fi