1

Как я могу получить следующую информацию для работающего процесса Linux:

  • переменные среды оболочки
  • рабочий каталог
  • параметры командной строки

2 ответа2

3

Вы можете получить эту информацию из файловой системы /proc , в которой хранится информация о запущенных процессах.

  • cat /proc/<pid>/environ
  • cd /proc/<pid>/cwd; pwd -P
  • cat /proc/<pid>/cmdline
2

Если вы выводите среду в соответствии с предложением @atype, все переменные среды и их значения объединяются без разделителя.

Для лучшего результата используйте

$ xargs -0 -L 1 echo < /proc/21645/environ 
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
SHELL=/bin/bash
TERM=xterm
LC_MESSAGES=en_US.UTF-8
LANGUAGE=en_US.UTF-8

(вывод сокращен по соображениям конфиденциальности)

объяснение

/proc/$ pid/environment содержит переменные окружения в виде списка, разделенного нулями.

xargs - это инструмент для чтения произвольно длинного списка из * STDIN, который передает его элементы в инструмент (в данном случае эхо), гарантируя, что он не превысит максимальную длину командной строки. Параметр "-0" переключает xargs для использования нулевого значения в качестве разделителя элементов (вместо пробела по умолчанию или новой строки). Параметр "-L 1" ограничивает количество элементов до 1. Таким образом, каждая переменная среды выводится на новой строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .