[英]Node.js PM2: programmatically retrieving all process IDs
我正在嘗試以編程方式獲取集群模式下所有 PM2 進程 ID 的數組。
const pm2 = require("pm2");
let allPids;
async function getPids() {
return await new Promise(resolve => {
pm2.list((err, list) => {
if (err) {
console.error(err);
} else {
resolve(list.map(process => process.pid));
}
});
});
}
getPids().then(pids => {
console.log(pids); // outputs an array of PIDs
allPids = pids;
});
console.log(allPids); // outputs undefined
上面的代碼使用pm2.list()
成功獲取了所有 PID,但我無法在 .then .then()
回調之外訪問它們。
const pm2 = require("pm2")
let pids;
pm2.list((err, list) => {
if (err) {
console.log(err);
} else {
pids = list.map(process => process.pid);
};
});
console.log(pids); // outputs undefined
setTimeout(() => {
console.log(pids); // outputs array of PIDs
}, 1000);
此代碼也有效,但僅在setTimeout()
回調中有效。
PM2文檔沒有任何幫助。
有沒有一種方法可以訪問 PID 而無需將我的所有代碼都放在.then()
/ setTimeout()
回調中? 或者,是否有更好的解決方案?
你的 function 是異步的,那為什么不await
呢?
const pm2 = require("pm2");
let allPids;
async function getPids(): number[] {
let pids = [];
try {
pids = await pm2.list();
} catch (err) {
console.error(err);
}
return list.map(process => process.pid);
}
(async () => {
allPids = await getPids();
console.log(allPids);
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.