본문 바로가기

Linux

Linux ps 명령어 정리

ps는 현재 시스템의 프로세스를 출력해줍니다. 

 

단순히 ps로 출력할 때는 현재 접속한 터미널에서 실행한 프로세스만을 출력합니다.

 

 

터미널이 꼭 하나만 존재하는 것은 아닙니다. 저의 경우에는 젠킨스 서버에서 CI/CD를 위해 백엔드 API 서버 ssh 로 접속하는데요. 이 때는 새로운 터미널에서 접속하게 된 것입니다.

 

그래서 현재 시스템의 모든 프로세스를 보기 위해서는 xf 옵션을 주어야 합니다.

 

보면 jar 프로그램이 실행중인 것을 확인할 수 있습니다. ps 명령어에 출력되는 정보를 하나씩 살펴보겠습니다.

 

PID

프로세스 식별자입니다. 시스템 내에서 고유한 번호를 가집니다. PID를 통해 다양한 작업을 수행할 수 있고 CPU는 PID를 기반으로 컨택스트 스위칭을 해가면 프로세스의 작업들을 수행하는 것으로 알고 있습니다.

 

TTY(Teletypewriter)

터미널을 의미합니다. jar 파일의 경우 TTY가 ? 로 표시되는데요. 이는 해당 프로세스가 터미널에 접속되어 있지 않은 실행중인 프로그램임을 의미합니다.

 

이 부분은 제가 찾아보고 시도해본 내용이라 정확하지 않을 수 있는데요. TTY가 ?이면 프로세스가 현재 터미널과 연결된 상태가 아닙니다. 그렇기 때문에 포그라운드로 전환할 수 없습니다. 

 

STAT

프로세스의 상태를 의미합니다. 각 알파벳마다 의미를 가집니다.

 

R : 실행 중이거나 실행 가능한 상태를 의미합니다.

S : 프로세스가 현재 슬립 상태에 있으며, 특정 이벤트를 대기하고 있는 상태를 나타냅니다. 

l(엘) : 해당 프로세스가 멀티 스레드로 구성되어 있음을 의미한다.

s프로세스가 세션 리더임을 의미합니다. 세션 리더는 터미널과 관련된 세션을 제어하는 프로세스를 의미합니다. 

+ : 해당 프로세스가 포그라운드에 있음을 의미한다.

 

이 외에도 많은 STAT가 존재하는데 이정도면 정리하겠습니다.

 

TIME

프로세스가 CPU를 점유한 시간을 의미합니다.

 

COMMAND

셸을 통해 실행한 명령어 또는 프로세스를 의미합니다.