본문 바로가기
컴퓨터/리눅스(Linux)·우분투(Ubuntu)

유닉스/리눅스 명령어 'ps'

by All That Guy 2016. 5. 27.



ps는 유닉스/리눅스에서 필수로 쓰는 기본 명령어 중 하나다. 현재 작동 중인 프로세스를 볼 수 있고, 유저 아이디나 cpu 사용량, 메모리 사용량, 명령어 이름 등등도 나열할 수 있다. 하지만 top이나 htop과 달리 데이터를 현재 실시간으로 나열하지는 않는다. 


ps 명령어는 BSD와 UNIX(Linux 포함) 문법을 다 쓸 수 있다. 종종 헷갈리기 쉽다. 큰 차이점 중 하나는 BSD에서는 “-”를 사용 하지 않고, UNIX에서는 “-”를 사용한다.


BSD


$ ps aux


UNIX/Linux


$ ps -ef


리눅스에서는 ps ax -f 처럼 두 문법을 섞어 써도 무방하다. 여기서는 유닉스/리눅스에 초점을 맞춰서 설명을 한다.


주요 사용법은 다음과 같다.


1. 모든 프로세스를 표시


$ ps ax

$ ps -ef


이렇게 하면 목록을 주르륵 표시하는데 터미널 화면에서 휙 지나갈 수 있다. 최신 터미널에서는 화면을 위로 올려 볼 수 있기는 하지만, less를 같이 사용하면 한 화면 씩 표시를 한다.


$ ps ax | less

$ ps -ef | less


Enter를 누르면 한 줄 씩 다음 줄을 보여 주고, Space Bar를 누르면 한 쪽 씩 화면을 넘긴다.


"u" 또는 "-f" 옵션을 주면 프로세스에 관한 세부 정보를 볼 수 있다.


$ ps aux

$ ps -ef -f


2. 사용자별로 사용 중인 프로세서 표시


-u 옵션 다음에 사용자 아이디를 넣으면 해당 사용자가 사용 중인 프로세서를 표시한다.


$ ps -f -u 사용자아이디


3. 이름 또는 프로세스 아이디 별로 표시


프로세스 이름 또는 명령어로 프로세스를 검색할 때는 -C 옵션 다음에 원하는 검색어를 쓴다.


$ ps -C firefox


프로세스 아이디별로 프로세스를 표시할 때에는 -p 옵션을 쓴다. 두 개 이상일 때에는 ","로 구별하여 나열한다.


$ ps -f -p 3100, 5490, 8977


-C 옵션을 쓸 때는 검색하려는 프로세스 이름이 정확해야 한다. 정확한 프로세스 이름이 아니라 비슷한 이름으로 검색을 할 때에는 "grep" 파이프를 사용한다.


$ ps -ef | grep fire


4. cpu 또는 메모리 사용량에 따른 프로세스 분류


분류 옵션을 쓰면 어떤 프로세스가 얼마나 많은 메모리를 쓰고 있는지 알 수 있다. 복합적인 조건을 ","로 나눠서 "--sort"와 같이 쓸 수 있다. 그리고 "-"와 "+"는 각각 내림차순, 올림차순으로 정렬을 한다. 프로세스를 분류하는 방법은 여러가지가 있는데, 자세한 건 man 페이지를 참조한다.


$ ps aux --sort=-pcpu,+pmem


cpu를 가장 많이 사용 하는 프로세스 다섯 개를 분류하는 방법


$ ps aux --sort=-pcpu | head -5