유닉스 시스템의 환경 변수와 관련된 일부 문제를 해결해야합니다.
Windows에서는 ProcessExplorer와 같은 도구를 사용하여 특정 프로세스를 선택하고 각 환경 변수의 값을 볼 수 있습니다.
유닉스에서 어떻게 똑같은 일을 할 수 있습니까? echoing
그리고 env
cmd를 단지 현재의 값을 표시,하지만 난 실행중인 프로세스가 현재 사용하고있는 값 무엇을 보려는.
답변
cat /proc/<pid>/environ
주어진 실행중인 실행 파일에 대해 pid를 원한다면 여러 가지 가능성 중에서 다음을 사용할 수 있습니다 pidof
.
AlberT$ pidof sshd
30690 6512
편집 :
더 읽기 쉬운 출력을 달성하기 위해 Dennis Williamson 과 Teddy의 의견을 전적으로 인용 합니다. 내 해결책은 다음과 같습니다.
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