说我有一个名为" fizzbuzz"的应用程序。我用pm2 start index.js --name="fizzbuzz" --watch
开始。出于自动化目的,我想获得应用的ID。我想我可以贪图它,但它看起来像是PM2开箱即用的东西。我无法在文档中找到它。例如,我想这样做:
$ pm2 id --name="fizzbuzz"
3
我是否必须在bash中使用grep和字符串操作才能完成此操作?
答案 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正在将其添加为即将发布的版本中的一项功能。