프로세스의 바이너리에 대한 경로를 어떻게 결정합니까?


30

프로세스가 시작된 디렉토리 / 디스크 위치를 찾는 방법이 있습니까? 나는 / proc 마운트를 알고 있지만 실제로 그 내부를 볼 위치는 없습니다.


1
바이너리의 위치 또는 프로세스가 시작된 디렉토리를 의미합니까?
Lekensteyn 2016 년

애매한 점으로 죄송합니다. 바이너리를 의미합니다
SuperJumbo

답변:


37

/proc방법은 검사하는 것입니다 exepid를에 해당하는 디렉토리에 링크를.

예를 들어 보자 update-notifier.

이 예제에서 15421 인 pid를 찾으십시오 .

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

심볼릭 링크를 찾으십시오.

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

네, 거의 다 왔습니다. 전설, 감사합니다
SuperJumbo 2016 년


6

사용 가능한 프로세스 ID를 제공하면 다음을 사용할 수 있습니다.

readlink -f /proc/$pid/exe

( $pid프로세스의 프로세스 ID로 대체 )

프로세스를 소유하지 않은 경우 프로세스를 먼저 처리해야 sudo합니다.

명령의 위치를 ​​결정하는 예제 firefox:

  1. 의 출력 ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 프로세스 ID이므로 다음을 실행하십시오.

    readlink -f /proc/28179/exe
    

    어떤 출력 :

    /usr/bin/firefox
    

2
/proc/$pid/exe바이너리를 실수로 삭제 한 경우 다음 과 같이 멋진 작업을 수행 할 수 있습니다.dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Ctrl+ Alt+ T를 눌러 터미널로 이동하여 다음을 입력하십시오.

ls -al /proc/{pid}/fd  

그런 다음 출력을 확인하십시오.

이것은 프로세스와 관련된 모든 파일을 나열합니다 ...


편집 내용 을 검토 하고 향후 답변의 가독성을 향상시키기 위해 편집 도움말 을 검토 할 수 있습니까 ? ;-)
Fabby

0

다른 답변의 모든 명령은 훌륭하지만 더 많은 작업을 수행 할 수 있습니다. 프로세스 목록에 도달하기 전에 일부 프로세스가 실제로 어떻게 실행되었는지 확인하십시오.

터미널에서 실행하십시오.

top

그리고 그것이 실행되는 동안 키보드를 누르면 실행 C된 프로세스에 대한 명령을 받게됩니다.

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