실행 중인 프로세스의 절대 경로를 어떻게 알 수 있나요? 솔라리스에서

실행 중인 프로세스의 절대 경로를 어떻게 알 수 있나요? 솔라리스에서

Linux에서 프로세스 경로를 보는 명령입니다.

ps -auxwe | grep 24466    ( 24466 is only example )

하지만 솔라리스에서 실행 중인 프로세스의 경로를 볼 수 있는지 조언해 주세요.

그렇다면 Solaris용 ps 구문은 무엇입니까?

답변1

솔라리스와 리눅스에서는 pwdx를 사용할 수 있습니다.

비밀번호<pid_number>

예:

pwdx $$
25711:  /export/home/pippo

답변2

실행 중인 프로세스의 절대 경로를 어떻게 알 수 있나요?

"절대 경로"가 실행 중인 바이너리의 전체 경로를 의미하는 경우 이는 설치된 Solaris 11 복사본에서 작동합니다.

pmap PID | grep -v ':' | head 1 | awk '{ print $4 }'

PID관심 있는 프로세스의 프로세스 ID로 바꾸세요 .

pmap매핑을 위한 소스 파일의 전체 경로를 포함하여 프로세스의 주소 맵을 내보냅니다. 여기에는 실제 바이너리가 포함됩니다.매핑출력 라인. 출력의 첫 번째 줄에는 프로세스 ID와 프로세스 인수가 포함됩니다. 프로세스 인수만으로는 실행 중인 실행 파일의 전체 경로를 완전히 식별할 수 없습니다. 실제 주소 공간 매핑의 처음 몇 줄은 실제 실행 바이너리의 매핑이며 바이너리의 전체 절대 경로와 함께 나열됩니다.

안타깝게도 해당 정보를 얻으려면 프로세스 맵에 대한 읽기 액세스 권한이 필요합니다. 해당 액세스 권한 없이는 원하는 것을 얻을 수 있는 방법이 없습니다.

/proc/[PID]/path/a.out편집: 실제 바이너리에 대한 소프트 링크인 Solaris 11에도 있습니다 .

배쉬에서:

bash-4.1$ readlink /proc/$$/path/a.out
/usr/bin/bash

다음 /proc/$$/path/a.out보다 낫습니다 /proc/self/path/a.out.

bash-4.1$ readlink /proc/self/path/a.out
/usr/bin/readlink

불행하게도 를 통해 프로세스 맵에 액세스할 수 없으면 pmap에 액세스할 수 없을 가능성이 높습니다 /proc/[PID]/path/a.out. 왜냐하면 내 Solaris 11 설치에 대한 권한은 /proc/[PID]/path모두 500입니다. 소유자와 루트만 해당 디렉토리에 대한 읽기 및 실행 권한을 갖습니다. .

답변3

/usr/ucb/ps auxwwww | grep 6851은 SunOS servername01 5.10 Generic_147440-25 sun4u sparc SUNW,Sun-Fire-V490에서 저에게 도움이 되었습니다.

관련 정보