실행 중인 실행 파일의 경로를 어떻게 알 수 있나요?

실행 중인 실행 파일의 경로를 어떻게 알 수 있나요?

저는 Linux 서버에서 작업하고 있으며 다른 노드에서 다른 작업을 실행하고 있습니다.

그러나 프로그램을 컴파일할 때 구체적인 이름을 설정하지 않았으므로 모두a.out

이제 그 중 하나가 실행 중이라는 것을 알았습니다. a.out아마도 뭔가 잘못되었을 수 있으므로 종료하고 싶습니다. 그러나 이 Top명령은 실행 파일의 경로를 표시하지 않습니다.

여기에 이미지 설명을 입력하세요.

어떻게 하나요?

답변1

당신은 그것을 사용할 수 있습니다lsof(거의 모든 Unix 변형에 적용되지만 일반적으로 기본 설치의 일부는 아닙니다.) 프로세스에서 사용되는 모든 파일을 나열합니다. "사용됨"에는 열린 파일 설명자뿐 아니라 프로세스가 실행 중인 실행 파일과 같이 밀접하게 관련된 개념도 포함됩니다. 실행 파일은 txtFD 열에 있습니다.알려지지 않은 역사적 이유.

$ lsof -p1234 | grep txt
a.out    1234 user15964  txt   REG  253,0  34567 /path/to/a.out

(합성산출물)

Solaris 및 Linux에는 보다 직접적인 접근 방식이 있습니다.프로세스 파일 시스템실행 중인 실행 파일을 포함하여 각 프로세스에 대한 정보를 제공합니다. (적어도 Linux에서는 여기 lsof에서 정보를 얻을 수 있습니다.)

$ ls -l /proc/1234/exe
lrwxrwxrwx 1 root root 0 Feb 30 34:56 /proc/1234/exe -> /path/to/a.out

특정 실행 파일을 실행하는 프로세스를 찾고 있다면 다음을 실행하세요.퓨저.

$ fuser /path/to/a.out
/path/to/a.out: 1234e 1239e

답변2

일반적인 대답은 없습니다. 최신 Linux에서는 /proc/$PID숫자 프로세스 ID가 어디에 있는지 확인할 수 있습니다 . 출력에서 얻을 $PID수 있습니다 .top

ls -l /proc/$PID/exeexe심볼릭 링크의 위치가 표시됩니다 . 이는 실행 파일의 전체 경로입니다 a.out.

관련 정보