javascript - Nodejs - Hämta miljövariabler för körande process


Jag skriver ett tillägg för VSCode, och jag behöver få miljövariablerna för en process som redan körs. Men jag kunde inte hitta ett sätt att göra det.

Jag vet hur man gör det i python med hjälp av psutil:

for proc in psutil.process_iter(attrs=['name', 'exe']):
    if proc.info['name'].lower() == 'SomeProcess.exe'.lower():
        return proc.environ()

Finns det något liknande för javascript/nodejs?

Svar #1

Du kan använda child_process-modulen för att starta ett terminalfönster och köra följande kommandon beroende på plattform och få variablerna, analysera och använda dem eller skriva en inbyggd Node-modul för att nå de rätta API:erna på varje plattform och få resultatet.

Windows (Använder powershell, 2019 är PID)

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

Linux

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

Mac

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

Tack till 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

Svar #2

Ganska enkel metod (från här kan du använda något som shelljs och sedan köra:

ps faux | grep 'PROCESS_NAME'

Extrahera sedan process-id (jag jobbar bara med ett regex) och gör sedan:

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

Du kommer att få miljövariablerna tillbaka som en sträng, något i stil med:

THEVAR=1
ANOTHERVAR=2

Jag antar att du bara delade strängen med ''\n'' men jag kollar!

Jag kommer att uppdatera detta när jag klurar ut regexen. **Är du på Linux/Mac eller Windows?

UPPDATERING: Kolla https://github.com/shelljs/shx för tvärplattform

Relaterade artiklar