我正在
使用forever命令作为cronjob(在amazon ec2机器中)运行nodejs进程时,永远:命令未找到错误: 我正在使用的bash脚本具有以下代码:
cd到/ location / of / the / nodejs / file
永远启动file.js
但我可以使用bash script.sh运行此文件,但是当我通过cronjob运行时,我得到了forever:command not found错误
我很困惑,不知道这可能是什么原因。
还有其他人遇到过这个问题吗?
提前致谢
答案 0 :(得分:42)
嘿面临同样的问题
使用了npm install forever -g
,问题解决了......也许这也会帮助你
答案 1 :(得分:9)
对于遇到此问题的其他用户:
你必须添加forever模块的路径,然后将脚本作为cronjob运行。
在linux中,路径通常是:
/ usr / local / lib / node_modules / forever / bin / forever start file.js
在您的脚本中使用此命令,错误永远:找不到命令不会打扰您。
我知道必须有一些其他奇特的方法来做到这一点,但我很高兴这个黑客
答案 2 :(得分:8)
如果azero0的解决方案对您不起作用并且您正在运行Linux,请尝试
sudo npm install forever -g
答案 3 :(得分:3)
如果您已经尝试过:
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
的实际安装位置,而不是符号链接的位置。
答案 4 :(得分:0)
sudo npm install forever --global
这对我在ubuntu 16.04服务器和nodejs v7.5.0
上工作答案 5 :(得分:0)
似乎永远不会在全球范围内找到,请使用以下命令来解决
npm i forever -g
答案 6 :(得分:0)
bash脚本下面的代码检查您的脚本是否正在运行。如果未运行“停止,启动和通知邮件”。
Crontab
*/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