ps를 사용하여 프로세스가 실행되고 있으면 실행 파일을 어떻게 찾을 수 있습니까?


11

를 사용하여 실행중인 프로세스를 볼 수있는 경우 프로세스 ps -e를 시작한 파일을 어떻게 찾을 수 있습니까?


2
이것은 어떤 OS입니까? Linux, BSD, Solaris ...
Patrick

리눅스 ...하지만 유닉스 솔루션을 환영합니다.
interstar

답변:


15

Linux에서 : PID를 알고 있으면 해당 파일의 cmdline 파일을 분류 할 수 있습니다. 예 :

cat /proc/PID/cmdline

프로그램이 시작된 후 바이너리가 이동 한 경우 실패 할 수 있습니다.

그리고 물론 :

lsof -n | grep PID | grep ' txt '

과:

ls -la /proc/PID/exe

실행 파일에 대한 심볼릭 링크입니다.


1
참고 /proc/PID/cmdline당신은 아마 그런 짓을 할 것이다, 그래서 개행 문자가 없습니다 cat /proc/PID/cmdline ; echo ''.
Keith Thompson

실제로, 그것은 논쟁을 분리하는 NUL 문자를 가지고 있으므로, 당신은 더 정교한 것을 원할 것입니다.tr '\0' ' ' < /proc/PID/cmdline ; echo ''
Keith Thompson

2

ps -e명령 에서 프로세스 ID를 복사 한 후 다음을 실행하십시오.

ps x | grep <process-id>

애플리케이션이 argv [0]을 편집해도 실패하지 않습니까? iirc sendmail이 그렇게합니다.
Folkert van Heusden

네, 가능성입니다. 거의 항상 이것이 거의 편리하지 않습니다.
Aditya Patawari

0

방법 (중에 ls, lsof또는 cat다른 답변에서)는 나를 위해 작동하지 않습니다. 만약 내가한다면:

$ nano test.txt

이것은 내 승자입니다.

$ pgrep -f -l test
3074 nano test.txt

또는 프로그래밍에 사용할 PID 만 얻으려면 다음을 수행하십시오.

$ pgrep -f test
3074

Kali Linux v1.0.6 (Debian 기반)에서 테스트되었습니다.
간단한 것에 비해 ls, 나는 그것이 휴대용 솔루션이 아니라는 것을 인정해야하지만 적어도 그것은 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.