如何使用 PM2 获取应用程序 ID?
How do I get just the app id with PM2?
假设我有一个名为 "fizzbuzz" 的应用程序。我以 pm2 start index.js --name="fizzbuzz" --watch
开头。出于自动化目的,我只想获取应用程序的 ID。我猜我可以 grep 它,但它似乎是 PM2 开箱即用的东西。我在文档中找不到它。例如,我想这样做:
$ pm2 id --name="fizzbuzz"
3
我是否必须在 bash 中使用 grep 和字符串操作来完成此操作?
由于您可能无法向 pm2 添加 shell 行,因此您无法使用提供当前进程 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 命令结束后添加一个管道 |
可能会破坏它。)
我用 node 和 grep 解决了这个问题。当我启动应用程序时,我使用的是 package.json 中的应用程序名称。如果我在应用程序的根目录中,我可以从 package.json:
packageName=`node -e "console.log((require('./package.json')).name)"`
我使用 pm2 的 mini-list 功能,输出:
+--- alpha-beta-gamma
pid : 4327
pm2 id : 2
status : online
然后我可以grep它:
pm2 -m ls | grep "\-\- $packageName" -A 3 | grep "pm2 id" | grep -oP '\d+$'
哪个returns:
2
PM2 将在即将发布的版本中将其添加为一项功能。
检查此 link。
process.env.pm_id
就是答案。我测试了一下,没问题。
假设我有一个名为 "fizzbuzz" 的应用程序。我以 pm2 start index.js --name="fizzbuzz" --watch
开头。出于自动化目的,我只想获取应用程序的 ID。我猜我可以 grep 它,但它似乎是 PM2 开箱即用的东西。我在文档中找不到它。例如,我想这样做:
$ pm2 id --name="fizzbuzz"
3
我是否必须在 bash 中使用 grep 和字符串操作来完成此操作?
由于您可能无法向 pm2 添加 shell 行,因此您无法使用提供当前进程 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 命令结束后添加一个管道 |
可能会破坏它。)
我用 node 和 grep 解决了这个问题。当我启动应用程序时,我使用的是 package.json 中的应用程序名称。如果我在应用程序的根目录中,我可以从 package.json:
packageName=`node -e "console.log((require('./package.json')).name)"`
我使用 pm2 的 mini-list 功能,输出:
+--- alpha-beta-gamma
pid : 4327
pm2 id : 2
status : online
然后我可以grep它:
pm2 -m ls | grep "\-\- $packageName" -A 3 | grep "pm2 id" | grep -oP '\d+$'
哪个returns:
2
PM2 将在即将发布的版本中将其添加为一项功能。
检查此 link。
process.env.pm_id
就是答案。我测试了一下,没问题。