在Node JS中杀死进程之前检查进程所有者名称

问题描述

是否有任何 Node 库提供获取所有者姓名的选项?这是为了避免在多用户系统的情况下杀死用户的进程。

使用以下代码片段杀死进程。

                    const find = require('find-process');

                    find('name','Teams',true).then(function (list) {
                    var i;
                    for (i = 0; i < list.length; i++) {
                        //logger.info(list[i].pid);
                        process.kill(list[i].pid);

                      }
                    });

是否确保返回当前用户的进程或在杀死它之前需要检查用户名检查?

如何获得流程所有者的姓名? (如Similar to C#

添加时间:2021 年 8 月 3 日。

现在我看到有一些软件包可用,但仅限于某些操作系统版本。 在这种情况下,我正在 Windows 10 中寻找某种方式。

  1. 登录用户和进程的所有者名称和/或 uid
  2. 要杀死的进程的所有者名称和/或 uid(返回进程列表所需详细信息的包)

解决方法

首先,您需要获取系统上正在运行的进程列表。为此,您可以使用此节点包 ps-list

要获取列表,您可以编写以下代码:

const psList = require('ps-list');
(async () => {
    console.log(await psList());
    //=> [{pid: 3213,name: 'node',cmd: 'node test.js',ppid: 1,uid: 501,cpu: 0.1,memory: 1.5},…]
})();

一旦你得到了,你可以从进程列表中获取 uids,然后将它与运行节点进程的当前用户进行匹配。 要获取当前运行节点进程的用户的 uid,可以这样写:

const os=require("os");
const userInfo=os.userInfo();
console.log(userInfo.uid);

一旦您获得了将 uid 与当前用户匹配的进程,您就可以使用此 code 终止这些进程。