리눅스 유닉스 시스템에서 실행중인 프로레서의 경로를 확인 할 수 있을까요?

자일자일의 이미지

일반적으로 ps -ef 를 확인하면

다음과 같은 정보는 확인이 가능한데
UID PID PPID C STIME TTY TIME CMD

CMD에 예로 pppp 이름으로 쉘이 돌아가고 있고 저에게

pppp 쉘이 어디 경로에 있냐고 찾아보라고 한다면

전 find 명령어로 찾는 방법밖에 모르겠는데

시간도 많이 걸리고 좋은 방법이 아닌듯 한데요

더 나은 방법, 뭐 없을까요 ?

되도록이면 설치 하지 않고, 기본 명령어로 사용가능하면 좋고요

aero의 이미지

리눅스의 경우
/proc
에 각 프로세스들의 정보가 들어가 있습니다.

more /proc/프로세스번호/cmdline

하면 알 수 있을겁니다.

ganadist의 이미지

cmdline은 argv[0]을 가르킬 껍니다.

이것보다는 readlink /proc/pid/exe 를 확인하는 것이 더 정확합니다.

----
Do not feed troll!

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

자일자일의 이미지

Linux cache01 2.4.21-27-INK #1 SMP Thu Jun 15 11:39:20 KST 2006 x86_64 x86_64 x86_64 GNU/Linux
에서는 cmdline 에 프로세서명만 명시되어 있고 경로는 명시되어 있지 않고,

HP-UX greenw1 B.11.23 // /porc 존재 하지 않고

SunOS hostname 5.8 Generic_117350-20
ps 정보에 경로가 알아서 나오네요~

Prentice의 이미지

lsof | grep pppp

아니면 lsof에 옵션 많습니다.

vacancy의 이미지

보니까 .. ( 리눅스에서 .. )

fork한 경우 child는

# ps afx

했을 때 path가 안 나오네요.
parent의 경우는 path가 나옵니다. ;;
아무래도 system() 실행시 들어가는 내용이 그냥 남나보아요.

/proc/PID/maps
.. 를 참조하는 것도 방법일 것 같은데,
일반적인 방법이라고 하기는 어렵겠군요. =_=

윗분 말씀대로 /proc/PID/exe를 확인하는 게 최선인 것 같습니다. ;;

anaconda의 이미지

ps axfww 로 하면 원하시는 결과가 나오지 않을까요?

vacancy의 이미지


그래도 나오는 녀석이 있고 안 나오는 녀석이 있네요.

ww 는 오른쪽 넘어가서 잘리는 것만 보여주는 것 같고요 .. ^^a