如何获得PM2的app id?

时间:2016-01-16 16:53:14

标签: bash pm2

说我有一个名为" fizzbuzz"的应用程序。我用pm2 start index.js --name="fizzbuzz" --watch开始。出于自动化目的,我想获得应用的ID。我想我可以贪图它,但它看起来像是PM2开箱即用的东西。我无法在文档中找到它。例如,我想这样做:

$ pm2 id --name="fizzbuzz"
3

我是否必须在bash中使用grep和字符串操作才能完成此操作?

3 个答案:

答案 0 :(得分:1)

看看这个link

process.env.pm_id 就是答案。我测试过了,没问题。

答案 1 :(得分:0)

由于您可能无法将shell行添加到pm2,因此您无法使用提供当前流程的$$变量' ID。还有另一种方法,不使用ps,grep等人。

只要你的命令是pm2 start index.js --name="fizzbuzz" --watch,你就可以这样做:

pm2 start index.js --name="fizzbuzz" --watch &
fizz_pid=$!

&符号在后台运行pm2。 fizz_pid=$!将最后放入后台的程序的进程ID写入fizz_pid变量。 (警告:在pm2命令结束后添加管道|可能会破坏它。)

答案 2 :(得分:0)

我用node和grep解决了这个问题。当我启动应用程序时,我正在使用package.json中的应用程序名称。如果我在应用程序的根目录中,我可以从package.json获取它:

packageName=`node -e "console.log((require('./package.json')).name)"`

我使用pm2的迷你列表功能,输出:

+--- alpha-beta-gamma 
pid : 4327
pm2 id : 2
status : online 

然后我可以说:

pm2 -m ls | grep "\-\- $packageName" -A 3 | grep "pm2 id" | grep -oP '\d+$'

返回:

2 

PM2正在将其添加为即将发布的版本中的一项功能。