javascript - Nodejs - Umweltvariablen des laufenden Prozesses abrufen
Ich schreibe eine Erweiterung für VSCode und ich muss die Umgebungsvariablen eines Prozesses abrufen, der bereits läuft. Aber ich konnte keinen Weg finden, dies zu tun.
Ich weiß, wie man es in Python mit psutil macht:
for proc in psutil.process_iter(attrs=['name', 'exe']):
if proc.info['name'].lower() == 'SomeProcess.exe'.lower():
return proc.environ()
Gibt es etwas Ähnliches für JavaScript/Node.js?
Antwort #1
Sie können das Modul child_process verwenden, um ein Terminal zu starten und die folgenden Befehle in Bezug auf die Plattform auszuführen und die Variablen zu erhalten, zu parsen und zu verwenden oder ein natives Node-Modul zu schreiben, um auf die entsprechenden APIs jeder Plattform zuzugreifen und die Ausgabe zu erhalten.
Windows (Verwendung von PowerShell, 2019 ist die PID)
(Get-Process -id 2019).StartInfo.EnvironmentVariables
Linux
tr '\0' '\n' < /proc/2019/environ
Mac
ps eww -o command 2019 | tr ' ' '\n'
Dank https://serverfault.com/a/66366 & https://stackoverflow.com/a/28193753/12167785 & https://apple.stackexchange.com/a/254253 & https://stackoverflow.com/a/11547409/12167785 & https://stackoverflow.com/a/18765553/12167785
Antwort #2
Einfachere Methode (von hier aus können Sie etwas wie shelljs verwenden und dann ausführen:
ps faux | grep 'PROCESS_NAME'
Dann extrahiere die Prozess-ID (ich arbeite gerade an einem Regex) und mache dann:
cat /proc/THE_PROCESS/environ | tr '\0' '\n'
Sie erhalten die Umgebungsvariablen als Zeichenkette, so etwas wie:
THEVAR=1
ANOTHERVAR=2
Ich nehme an, du hast den String einfach mit '\n' geteilt, aber ich überprüfe es!
Ich werde dies aktualisieren, sobald ich den Regex herausgefunden habe. **Bist du auf Linux/Mac oder Windows?
AKTUALISIERUNG: Überprüfen Sie https://github.com/shelljs/shx für plattformübergreifend
