为了账号安全,请及时绑定邮箱和手机立即绑定

Nodejs - 获取正在运行的进程的环境变量

Nodejs - 获取正在运行的进程的环境变量

肥皂起泡泡 2021-11-12 10:56:05
我正在为 vscode 编写扩展,我需要获取已经运行的进程的环境变量。但我找不到办法做到这一点。我知道如何使用 psutil 在 python 中做到这一点:for proc in psutil.process_iter(attrs=['name', 'exe']):    if proc.info['name'].lower() == 'SomeProcess.exe'.lower():        return proc.environ()javascript/nodejs 有类似的东西吗?
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以使用 child_process 模块生成终端并执行以下命令 wrt 平台并获取变量,解析和使用或编写本机节点模块以访问每个平台的适当 API 并获取输出。

Windows(使用 powershell,2019 是 PID)

(Get-Process -id 2019).StartInfo.EnvironmentVariables

Linux

tr '\0' '\n' < /proc/2019/environ

苹果电脑

ps eww -o command 2019  | tr ' ' '\n'


查看完整回答
反对 回复 2021-11-12
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

结合@SudhakarRS 的回答:


var child = require('child_process').execFile('powershell', [ 

    '(Get-Process SomeProcess).StartInfo.EnvironmentVariables' 

], function(err, stdout, stderr) { 

    console.log(stdout);

}); 

如果你想调试它,确保你偷看err和stderr。


更换SomeProcess用notepad我的作品,但使用notepad.exe没有。


在 powershell 上,您可以使用Get-Process [process name].


因此,例如,如果我有 4 个记事本实例正在运行并且 do Get-Process notepad,我会看到:

//img1.sycdn.imooc.com//618e053200015aed06970103.jpg

您可以获得(Get-Process notepad).Id返回的进程 ID :

//img1.sycdn.imooc.com//618e05400001633a00560066.jpg

您可以使用相同的代码来选择 ID:


var child = require('child_process').execFile(

    'powershell',

    ['(Get-Process notepad).Id'],

    function(err, stdout, stderr) { 

        var ids = stdout.split("\r\n");

        ids.pop(); //remove the blank string at the end

        console.log(ids);

    }

);

^ 返回:

//img1.sycdn.imooc.com//618e054c00010b9402970025.jpg

如果您只想获取带有名称的第一个进程,则为:

(Get-Process notepad)[0].StartInfo.EnvironmentVariables

^ 显然替换notepad为您的进程名称。


查看完整回答
反对 回复 2021-11-12
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

简单的方式(从这里开始,您可以使用shelljs 之类的东西,然后运行:

ps faux | grep 'PROCESS_NAME'

然后提取进程ID(我只是在处理正则表达式)然后执行:

cat /proc/THE_PROCESS/environ | tr '\0' '\n'

您将获得 env vars 作为字符串,如下所示:

THEVAR=1
ANOTHERVAR=2

我想你只是用 '\n' 分割字符串,但我正在检查!

一旦我弄清楚正则表达式,我就会更新它。**你使用的是 linux/mac 还是 windows?

更新:检查https://github.com/shelljs/shx跨平台


查看完整回答
反对 回复 2021-11-12
  • 3 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信