리눅스 운영체제에서 ps는 시스템 관리자가 가장 많이 사용하는 도구 중 하나입니다. 현재 실행 중인 프로세스 목록을 실시간으로 확인할 수 있어 서버 관리와 문제 해결에 필수적인 명령어입니다.
ps 명령어는 옵션 조합에 따라 다양한 방식으로 사용할 수 있습니다. 이 글에서는 가장 널리 쓰이는 단일 대시(-) 형식의 문법을 기준으로, 실무에서 바로 활용할 수 있는 12가지 사용법을 정리했습니다.
그럼 시작해 보겠습니다!
1. 모든 프로세스 표시하기
명령어: ps -ef

현재 실행 중인 모든 프로세스와 각 프로세스에 관련된 정보를 함께 보여줍니다. 출력되는 정보에는 PID(프로세스 ID), 터미널 유형, 명령어 이름, 실행 시간 등의 컬럼이 포함됩니다.
2. 프로세스 이름으로 필터링하기
명령어: ps -C name

프로세스 이름을 기준으로 원하는 프로세스만 표시할 수 있습니다. 검색 시 프로세스 이름은 모두 소문자로 입력해야 하며, -e 접두사 없이도 전체 프로세스를 대상으로 검색합니다.
3. 사용자별로 프로세스 필터링하기
명령어: ps -e -u username

특정 사용자 계정으로 실행 중인 프로세스만 골라서 확인할 수 있습니다. 접두사 없이 -u 옵션만 사용해도 동일하게 작동합니다.
4. 프로세스 ID(PID)로 필터링하기
명령어: ps -ef -p 1234,5678,9012

실행 중인 특정 프로세스의 PID를 알고 있다면, 해당 ID를 지정해 필요한 프로세스만 간편하게 조회할 수 있습니다. 여러 개의 PID를 쉼표로 구분하여 한 번에 검색하는 것도 가능합니다.
5. 특정 컬럼만 선택해서 표시하기
명령어: ps -e -o pid,uname,pcpu,pmem,comm

-o 플래그를 사용하면 ps 명령어 결과에서 원하는 항목만 골라 출력할 수 있습니다. 위 예제에서는 PID, 사용자명, CPU 사용률, 메모리 사용률, 명령어 이름 순으로 표시됩니다.
6. 결과에서 grep으로 검색하기
명령어: ps -ef | grep worker

ps 결과 안에서 자유롭게 검색하고 싶다면 파이프(|)를 사용해 결과를 grep으로 넘기면 됩니다. grep은 정규 표현식을 지원하므로 패턴 매칭을 통한 세밀한 검색도 가능합니다.
7. 리소스 사용량 기준으로 정렬하기
명령어: ps -e --sort=-pcpu -o pid,pcpu,comm

--sort 옵션을 사용하면 지정한 컬럼을 기준으로 결과를 정렬할 수 있습니다. -(마이너스) 접두사는 내림차순, +(플러스) 접두사는 오름차순 정렬을 의미합니다. 뒤에 붙는 -o 옵션은 특정 컬럼만 보여주는 역할로, 정렬 자체에는 필수가 아닙니다.
8. 이름 변경 컬럼과 기본 컬럼 혼합하기
명령어: ps -e -o pid,pcpu=CPU -o pmem=RAM,comm
특정 컬럼의 헤더를 숨기고 싶다면 = 기호 뒤를 비워 두면 됩니다. 또한 이름을 변경한 컬럼과 기본 이름의 컬럼을 섞어서 사용하려면, 이름이 변경된 각 컬럼마다 별도의 -o 플래그를 지정해야 합니다.
9. 컬럼 헤더 이름 변경하기
명령어: ps -o pid=Process,ruser=RealUser,comm=Command

-o 옵션과 함께 = 기호 뒤에 원하는 이름을 붙이면 컬럼 헤더를 자유롭게 변경할 수 있어, 사용자가 정의한 맞춤형 출력 형식을 만들 수 있습니다. 이름을 바꿀 헤더마다 각각 -o 플래그를 지정하면 됩니다.
10. 루트(root) 프로세스 모두 표시하기
명령어: ps -f -U root -u root

실제 UID와 유효 UID가 root인 모든 실행 중인 프로세스를 검색합니다. -f 플래그를 추가하면 전체 형식(full-format)으로 상세하게 출력되며, 여기에 -o 플래그를 더해 출력 형식을 원하는 대로 커스터마이징할 수도 있습니다.
11. 프로세스 스레드 표시하기
명령어: ps -p 4041 -L

-L 플래그를 사용하면 스레드 표시 기능이 활성화됩니다. 특정 프로세스가 생성한 스레드를 추적하고 분석할 때 유용하게 활용할 수 있습니다.
12. 계층형 트리 구조로 결과 표시하기
명령어: ps -e --forest

ASCII 아트를 활용해 프로세스를 트리 구조로 시각화합니다. 부모-자식 관계에 있는 fork된 프로세스들을 계층적으로 들여쓰기하여 보여주기 때문에 프로세스 간 관계를 한눈에 파악할 수 있습니다. 트리의 "가지"를 숨기고 싶다면 --forest 대신 -H 옵션을 사용하세요.
지금까지 살펴본 것처럼, ps 명령어는 다양한 옵션 조합을 통해 실행 중인 프로세스에 대한 정보를 얻거나 원하는 형식으로 깔끔하게 출력할 수 있는 강력한 도구입니다. 위 예제들을 직접 실습해 보면서 자신에게 맞는 활용 패턴을 익혀 보시기 바랍니다.