리눅스 명령어 ps는 현재 실행 중인 프로세스를 보여주는 명령어로, 시스템의 상태를 파악하는 데 필수적인 도구입니다. 리눅스에서 시스템의 프로세스를 관리하고 모니터링하는 것은 매우 중요한 일입니다. 이번 포스팅에서는 ps
명령어의 기본 사용법과 주요 옵션들에 대해 알아보고, 실전에서 유용하게 활용할 수 있는 방법들을 설명하겠습니다.
목차
리눅스 명령어 ps란?
ps
는 “process status”의 약자로, 리눅스 시스템에서 실행 중인 프로세스의 상태를 확인하는 명령어입니다. 프로세스란, 프로그램이 실행되면서 시스템에서 하나의 작업 단위로 처리되는 것을 의미합니다. 리눅스 시스템에서는 여러 프로세스가 동시에 실행되고 있으며, 이 중에서 특정 프로세스가 어떻게 실행되고 있는지를 ps
명령어로 확인할 수 있습니다.
기본 사용법
ps
명령어를 아무런 옵션 없이 입력하면, 현재 터미널(세션)에서 실행 중인 프로세스만 출력됩니다. 기본적으로 제공되는 정보는 다음과 같습니다.
ps
ShellScript여기서 각 컬럼의 의미는 다음과 같습니다.
- PID: 프로세스 ID로, 각 프로세스를 고유하게 식별하는 번호입니다.
- TTY: 프로세스가 연결된 터미널을 나타냅니다.
- TIME: 프로세스가 사용한 CPU 시간을 나타냅니다.
- CMD: 해당 프로세스를 실행한 명령어입니다.
유용한 옵션
ps
명령어는 다양한 옵션을 통해 더 많은 정보를 출력하거나, 원하는 프로세스만 필터링해서 볼 수 있습니다. 자주 사용되는 옵션 몇 가지를 소개합니다.
전체 프로세스 간략히 보기: ps -e
기본적으로 ps
는 현재 터미널에서 실행 중인 프로세스만 보여주기 때문에, 시스템 전체의 프로세스를 확인하려면 -e 옵션을 추가해야 합니다.
ps -e
ShellScriptps -e 옵션을 사용했을 때에 나타나는 열은 옵션 없이 실행했을 때와 동일합니다. CMD 열에는 기본적인 명령어만 보여주고 어떤 옵션이나 파라미터를 함께 실행한 것인지는 알 수 없습니다.
전체 프로세스 상세히 보기: ps aux
ps aux 명령어는 실행 명령어의 옵션이나 인자값들을 모두 보여줍니다. -e 옵션 사용시보다 더 많은 정보와 함께 모든 프로세스를 출력합니다.
ps aux
ShellScriptps aux
를 실행하면 USER, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND 순으로 -e 옵션 이용시보다는 더욱 다양한 정보가 출력되므로, 시스템 모니터링에 유용합니다.
aux를 인자로 사용했을 때 추가로 더 확인할 수 있는 열 정보는 아래와 같습니다.
- USER: 프로세스를 실행한 사용자의 이름입니다.
- %CPU: CPU 사용률을 백분율로 나타냅니다. 해당 프로세스가 전체 CPU 시간 중 얼마나 사용하는지를 의미합니다.
- %MEM: 메모리 사용률을 백분율로 나타냅니다. 해당 프로세스가 전체 메모리 중 얼마나 사용하는지를 의미합니다.
- VSZ: Virtual Set Size의 약자로, 프로세스가 사용하는 가상 메모리의 크기를 나타냅니다.
- RSS: Resident Set Size의 약자로, 프로세스가 실제로 메모리에 올려져 있는 부분의 크기를 나타냅니다.
- STAT: 프로세스의 상태를 나타냅니다. 예를 들어, ‘S’는 sleeping 상태, ‘R’은 running 상태를 의미합니다.
- START: 프로세스가 시작된 시간을 나타냅니다.
특정 사용자 프로세스 보기: ps -u 사용자명
특정 사용자의 프로세스를 확인하고 싶을 때는 -u
옵션을 사용합니다.
ps -u username
ShellScript예를 들어, ps -u ito
를 입력하면 ito
사용자에 의해 실행된 프로세스 목록을 볼 수 있습니다. 만약 ito 대신에 root라고 입력하면 root 사용자로 실행되는 프로세스 목록을 확인할 수 있습니다.
특정 프로세스 찾기: ps -p PID
특정 프로세스 ID(PID)를 알고 있을 때, 해당 프로세스의 정보만 확인하려면 -p
옵션을 사용합니다.
ps -p 2484
ShellScript위 명령어는 PID가 2484인 프로세스의 정보를 출력합니다.
프로세스 트리 보기: ps -ef --forest
프로세스 간의 관계를 트리 형태로 보고 싶을 때는 --forest
옵션을 사용하면 유용합니다. 이 옵션은 어떤 프로세스가 다른 프로세스에 의해 시작되었는지 계층 구조로 보여줍니다.
ps -ef --forest
ShellScript이 명령어는 시스템 전체의 프로세스와 그들의 부모-자식 관계를 시각적으로 확인하는 데 큰 도움이 됩니다. -e 옵션은 앞서 확인했듯 모든 프로세스를 확인하는 옵션이고, -f는 full-format listing으로 출력되는 컬럼은 아래 그림과 같습니다. 아래를 보면 PID 3, 4,5번은 PID 2번을 부모 프로세스로 하고 있다는 것을 알 수 있습니다.
-f 옵션을 사용하면 다음과 같은 열을 추가로 확인할 수 있습니다.
- PPID: Parent Process ID의 약자로, 해당 프로세스의 부모 프로세스의 PID를 나타냅니다.
- C: 프로세스의 CPU 시간을 나타내는 값입니다. 정확한 의미는 시스템에 따라 다를 수 있지만, 일반적으로 프로세스가 얼마나 자주 CPU를 사용하는지를 나타냅니다.
- STIME: 프로세스가 시작된 시간을 나타냅니다. 앞서 봤던 START와 같은 의미입니다.
ps 명령어의 활용 방법
ps
명령어는 시스템 관리자가 시스템 상태를 모니터링하거나, 문제를 일으키는 프로세스를 찾아낼 때 매우 유용하게 사용됩니다. 특히, 서버에서 여러 애플리케이션이 실행 중일 때 메모리나 CPU를 많이 사용하는 프로세스를 파악해 리소스를 효율적으로 관리할 수 있습니다.
- 메모리 사용량 확인:
ps aux
명령어를 통해 메모리 사용량을 확인하고, 리소스를 과도하게 사용하는 프로세스를 종료할 수 있습니다. - CPU 사용량 확인: CPU 사용량이 높은 프로세스를
ps aux
로 확인하여 시스템 성능 문제를 해결할 수 있습니다.
또한, ps
명령어는 다른 명령어와 함께 파이프라인(|
)을 사용해 더욱 강력하게 활용할 수 있습니다. 예를 들어, 특정 프로세스를 찾아 종료하는 데 grep
과 kill
명령어를 결합해 사용할 수 있습니다.
ps aux | grep python
kill -9 PID
ShellScript파이썬으로 실행 중인 프로세스를 찾아서, 해당 프로세스 3047번을 kill 명령어를 사용해서 종료했습니다. 그리고 이렇게 종료하면, 해당 프로세스가 실행중인 화면에서는 Killed라고 프로세스가 종료된 것을 알려줍니다.
주의사항
ps
명령어는 강력한 도구이지만, 사용 시 주의할 점도 있습니다. 시스템 관리자는 프로세스를 종료하기 전에 반드시 해당 프로세스가 무엇을 하는지 정확히 확인해야 합니다. 잘못된 프로세스를 종료하면 시스템이 불안정해지거나 중요한 서비스가 중단될 수 있습니다.
또한, ps aux
명령어를 실행하면 매우 많은 정보가 출력될 수 있으므로, 필요에 따라 grep
등을 사용해 원하는 정보를 필터링하는 것이 좋습니다.
정리
ps
명령어는 리눅스 시스템에서 현재 실행 중인 프로세스를 확인하고, 문제 해결 및 시스템 모니터링에 중요한 역할을 합니다. 기본적인 사용법부터 다양한 옵션을 통해 더욱 유용하게 활용할 수 있으며, 특히 ps aux
, ps -e
, ps -u
와 같은 옵션은 자주 사용되는 필수 명령어라고 할 수 있습니다. 이 명령어를 제대로 이해하고 활용하면 시스템 관리에 큰 도움이 될 것입니다.