2016-11-25 145 views
1

我無法在ubuntu盒子上運行pm2。 我不確定是什麼問題。 pm2全球安裝。bash:pm2:命令未找到

npm list -g --depth=0 
/opt/nodejs/lib 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
└── [email protected] 

但我仍然得到

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 [email protected] 
/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 
[email protected] /opt/nodejs/lib/node_modules/pm2 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected]) 
├── [email protected] ([email protected], [email protected], inherit[email protected], [email protected], [email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected], [email protected], [email protected]) 
└── [email protected] 
[email protected]:~$ 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 
+0

這個問題與'bash'有什麼關係? – Jdamian

回答

5

好了回答自己。 我檢查

whereis pm2 
pm2: /opt/nodejs/bin/pm2 

然後我檢查

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

嗯在/ usr/bin中會發生什麼.... 所以我做

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

和工程:)

+0

感謝和好的一個。 –

+0

儘管我沒有找到userdown,但仍然sudo ln -s/opt/nodejs/bin/pm2/usr/bin/pm2工作謝謝:) –

0

問題是你正在運行NPM作爲sudo,所以你只能夠訪問它使用:

sudo pm2 start server.js 

安裝沒有sudo,你甚至可以安裝未經-g標誌,並直接從node_modules目錄調用它。如果您在正在使用的計算機上沒有root(管理員)權限,這可能很有用。

npm install pm2 
./node_modules/.bin/pm2 start server.js 
0

按照正確的NodeJS isntallation,NPM許可修復和NPM全球套餐的調整:

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

腳本需要做到這一點,需要root權限的一些事情嗎? (即:你在使用80端口收到一個錯誤)

[錯] - 試圖運行W /須藤

[正確] - 以root身份登錄 「命令蘇」,然後就開始PM2 app.js - 名稱「無論」 - 觀看

這樣做,不需要配置任何bashrc或配置文件。

額外:擔心你的應用程序做瘋了嗎? (即,因爲它是以root身份執行的,腳本可以使用nodejs的exec並做一些瘋狂的事情。)

因此。這樣做:首先用你的腳本做root-stuff,然後在一段時間後降低你的權限:

//我先用端口80 ..此時腳本的uid是ROOT。

app.listen(80);

// 2秒後我們切換到uid AZUREUSER,這顯然不再是root了。

的setTimeout(函數(){

process.setuid( 「azureuser」);

},2000);