【问题标题】:Forever: command not found永远:找不到命令
【发布时间】:2014-06-20 04:06:07
【问题描述】:

我得到了一个

forever: command not found 当我使用 forever 命令作为 cronjob 运行 nodejs 进程时出现错误(在亚马逊 ec2 机器中): 我正在使用的 bash 脚本具有以下代码:

cd 到/location/of/the/nodejs/file

永远启动 file.js

但是我可以使用 bash script.sh 来运行这个文件,但是当我通过 cronjob 运行它时,我得到了永远:command not found 错误

我很困惑不知道这可能是什么原因。

还有其他人遇到过这个问题吗?

提前致谢

【问题讨论】:

  • 您必须更加具体。
  • 你用的是什么语言,详细解释你的问题
  • 我正在使用 javascript
  • 如果您不使用服务器进行验证,任何人都可以破解它。客户端验证是非验证,您必须使用服务器进行验证。
  • 这样做我会入侵你的网站:)

标签: node.js amazon-ec2 forever


【解决方案1】:

对于遇到此问题的其他用户:

您必须添加永久模块的路径,然后将脚本作为 cronjob 运行。

在linux中路径通常是:

/usr/local/lib/node_modules/forever/bin/forever 启动文件.js

只需在您的脚本中使用此命令,错误 forever:command not found 不会打扰您。

我知道必须有其他一些花哨的方法来做到这一点,但我对这个 hack 很满意

【讨论】:

  • 运行 sudo ln -s /usr/local/lib/node_modules/forever/bin/forever /usr/bin/forever 将创建一个 simlink 以允许您运行 sudo forever ...
【解决方案2】:

运行此命令:npm install forever -g

-g 是全局安装。

【讨论】:

  • -g 有什么作用?它以前怎么能从 bash 中运行?
  • -g 用于全局安装。
  • 这肯定解决了我的问题。尽管在全球范围内这样做并不那么干净。我想知道是否有更好的解决方案。
  • 安装后记得重启控制台,如果本地安装了这个模块,最简单的方法是先卸载(否则命令会参考本地版本)
【解决方案3】:

如果 azero0 的解决方案不适合您并且您正在运行 linux,请尝试

sudo npm install forever -g

【讨论】:

    【解决方案4】:
    sudo npm install forever --global
    

    这在 ubuntu 16.04 服务器和 nodejs v7.5.0 上对我有用

    【讨论】:

      【解决方案5】:

      好像永远找不到全局,用下面的命令解决

      npm i forever -g 
      

      【讨论】:

        【解决方案6】:

        如果你已经尝试过:

        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',我认为这是导致问题的原因。
        • 找到了解决方案!使用此链接重置配置:stackoverflow.com/a/20934521/1889607
        【解决方案7】:

        以下 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
        

        【讨论】:

          【解决方案8】:

          您可能最近切换到yarn 并同时安装了foreveryarn。相反,回退到npm(仅适用于forever):

          sudo npm install forever -g

          (g == 全局)

          【讨论】:

            猜你喜欢
            • 2016-01-07
            • 2016-09-07
            • 1970-01-01
            • 2018-05-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-21
            • 1970-01-01
            相关资源
            最近更新 更多