bash:pm2:找不到命令

时间:2016-11-25 07:12:59

标签: bash npm ubuntu-14.04 pm2

我无法在ubuntu框上运行pm2。 我不确定问题是什么。 pm2全局安装。

npm list -g --depth=0
/opt/nodejs/lib
├── forever@0.15.3
├── node-gyp@3.4.0
├── npm@2.15.9
├── pm2@2.1.5
├── userdown@0.2.1
└── wait-for-mongo@0.2.0

但我还是得到了

pm2
-bash: pm2: command not found

如果我运行其他应用

userdown
Starting Script is not provided

版本

node v4.5.0
npm  v2.15.9

安装日志:

sudo npm install pm2 -g
npm WARN optional dep failed, continuing fsevents@1.0.15
/opt/nodejs/bin/pm2 -> /opt/nodejs/lib/node_modules/pm2/bin/pm2
/opt/nodejs/bin/rundev -> /opt/nodejs/lib/node_modules/pm2/bin/rundev
/opt/nodejs/bin/pm2-dev -> /opt/nodejs/lib/node_modules/pm2/bin/pm2-dev
/opt/nodejs/bin/pm2-docker -> /opt/nodejs/lib/node_modules/pm2/bin/pm2-docker
pm2@2.1.5 /opt/nodejs/lib/node_modules/pm2
├── gkt@1.0.0
├── eventemitter2@1.0.5
├── semver@5.3.0
├── async@1.5.2
├── fclone@1.0.10
├── pidusage@1.1.0
├── vizion@0.2.13
├── commander@2.9.0 (graceful-readlink@1.0.1)
├── debug@2.3.0 (ms@0.7.2)
├── pm2-axon-rpc@0.4.5 (fclone@1.0.8)
├── pm2-deploy@0.3.3 (tv4@1.2.7)
├── pm2-multimeter@0.1.2 (charm@0.1.2)
├── chalk@1.1.3 (escape-string-regexp@1.0.5, ansi-styles@2.2.1, supports-color@2.0.0, strip-ansi@3.0.1, has-ansi@2.0.0)
├── cli-table@0.3.1 (colors@1.0.3)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── source-map-support@0.4.6 (source-map@0.5.6)
├── nssocket@0.6.0 (eventemitter2@0.4.14, lazy@1.0.11)
├── pmx@0.6.8 (json-stringify-safe@5.0.1)
├── pm2-axon@3.0.2 (amp-message@0.1.2, escape-regexp@0.0.1, amp@0.3.1, debug@2.2.0)
├── cron@1.1.1 (moment-timezone@0.5.9)
├── yamljs@0.2.8 (glob@7.1.1, argparse@1.0.9)
├── chokidar@1.6.1 (path-is-absolute@1.0.1, async-each@1.0.1, inherits@2.0.3, glob-parent@2.0.0, is-glob@2.0.1, is-binary-path@1.0.1, readdirp@2.1.0, anymatch@1.3.0)
├── shelljs@0.7.5 (interpret@1.0.1, glob@7.1.1, rechoir@0.6.2)
└── moment@2.17.0
kamil@vps2:~$ pm2
-bash: pm2: command not found

ubuntu版本:

uname -a
Linux vps2 2.6.32-042stab111.11 #1 SMP Tue Sep 1 18:19:12 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux

4 个答案:

答案 0 :(得分:6)

好的,我自己回答了。 我检查

会发生什么
whereis pm2
pm2: /opt/nodejs/bin/pm2
然后我检查了

whereis userdown
userdown: /usr/bin/userdown /usr/bin/X11/userdown /opt/nodejs/bin/userdown

hmm in / usr / bin .... 所以我做了

sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2 

它有效:)

答案 1 :(得分:0)

问题是您将NPM作为sudo运行,因此您只能使用以下命令访问它:

<div id="owl" class="owl-carousel">
   <%  @artists.each do |artist| %>
       <div class="artist-card ">
          <%= link_to artist, class: "poster" do %>
            <%= image_tag artist.image.url(:thumb) %>
          <% end %>
          <div class="artist-info ell glassy-bg padmy padlx">
            <div class="artist-card ">
              <h6><%= artist.name %> <span>(<%= artist.instrument %>)</span></h6>
            </div>            
          </div>
        </div>
    <% end %>
</div>  

不使用sudo安装,您甚至可以在没有sudo pm2 start server.js 标志的情况下安装,并直接从-g目录中调用它。如果您在正在使用的计算机上没有root(admin)权限,这可能很有用。

node_modules

答案 2 :(得分:0)

遵循正确的nodejs isntallation,npm权限修正和npm全局包调整:

@ https://gist.github.com/servercharlie/9a7e0d0e1645b4c6fbfe5de566fcf1ca

您的脚本需要做一些需要root权限的事情吗? (即:您在使用端口80时遇到错误)

[错误] - 尝试运行w / sudo

[正确] - 以root身份登录“sudo su”然后执行pm2启动app.js --name“what”--watch

这样做,不需要配置任何bashrc或配置文件。

额外:担心你的应用程序疯狂屎? (即,因为它以root身份执行,脚本可以使用nodejs的exec并做一些疯狂的事情。)

因此。执行此操作:首先使用脚本执行root-stuff,然后在超时后降低权限:

//我首先使用端口80 ..此时脚本的uid是ROOT。

app.listen(80);

// 2秒后我们切换到uid AZUREUSER,显然不再是root了。

的setTimeout(函数(){

process.setuid( “azureuser”);

},2000);

答案 3 :(得分:0)

在我的场景中,我编写了一个由jenkins build和

触发的shell脚本。

我使用以下链接修复了

https://github.com/Unitech/pm2-deploy/issues/41

相关问题