유닉스에서 실행중인 프로세스의 환경 변수? 환경 변수와 관련된 일부 문제를 해결해야합니다. Windows에서는

유닉스 시스템의 환경 변수와 관련된 일부 문제를 해결해야합니다.

Windows에서는 ProcessExplorer와 같은 도구를 사용하여 특정 프로세스를 선택하고 각 환경 변수의 값을 볼 수 있습니다.

유닉스에서 어떻게 똑같은 일을 할 수 있습니까? echoing그리고 envcmd를 단지 현재의 값을 표시,하지만 난 실행중인 프로세스가 현재 사용하고있는 값 무엇을 보려는.



답변

cat /proc/<pid>/environ

주어진 실행중인 실행 파일에 대해 pid를 원한다면 여러 가지 가능성 중에서 다음을 사용할 수 있습니다 pidof.

AlberT$ pidof sshd
30690 6512

편집 :

더 읽기 쉬운 출력을 달성하기 위해 Dennis WilliamsonTeddy의 의견을 전적으로 인용 합니다. 내 해결책은 다음과 같습니다.

tr '\0' '\n' < /proc/<pid>/environ


답변

이 질문에는 유닉스 태그가 있고 다른 모든 사람들이 리눅스 태그를 다루는 훌륭한 일을 했으므로 OS X 및 다른 BSD 파생 시스템 에서이 정보를 얻을 수 있습니다

ps -p <PID> -wwwe

또는

ps -p <PID> -wwwE

와 함께 Solaris에서

/usr/ucb/ps -wwwe <PID>

/proc모호한 ps명령 을 기억하지 않으려는 경우 Solaris는 디렉토리를 지원합니다 .


답변

다른 사람들이 언급했듯이 Linux에서는 / proc를 볼 수 있지만 커널 버전에 따라 한두 가지 제한이 있습니다.

우선, 환경 파일에는 프로세스가 생성되었을 때의 환경이 포함되어 있습니다. 즉, 프로세스가 환경에 대해 변경 한 내용은 / proc에 표시되지 않습니다.

$ cat /proc/$$/environ | wc -c
320
$ bash
$ cat /proc/$$/environ | wc -c
1270
$

첫 번째 쉘은 로그인 쉘이며 처음에는 환경이 매우 제한되어 있지만 .bashrc를 소싱하여 환경을 확장하지만 / proc는 이것을 반영하지 않습니다. 두 번째 쉘은 처음부터 더 큰 환경을 상속하므로 / proc에 표시됩니다.

또한 이전 커널에서 environ 파일의 내용은 페이지 크기 (4K)로 제한됩니다.

$ cat /proc/$$/environ | wc -c
4096
$ env | wc -c
10343
$

2.6.9 (RHEL4)와 2.6.18 (RHEL5) 사이에이 제한이 제거되었습니다 …


답변

이를 위해 BSD 옵션을 올바르게 사용하십시오 (적어도 리눅스에서는).

ps e $pid

또는

ps auxe  #for all processes

그리고 네, ps 맨 페이지는 꽤 혼란 스럽습니다. ( 를 통해 )


답변

cat /proc/PID/environ

PID를보고자하는 프로세스의 PID로 교체하십시오. 실행중인 프로세스에 대한 모든 정보는 / proc / PID / 디렉토리에 있습니다.

예 : cat / proc / 32512 / environ


답변

Archlinux 위키 에서 가져온 것 :

의 값을 구문 분석하는 임시 함수를 만들 수 있습니다 /proc/<pid>/environ. 터미널 프롬프트에서 :

envof() { sed 's/\x0/\n/g' /proc/${1}/environ; }

그런 다음 원하는 프로세스의 pid로 다음을 사용하십시오.

envof <pid>


답변

리눅스에서, 나는 살펴 보려고 노력했다.

/proc/<pid>/environ