Daily Notebook

[Linux] PID(프로세스ID)만으로 실행 경로 찾기

by 배부른코딩로그
💡 언제 어디서 실행된 것인지 알 수 없는 좀비 프로세스를 안전하게 종료해보자!

목표

  • PID를 통해 실행된 경로를 찾아낼 수 있다.
  • 나중에도 잘 활용하기 위해, 메모처럼 잘 정리할 수 있다.

 

WebLogic에서 Tomcat으로 WAS를 변경하는 나름 거대한 작업을 진행하면서 발생한 일이다.

평소에는 수행되는지도 몰랐던 프로세스가 WAS를 변경하고 나니, 서버 CPU 점유율을 엄청나게 잡아먹게 되었다.

CPU 자원이 100%이라면, 2개의 프로세스가 50% 이상을 잡아먹는 현상이 발생했다.

 

 

Google에서 열심히 서칭하다가 발견한 명령어들이다.

ll /proc/<PID>/exe
lsof -p <PID> | grep cwd
pwdx <PID>

 

필자의 서버에서 정확한 경로를 알려주는 명령어는 `pwdx <PID>` 였다.

해당 프로세스가 실행된 위치를 알려주는데, 출력된 결과를 보자마자 속으로 환호성을 질렀다.

 

'홀리 크뤱~~~ 오늘 야근 취소인가!!!'

 

 

필자의 케이스의 경우, WebLogic shutdown 시 Python 코드가 실행되면서 Health check를 하는 것으로 보였다.

WebLogic 전부를 내려버렸기 때문에 Python 코드가 정상적으로 수행 완료되지 못하고 좀비 프로세스로 남아버린 것으로 확인했다.

 

 

혹시나, 문제가 되는 프로세스의 PID를 아직 찾지 못했다면, 다음 명령어들을 통해 확인해보자.

 

1) CPU 과점유 프로세스일 경우,

top

 

2) 특정 프로세스 이름을 갖고 있는 경우,

ps -ef | grep <PNAME>
/usr/ucb/ps -auxww | grep <PNAME>

 

간단한 경우, 위 명령어를 통해 PID 도출이 가능할 것이다.

이 외의 상황을 겪게 된다면, 추가로 정리해야 겠다 : )

 

 

출처

 

Last Updated. 2023. 03. 09.

 

반응형

블로그의 정보

배부른코딩로그

배부른코딩로그

활동하기